Skip to content

Commit

Permalink
Merge 9ee5739 into 5b4b067
Browse files Browse the repository at this point in the history
  • Loading branch information
fishcharlie committed Apr 19, 2020
2 parents 5b4b067 + 9ee5739 commit e683d1a
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 18 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/publish.yml
Expand Up @@ -8,7 +8,7 @@ jobs:
getinfo:
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.data.outputs.tag }}
npmtag: ${{ steps.data.outputs.npmtag }}
steps:
- uses: actions/checkout@v2
- run: npm i
Expand All @@ -28,7 +28,7 @@ jobs:
- run: npm ci
- run: npm publish --tag $TAG
env:
TAG: ${{ needs.getinfo.outputs.tag }}
TAG: ${{ needs.getinfo.outputs.npmtag }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

# TODO: I'm pretty sure this is failing because the package.json name is not scoped (ex. `@dynamoosejs/dynamoose`). We should maybe add a step in here to scope it just for publishing this one package.
Expand All @@ -44,5 +44,5 @@ jobs:
# - run: npm ci
# - run: npm publish --tag $TAG
# env:
# TAG: ${{ needs.getinfo.outputs.tag }}
# TAG: ${{ needs.getinfo.outputs.npmtag }}
# NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
31 changes: 23 additions & 8 deletions publish/index.js
Expand Up @@ -12,6 +12,7 @@ const octokit = new Octokit({
});
const path = require("path");
const ora = require("ora");
const os = require("os");
const npmFetch = require("npm-registry-fetch");
let package = require("../package.json");

Expand All @@ -22,6 +23,11 @@ let package = require("../package.json");
console.error("Exiting.\n");
process.exit(1);
}
if (!process.env.GITHUBAUTH) {
console.error("You must set `GITHUBAUTH` in order to use this tool.");
console.error("Exiting.\n");
process.exit(1);
}
let results = await inquirer.prompt([
{
"name": "branch",
Expand All @@ -47,7 +53,7 @@ let package = require("../package.json");
"name": "isPrerelease",
"type": "confirm",
"message": "Is this version a prerelease version?",
"default": (res) => Boolean(retrieveInformation(res.version).tag)
"default": (res) => retrieveInformation(res.version).isPrerelease
},
{
"name": "confirm",
Expand Down Expand Up @@ -95,13 +101,14 @@ let package = require("../package.json");
openurl.open(`https://github.com/dynamoosejs/dynamoose/compare/v${package.version}...${results.branch}`);
const versionInfo = retrieveInformation(results.version);
const versionFriendlyTitle = `Version ${[versionInfo.main, utils.capitalize_first_letter(versionInfo.tag || ""), versionInfo.tagNumber].filter((a) => Boolean(a)).join(" ")}`;
await fs.writeFile(`${results.version}-changelog.md`, `## ${versionFriendlyTitle}\n\nThis release ________\n\nPlease comment or [contact me](https://charlie.fish/contact) if you have any questions about this release.\n\n### Major New Features\n\n### General\n\n### Bug Fixes\n\n### Documentation\n\n### Other`);
await exec(`code ${results.version}-changelog.md`);
const changelogFilePath = path.join(os.tmpdir(), `${results.version}-changelog.md`);
await fs.writeFile(changelogFilePath, `## ${versionFriendlyTitle}\n\nThis release ________\n\nPlease comment or [contact me](https://charlie.fish/contact) if you have any questions about this release.\n\n### Major New Features\n\n### General\n\n### Bug Fixes\n\n### Documentation\n\n### Other`);
await exec(`code ${changelogFilePath}`);
const pendingChangelogSpinner = ora("Waiting for user to finish changelog, press enter to continue.").start();
await keypress();
pendingChangelogSpinner.succeed("Finished changelog");
const versionChangelog = await fs.readFile(`${results.version}-changelog.md`, "utf8");
if (!versionInfo.tag) {
const versionChangelog = await fs.readFile(changelogFilePath, "utf8");
if (!versionInfo.isPrerelease) {
const existingChangelog = await fs.readFile(path.join(__dirname, "..", "CHANGELOG.md"), "utf8");
const existingChangelogArray = existingChangelog.split("\n---\n");
existingChangelogArray.splice(1, 0, `\n${versionChangelog}\n`);
Expand All @@ -115,7 +122,15 @@ let package = require("../package.json");
}
// Create PR
const gitPR = ora("Creating PR on GitHub").start();
const pr = (await octokit.pulls.create({"owner": "dynamoosejs", "repo": "dynamoose", "title": versionFriendlyTitle, "head": branch, "base": results.branch})).data;
const pr = (await octokit.pulls.create({
"owner": "dynamoosejs",
"repo": "dynamoose",
"title": versionFriendlyTitle,
"body": versionChangelog,
"labels": ["version"],
"head": branch,
"base": results.branch
})).data;
gitPR.succeed(`Created PR ${pr.number} on GitHub`);
openurl.open(`https://github.com/dynamoosejs/dynamoose/pull/${pr.number}`);
// Poll for PR to be merged
Expand All @@ -131,7 +146,7 @@ let package = require("../package.json");
"target_commitish": results.branch,
"name": `v${results.version}`,
"body": versionChangelog,
"prerelease": Boolean(versionInfo.tag)
"prerelease": versionInfo.isPrerelease
});
gitRelease.succeed("GitHub release created");
// Poll NPM for release
Expand Down Expand Up @@ -174,4 +189,4 @@ async function isReleaseSubmiitted(release) {
await utils.timeout(5000);
isReleaseSubmiitted(release);
}
}
}
11 changes: 6 additions & 5 deletions publish/information/index.js
@@ -1,10 +1,11 @@
const core = require("@actions/core");
const package = require("../../package.json");
const version = package.version;
const {main, tag, tagNumber} = require("./retrieve")(version);
const obj = require("./retrieve")(version);

core.setOutput("main", main);
core.setOutput("tag", tag);
core.setOutput("tagNumber", tagNumber);
Object.entries(obj).forEach((entry) => {
const [key, value] = entry;
core.setOutput(key, value);
});

console.log({main, tag, tagNumber});
console.log(obj);
10 changes: 8 additions & 2 deletions publish/information/retrieve.js
@@ -1,5 +1,11 @@
module.exports = (version) => {
const regex = /^v?((?:\d\.?){1,3})(?:-(.*)\.(\d*))?$/gmu;
const [,main,tag,tagNumber] = regex.exec(version);
return {main, tag, tagNumber};
};
return {
main,
tag,
"npmtag": tag || "latest",
tagNumber,
"isPrerelease": Boolean(tag)
};
};

0 comments on commit e683d1a

Please sign in to comment.