aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/postpublish_utils.js
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2017-11-18 04:09:48 +0800
committerFabio Berger <me@fabioberger.com>2017-11-18 04:09:48 +0800
commit5277d4a2666a795d01b7d3d4d018ca6d0e42399f (patch)
tree14e207bf676dbdc84de3f4449c28a103740d094f /scripts/postpublish_utils.js
parentf25b2d9ab9bfc9410e17d1ee7a4bf0074aaa622c (diff)
downloaddexon-0x-contracts-5277d4a2666a795d01b7d3d4d018ca6d0e42399f.tar.gz
dexon-0x-contracts-5277d4a2666a795d01b7d3d4d018ca6d0e42399f.tar.zst
dexon-0x-contracts-5277d4a2666a795d01b7d3d4d018ca6d0e42399f.zip
Move most of code for getting latest tag/version and calling publish_release to postpublish_utils script in top-level dir
Diffstat (limited to 'scripts/postpublish_utils.js')
-rw-r--r--scripts/postpublish_utils.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/postpublish_utils.js b/scripts/postpublish_utils.js
new file mode 100644
index 000000000..6b7be4f0e
--- /dev/null
+++ b/scripts/postpublish_utils.js
@@ -0,0 +1,47 @@
+const execAsync = require('async-child-process').execAsync;
+const semverSort = require('semver-sort');
+const promisify = require('es6-promisify');
+const publishRelease = require('publish-release');
+
+const publishReleaseAsync = promisify(publishRelease);
+const githubPersonalAccessToken = process.env.GITHUB_PERSONAL_ACCESS_TOKEN_0X_JS;
+
+module.exports = {
+ getLatestTagAndVersionAsync: function(subPackageName) {
+ const subPackagePrefix = subPackageName + '@';
+ const gitTagsCommand = 'git tags -l "' + subPackagePrefix + '*"';
+ return execAsync(gitTagsCommand)
+ .then(function(result) {
+ if (result.stderr !== '') {
+ throw new Error(result.stderr);
+ }
+ const tags = result.stdout.trim().split('\n');
+ const versions = tags.map(function(tag) {
+ return tag.slice(subPackagePrefix.length);
+ });
+ const sortedVersions = semverSort.desc(versions);
+ const latestVersion = sortedVersions[0];
+ const latestTag = subPackagePrefix + latestVersion;
+ return {
+ tag: latestTag,
+ version: latestVersion
+ };
+ });
+ },
+ publishReleaseNotes: function(tag, releaseName, assets) {
+ console.log('POSTPUBLISH: Releasing ', releaseName, '...');
+ return publishReleaseAsync({
+ token: githubPersonalAccessToken,
+ owner: '0xProject',
+ repo: '0x.js',
+ tag: tag,
+ name: releaseName,
+ notes: 'TODO',
+ draft: false,
+ prerelease: false,
+ reuseRelease: true,
+ reuseDraftOnly: false,
+ assets: assets,
+ });
+ },
+};