diff --git a/dist/index.js b/dist/index.js index 8645537..3f37af7 100644 --- a/dist/index.js +++ b/dist/index.js @@ -661,7 +661,7 @@ var e,t,n=require("fs"),r=require("./polyfills.js"),o=require("./legacy-streams. },{"./get-packages.cjs.prod.js":"vf/d","./get-packages.cjs.dev.js":"vf/d"}],"UnXq":[function(require,module,exports) { "use strict";function e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function t(t){for(var n=1;n[e.dir,e.packageJson.version]))}async function l(e,t){let{packages:r}=await u.getPackages(e),n=new Set;for(let i of r){t.get(i.dir)!==i.packageJson.version&&n.add(i)}return[...n]}function d(e,t){let r,n,c=i.default().use(o.default).parse(e),u=exports.BumpLevels.dep,p=c.children;for(let i=0;i{i+=e.toString()},stderr:e=>{o+=e.toString()}}},n)),stdout:i,stderr:o}}function g(e,t){return e.private===t.private?t.highestLevel-e.highestLevel:e.private?1:-1}exports.BumpLevels={dep:0,patch:1,minor:2,major:3},exports.getVersionsByDirectory=p,exports.getChangedPackages=l,exports.getChangelogEntry=d,exports.execWithOutput=f,exports.sortTheThings=g; },{"unified":"0GHJ","remark-parse":"VtFD","remark-stringify":"KZSx","mdast-util-to-string":"jPGb","@actions/exec":"AjbX","@manypkg/get-packages":"9z3N"}],"pH2w":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("@actions/exec"),t=require("./utils");exports.setupUser=(async()=>{await e.exec("git",["config","--global","user.name",'"github-actions[bot]"']),await e.exec("git",["config","--global","user.email",'"github-actions[bot]@users.noreply.github.com"'])}),exports.pullBranch=(async t=>{await e.exec("git",["pull","origin",t])}),exports.push=(async(t,{force:i,includeTags:a}={})=>{await e.exec("git",["push","origin",`HEAD:${t}`,a&&"--tags",i&&"--force"].filter(Boolean))}),exports.switchToMaybeExistingBranch=(async i=>{let{stderr:a}=await t.execWithOutput("git",["checkout",i],{ignoreReturnCode:!0});!a.toString().includes(`Switched to a new branch '${i}'`)&&await e.exec("git",["checkout","-b",i])}),exports.reset=(async(t,i="hard")=>{await e.exec("git",["reset",`--${i}`,t])}),exports.commitAll=(async t=>{await e.exec("git",["add","."]),await e.exec("git",["commit","-m",t])}),exports.checkIfClean=(async()=>{const{stdout:e}=await t.execWithOutput("git",["status","--porcelain"]);return!e.length}); +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("@actions/exec"),t=require("./utils");exports.setupUser=(async()=>{await e.exec("git",["config","--global","user.name",'"github-actions[bot]"']),await e.exec("git",["config","--global","user.email",'"github-actions[bot]@users.noreply.github.com"'])}),exports.pullBranch=(async t=>{await e.exec("git",["pull","origin",t])}),exports.push=(async(t,{force:i}={})=>{await e.exec("git",["push","origin",`HEAD:${t}`,i&&"--force"].filter(Boolean))}),exports.pushTags=(async()=>{await e.exec("git",["push","origin","--tags"])}),exports.switchToMaybeExistingBranch=(async i=>{let{stderr:a}=await t.execWithOutput("git",["checkout",i],{ignoreReturnCode:!0});!a.toString().includes(`Switched to a new branch '${i}'`)&&await e.exec("git",["checkout","-b",i])}),exports.reset=(async(t,i="hard")=>{await e.exec("git",["reset",`--${i}`,t])}),exports.commitAll=(async t=>{await e.exec("git",["add","."]),await e.exec("git",["commit","-m",t])}),exports.checkIfClean=(async()=>{const{stdout:e}=await t.execWithOutput("git",["status","--porcelain"]);return!e.length}); },{"@actions/exec":"AjbX","./utils":"UnXq"}],"Od13":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Context=void 0;const e=require("fs"),s=require("os");class r{constructor(){if(this.payload={},process.env.GITHUB_EVENT_PATH)if(e.existsSync(process.env.GITHUB_EVENT_PATH))this.payload=JSON.parse(e.readFileSync(process.env.GITHUB_EVENT_PATH,{encoding:"utf8"}));else{const e=process.env.GITHUB_EVENT_PATH;process.stdout.write(`GITHUB_EVENT_PATH ${e} does not exist${s.EOL}`)}this.eventName=process.env.GITHUB_EVENT_NAME,this.sha=process.env.GITHUB_SHA,this.ref=process.env.GITHUB_REF,this.workflow=process.env.GITHUB_WORKFLOW,this.action=process.env.GITHUB_ACTION,this.actor=process.env.GITHUB_ACTOR,this.job=process.env.GITHUB_JOB,this.runNumber=parseInt(process.env.GITHUB_RUN_NUMBER,10),this.runId=parseInt(process.env.GITHUB_RUN_ID,10)}get issue(){const e=this.payload;return Object.assign(Object.assign({},this.repo),{number:(e.issue||e.pull_request||e).number})}get repo(){if(process.env.GITHUB_REPOSITORY){const[e,s]=process.env.GITHUB_REPOSITORY.split("/");return{owner:e,repo:s}}if(this.payload.repository)return{owner:this.payload.repository.owner.login,repo:this.payload.repository.name};throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'")}}exports.Context=r; },{}],"X6hf":[function(require,module,exports) { @@ -903,7 +903,7 @@ var e=require("./conversions"),n=require("./route"),r={},o=Object.keys(e);functi },{"@changesets/pre":"mAOc","@changesets/read":"X/D8"}],"zg8f":[function(require,module,exports) { "use strict";const e=require("path"),t=require("module"),r=require("fs"),o=(o,i,n)=>{if("string"!=typeof o)throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof o}\``);if("string"!=typeof i)throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof i}\``);try{o=r.realpathSync(o)}catch(f){if("ENOENT"!==f.code){if(n)return;throw f}o=e.resolve(o)}const s=e.join(o,"noop.js"),p=()=>t._resolveFilename(i,{id:s,filename:s,paths:t._nodeModulePaths(o)});if(n)try{return p()}catch(f){return}return p()};module.exports=((e,t)=>o(e,t)),module.exports.silent=((e,t)=>o(e,t,!0)); },{}],"gwbb":[function(require,module,exports) { -"use strict";function e(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),a.push.apply(a,r)}return a}function t(t){for(var r=1;r{try{let o=l.default.join(a.dir,"CHANGELOG.md"),c=await i.default.readFile(o,"utf8"),u=p.getChangelogEntry(c,a.packageJson.version);if(!u)throw new Error(`Could not find changelog entry for ${a.packageJson.name}@${a.packageJson.version}`);await e.repos.createRelease(t({tag_name:r,body:u.content,prerelease:a.packageJson.version.includes("-")},s.context.repo))}catch(n){if("ENOENT"!==n.code)throw n}};async function w({script:e,githubToken:t,cwd:a=process.cwd()}){let r=s.context.ref.replace("refs/heads/",""),n=s.getOctokit(t),[o,...i]=e.split(/\s+/),l=await p.execWithOutput(o,i,{cwd:a});await g.pullBranch(r),await g.push(r,{includeTags:!0});let{packages:u,tool:h}=await c.getPackages(a),d=[];if("root"!==h){let e=/New tag:\s+(@[^/]+\/[^@]+|[^/]+)@([^\s]+)/,t=new Map(u.map(e=>[e.packageJson.name,e]));for(let a of l.stdout.split("\n")){let r=a.match(e);if(null===r)continue;let n=r[1],o=t.get(n);if(void 0===o)throw new Error(`Package "${n}" not found.`+"This is probably a bug in the action, please open an issue");d.push(o)}await Promise.all(d.map(e=>f(n,{pkg:e,tagName:`${e.packageJson.name}@${e.packageJson.version}`})))}else{if(0===u.length)throw new Error("No package found.This is probably a bug in the action, please open an issue");let e=u[0],t=/New tag:/;for(let a of l.stdout.split("\n")){if(a.match(t)){d.push(e),await f(n,{pkg:e,tagName:`v${e.packageJson.version}`});break}}}return d.length?{published:!0,publishedPackages:d.map(e=>({name:e.packageJson.name,version:e.packageJson.version}))}:{published:!1}}exports.runPublish=w;const b=e=>{try{return require(d.default(e,"@changesets/cli/package.json"))}catch(t){if(t&&"MODULE_NOT_FOUND"===t.code)throw new Error(`Have you forgotten to install \`@changesets/cli\` in "${e}"?`);throw t}};async function m({script:e,githubToken:a,cwd:r=process.cwd(),prTitle:n="Version Packages",commitMessage:c="Version Packages",hasPublishScript:f=!1}){let w=`${s.context.repo.owner}/${s.context.repo.repo}`,m=s.context.ref.replace("refs/heads/",""),y=`changeset-release/${m}`,k=s.getOctokit(a),{preState:O}=await h.default(r);await g.switchToMaybeExistingBranch(y),await g.reset(s.context.sha);let v=await p.getVersionsByDirectory(r);if(e){let[t,...a]=e.split(/\s+/);await o.exec(t,a,{cwd:r})}else{let e=b(r),t=u.lt(e.version,"2.0.0")?"bump":"version";await o.exec("node",[d.default(r,"@changesets/cli/bin.js"),t],{cwd:r})}let $=`repo:${w}+state:open+head:${y}+base:${m}`,P=k.search.issuesAndPullRequests({q:$}),j=await p.getChangedPackages(r,v),x=(async()=>`This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and ${f?"the packages will be published to npm automatically":"publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing)"}. If you're not ready to do a release yet, that's fine, whenever you add more changesets to ${m}, this PR will be updated.\n${O?`\n⚠️⚠️⚠️⚠️⚠️⚠️\n\n\`${m}\` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run \`changeset pre exit\` on \`${m}\`.\n\n⚠️⚠️⚠️⚠️⚠️⚠️\n`:""}\n# Releases\n`+(await Promise.all(j.map(async e=>{let t=await i.default.readFile(l.default.join(e.dir,"CHANGELOG.md"),"utf8"),a=p.getChangelogEntry(t,e.packageJson.version);return{highestLevel:a.highestLevel,private:!!e.packageJson.private,content:`## ${e.packageJson.name}@${e.packageJson.version}\n\n`+a.content}}))).filter(e=>e).sort(p.sortTheThings).map(e=>e.content).join("\n "))();const q=`${n}${O?` (${O.tag})`:""}`;if(!(await g.checkIfClean())){const e=`${c}${O?` (${O.tag})`:""}`;await g.commitAll(e)}await g.push(y,{force:!0});let J=await P;console.log(JSON.stringify(J.data,null,2)),0===J.data.items.length?(console.log("creating pull request"),await k.pulls.create(t({base:m,head:y,title:q,body:await x},s.context.repo))):(k.pulls.update(t({pull_number:J.data.items[0].number,title:q,body:await x},s.context.repo)),console.log("pull request found"))}exports.runVersion=m; +"use strict";function e(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),a.push.apply(a,r)}return a}function t(t){for(var r=1;r{try{let o=l.default.join(a.dir,"CHANGELOG.md"),c=await i.default.readFile(o,"utf8"),u=p.getChangelogEntry(c,a.packageJson.version);if(!u)throw new Error(`Could not find changelog entry for ${a.packageJson.name}@${a.packageJson.version}`);await e.repos.createRelease(t({tag_name:r,body:u.content,prerelease:a.packageJson.version.includes("-")},s.context.repo))}catch(n){if("ENOENT"!==n.code)throw n}};async function w({script:e,githubToken:t,cwd:a=process.cwd()}){let r=s.getOctokit(t),[n,...o]=e.split(/\s+/),i=await p.execWithOutput(n,o,{cwd:a});await g.pushTags();let{packages:l,tool:u}=await c.getPackages(a),h=[];if("root"!==u){let e=/New tag:\s+(@[^/]+\/[^@]+|[^/]+)@([^\s]+)/,t=new Map(l.map(e=>[e.packageJson.name,e]));for(let a of i.stdout.split("\n")){let r=a.match(e);if(null===r)continue;let n=r[1],o=t.get(n);if(void 0===o)throw new Error(`Package "${n}" not found.`+"This is probably a bug in the action, please open an issue");h.push(o)}await Promise.all(h.map(e=>f(r,{pkg:e,tagName:`${e.packageJson.name}@${e.packageJson.version}`})))}else{if(0===l.length)throw new Error("No package found.This is probably a bug in the action, please open an issue");let e=l[0],t=/New tag:/;for(let a of i.stdout.split("\n")){if(a.match(t)){h.push(e),await f(r,{pkg:e,tagName:`v${e.packageJson.version}`});break}}}return h.length?{published:!0,publishedPackages:h.map(e=>({name:e.packageJson.name,version:e.packageJson.version}))}:{published:!1}}exports.runPublish=w;const b=e=>{try{return require(d.default(e,"@changesets/cli/package.json"))}catch(t){if(t&&"MODULE_NOT_FOUND"===t.code)throw new Error(`Have you forgotten to install \`@changesets/cli\` in "${e}"?`);throw t}};async function m({script:e,githubToken:a,cwd:r=process.cwd(),prTitle:n="Version Packages",commitMessage:c="Version Packages",hasPublishScript:f=!1}){let w=`${s.context.repo.owner}/${s.context.repo.repo}`,m=s.context.ref.replace("refs/heads/",""),y=`changeset-release/${m}`,k=s.getOctokit(a),{preState:O}=await h.default(r);await g.switchToMaybeExistingBranch(y),await g.reset(s.context.sha);let v=await p.getVersionsByDirectory(r);if(e){let[t,...a]=e.split(/\s+/);await o.exec(t,a,{cwd:r})}else{let e=b(r),t=u.lt(e.version,"2.0.0")?"bump":"version";await o.exec("node",[d.default(r,"@changesets/cli/bin.js"),t],{cwd:r})}let $=`repo:${w}+state:open+head:${y}+base:${m}`,P=k.search.issuesAndPullRequests({q:$}),j=await p.getChangedPackages(r,v),x=(async()=>`This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and ${f?"the packages will be published to npm automatically":"publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing)"}. If you're not ready to do a release yet, that's fine, whenever you add more changesets to ${m}, this PR will be updated.\n${O?`\n⚠️⚠️⚠️⚠️⚠️⚠️\n\n\`${m}\` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run \`changeset pre exit\` on \`${m}\`.\n\n⚠️⚠️⚠️⚠️⚠️⚠️\n`:""}\n# Releases\n`+(await Promise.all(j.map(async e=>{let t=await i.default.readFile(l.default.join(e.dir,"CHANGELOG.md"),"utf8"),a=p.getChangelogEntry(t,e.packageJson.version);return{highestLevel:a.highestLevel,private:!!e.packageJson.private,content:`## ${e.packageJson.name}@${e.packageJson.version}\n\n`+a.content}}))).filter(e=>e).sort(p.sortTheThings).map(e=>e.content).join("\n "))();const q=`${n}${O?` (${O.tag})`:""}`;if(!(await g.checkIfClean())){const e=`${c}${O?` (${O.tag})`:""}`;await g.commitAll(e)}await g.push(y,{force:!0});let J=await P;console.log(JSON.stringify(J.data,null,2)),0===J.data.items.length?(console.log("creating pull request"),await k.pulls.create(t({base:m,head:y,title:q,body:await x},s.context.repo))):(k.pulls.update(t({pull_number:J.data.items[0].number,title:q,body:await x},s.context.repo)),console.log("pull request found"))}exports.runVersion=m; },{"@actions/exec":"AjbX","@actions/github":"Jpqw","fs-extra":"qdgD","@manypkg/get-packages":"9z3N","semver":"y4rL","./utils":"UnXq","./gitUtils":"pH2w","./readChangesetState":"yOXS","resolve-from":"zg8f"}],"7QCb":[function(require,module,exports) { "use strict";var e=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)Object.hasOwnProperty.call(e,s)&&(t[s]=e[s]);return t.default=e,t},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const s=e(require("@actions/core")),i=t(require("fs-extra")),n=e(require("./gitUtils")),r=require("./run"),o=t(require("./readChangesetState")),u=e=>s.getInput(e)||void 0;(async()=>{let e=process.env.GITHUB_TOKEN;if(!e)return void s.setFailed("Please add the GITHUB_TOKEN to the changesets action");s.setOutput("published","false"),s.setOutput("publishedPackages","[]"),console.log("setting git user"),await n.setupUser(),console.log("setting GitHub credentials"),await i.default.writeFile(`${process.env.HOME}/.netrc`,`machine github.com\nlogin github-actions[bot]\npassword ${e}`);let{changesets:t}=await o.default(),a=s.getInput("publish"),l=0!==t.length,c=!!a;switch(!0){case!l&&!c:return void console.log("No changesets found");case!l&&c:{console.log("No changesets found, attempting to publish any unpublished packages to npm");let t=`${process.env.HOME}/.npmrc`;i.default.existsSync(t)?console.log("Found existing .npmrc file"):(console.log("No .npmrc file found, creating one"),i.default.writeFileSync(t,`//registry.npmjs.org/:_authToken=${process.env.NPM_TOKEN}`));const n=await r.runPublish({script:a,githubToken:e});return void(n.published&&(s.setOutput("published","true"),s.setOutput("publishedPackages",JSON.stringify(n.publishedPackages))))}case l:return void(await r.runVersion({script:u("version"),githubToken:e,prTitle:u("title"),commitMessage:u("commit"),hasPublishScript:c}))}})().catch(e=>{console.error(e),s.setFailed(e.message)}); },{"@actions/core":"RNev","fs-extra":"qdgD","./gitUtils":"pH2w","./run":"gwbb","./readChangesetState":"yOXS"}]},{},["7QCb"], null) \ No newline at end of file diff --git a/src/gitUtils.ts b/src/gitUtils.ts index daba616..77efeaa 100644 --- a/src/gitUtils.ts +++ b/src/gitUtils.ts @@ -22,20 +22,20 @@ export const pullBranch = async (branch: string) => { export const push = async ( branch: string, - { force, includeTags }: { force?: boolean; includeTags?: boolean } = {} + { force }: { force?: boolean } = {} ) => { await exec( "git", - [ - "push", - "origin", - `HEAD:${branch}`, - includeTags && "--tags", - force && "--force", - ].filter(Boolean as any) + ["push", "origin", `HEAD:${branch}`, force && "--force"].filter( + Boolean as any + ) ); }; +export const pushTags = async () => { + await exec("git", ["push", "origin", "--tags"]); +}; + export const switchToMaybeExistingBranch = async (branch: string) => { let { stderr } = await execWithOutput("git", ["checkout", branch], { ignoreReturnCode: true, diff --git a/src/run.ts b/src/run.ts index 92c91a4..3b3397c 100644 --- a/src/run.ts +++ b/src/run.ts @@ -69,7 +69,6 @@ export async function runPublish({ githubToken, cwd = process.cwd(), }: PublishOptions): Promise { - let branch = github.context.ref.replace("refs/heads/", ""); let octokit = github.getOctokit(githubToken); let [publishCommand, ...publishArgs] = script.split(/\s+/); @@ -79,8 +78,7 @@ export async function runPublish({ { cwd } ); - await gitUtils.pullBranch(branch); - await gitUtils.push(branch, { includeTags: true }); + await gitUtils.pushTags(); let { packages, tool } = await getPackages(cwd); let releasedPackages: Package[] = [];