From e94634544cd21d5e4e0c7c9da9320a004cf1a2a3 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Mon, 14 Oct 2019 15:50:48 +0100 Subject: [PATCH] Add script to generate npm publish script --- Gruntfile.js | 15 +++++++++++- scripts/generate-publish-script.js | 38 ++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 scripts/generate-publish-script.js diff --git a/Gruntfile.js b/Gruntfile.js index caa043e76..28f510e50 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -562,7 +562,20 @@ module.exports = function(grunt) { return false; } }); + grunt.registerTask('generatePublishScript', + 'Generates a script to publish build output to npm', + function () { + const done = this.async(); + const generatePublishScript = require("./scripts/generate-publish-script.js"); + generatePublishScript().then(function(output) { + grunt.log.writeln(output); + const filePath = path.join(grunt.config.get('paths.dist'),"modules","publish.sh"); + grunt.file.write(filePath,output); + + done(); + }); + }); grunt.registerTask('setDevEnv', 'Sets NODE_ENV=development so non-minified assets are used', function () { @@ -605,7 +618,7 @@ module.exports = function(grunt) { grunt.registerTask('release', 'Create distribution zip file', - ['build','verifyPackageDependencies','clean:release','mkdir:release','chmod:release','compress:release','pack-modules']); + ['build','verifyPackageDependencies','clean:release','mkdir:release','chmod:release','compress:release','pack-modules','generatePublishScript']); grunt.registerTask('pack-modules', 'Create module pack files for release', diff --git a/scripts/generate-publish-script.js b/scripts/generate-publish-script.js new file mode 100644 index 000000000..45a4e8423 --- /dev/null +++ b/scripts/generate-publish-script.js @@ -0,0 +1,38 @@ +#!/usr/bin/env node + +const path = require("path"); +const fs = require("fs-extra"); +const should = require("should"); + +function generateScript() { + return new Promise((resolve, reject) => { + const packages = [ + "node-red-util", + "node-red-runtime", + "node-red-registry", + "node-red-nodes", + "node-red-editor-client", + "node-red-editor-api", + "node-red" + ]; + const rootPackage = require(path.join(__dirname,"..","package.json")); + const version = rootPackage.version; + + const tagArg = /-/.test(version) ? "--tag next" : "" + + const lines = []; + + packages.forEach(name => { + lines.push(`npm publish ${name}-${version}.tgz ${tagArg}\n`); + }) + resolve(lines.join("")) + }); +} + +if (require.main === module) { + generateScript().then(output => { + console.log(output); + }); +} else { + module.exports = generateScript; +}