diff --git a/lerna.json b/lerna.json index 405d16a397..1ab025a4b5 100644 --- a/lerna.json +++ b/lerna.json @@ -3,6 +3,11 @@ "scm-ui/*", "scm-plugins/*" ], + "command": { + "publish": { + "registry": "http://localhost:4873" + } + }, "npmClient": "yarn", "useWorkspaces": true, "version": "2.0.0-SNAPSHOT" diff --git a/scm-ui/ui-scripts/bin/ui-scripts.js b/scm-ui/ui-scripts/bin/ui-scripts.js index d59de1f76a..41549ac27a 100755 --- a/scm-ui/ui-scripts/bin/ui-scripts.js +++ b/scm-ui/ui-scripts/bin/ui-scripts.js @@ -1,7 +1,7 @@ #!/usr/bin/env node const { spawnSync } = require("child_process"); -const commands = ["plugin", "plugin-watch"]; +const commands = ["plugin", "plugin-watch", "publish"]; const args = process.argv.slice(2); @@ -24,21 +24,21 @@ if (commands.includes(command)) { if (result.signal === "SIGKILL") { console.log( "The build failed because the process exited too early. " + - "This probably means the system ran out of memory or someone called " + - "`kill -9` on the process." + "This probably means the system ran out of memory or someone called " + + "`kill -9` on the process." ); } else if (result.signal === "SIGTERM") { console.log( "The build failed because the process exited too early. " + - "Someone might have called `kill` or `killall`, or the system could " + - "be shutting down." + "Someone might have called `kill` or `killall`, or the system could " + + "be shutting down." ); } process.exit(1); } process.exit(result.status); } else { - console.log('Unknown script "' + command + '".'); + console.log("Unknown script \"" + command + "\"."); console.log("Perhaps you need to update react-scripts?"); console.log( "See: https://facebook.github.io/create-react-app/docs/updating-to-new-releases" diff --git a/scm-ui/ui-scripts/package.json b/scm-ui/ui-scripts/package.json index 0b459d5c59..af1d7b7aab 100644 --- a/scm-ui/ui-scripts/package.json +++ b/scm-ui/ui-scripts/package.json @@ -23,5 +23,11 @@ "webpack": "^4.41.1", "webpack-cli": "^3.3.9", "webpack-dev-server": "^3.8.2" + }, + "eslintConfig": { + "extends": "@scm-manager/eslint-config", + "rules": { + "no-console": "off" + } } } diff --git a/scm-ui/ui-scripts/src/commands/publish.js b/scm-ui/ui-scripts/src/commands/publish.js new file mode 100644 index 0000000000..d3cdc60724 --- /dev/null +++ b/scm-ui/ui-scripts/src/commands/publish.js @@ -0,0 +1,26 @@ +const lerna = require("../lerna"); +const versions = require("../versions"); + +const args = process.argv.slice(2); + +if (args.length < 1) { + console.log("usage ui-scripts publish version"); + process.exit(1); +} + +const version = args[0]; +const index = version.indexOf("-SNAPSHOT"); +if (index > 0) { + const snapshotVersion = version.substring(0, index) + "-" + versions.createSnapshotVersion(); + console.log("publish snapshot release " + snapshotVersion); + lerna.version(snapshotVersion); + lerna.publish(); + lerna.version(version); +} else { + // ?? not sure + lerna.publish(); +} + + + + diff --git a/scm-ui/ui-scripts/src/lerna.js b/scm-ui/ui-scripts/src/lerna.js new file mode 100644 index 0000000000..b5404fbd62 --- /dev/null +++ b/scm-ui/ui-scripts/src/lerna.js @@ -0,0 +1,33 @@ +const { spawnSync } = require("child_process"); + +const yarn = args => { + const result = spawnSync("yarn", args, { stdio: "inherit" }); + if (result.error) { + console.log("could not start yarn command:", result.error); + process.exit(2); + } else if (result.status !== 0) { + console.log("yarn process ends with status code:", result.status); + process.exit(3); + } +}; + +const version = version => { + yarn([ + "run", + "lerna", + "--no-git-tag-version", + "--no-push", + "version", + "--yes", + version + ]); +}; + +const publish = () => { + yarn(["run", "lerna", "publish", "from-package", "--yes"]); +}; + +module.exports = { + version, + publish +}; diff --git a/scm-ui/ui-scripts/src/plugin.js b/scm-ui/ui-scripts/src/plugin.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/scm-ui/ui-scripts/src/versions.js b/scm-ui/ui-scripts/src/versions.js new file mode 100644 index 0000000000..9cbaf4bfa9 --- /dev/null +++ b/scm-ui/ui-scripts/src/versions.js @@ -0,0 +1,16 @@ +const createSnapshotVersion = (baseVersion) => { + const date = new Date(); + const year = date.getFullYear(); + const month = date.getMonth().toString().padStart(2, "0"); + const day = date.getDate().toString().padStart(2, "0"); + + const hours = date.getHours().toString().padStart(2, "0"); + const minutes = date.getMinutes().toString().padStart(2, "0"); + const seconds = date.getSeconds().toString().padStart(2, "0"); + + return `${year}${month}${day}-${hours}${minutes}${seconds}`; +}; + +module.exports = { + createSnapshotVersion +}; diff --git a/yarn.lock b/yarn.lock index 4df5dbb32b..0ed3d9f1f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11450,7 +11450,7 @@ react-hotkeys@2.0.0-pre4: dependencies: prop-types "^15.6.1" -react-i18next@^10.11.4: +react-i18next@^10.11.4, react-i18next@^10.13.1: version "10.13.1" resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-10.13.1.tgz#4ad37e0bec5e4cf53aaa2a0c96a4e171e01ad520" integrity sha512-MReJUMoYooaKZONvoewFuAwf31bQU60Xt25P5wBIPTMphY4LjDJE27rwhEKjNLL24nSIHa3Jh+z9bPwSKISAoA==