diff --git a/node-src/lib/parseArguments.ts b/node-src/lib/parseArguments.ts index 4995abcd2..092b4e8da 100644 --- a/node-src/lib/parseArguments.ts +++ b/node-src/lib/parseArguments.ts @@ -73,6 +73,7 @@ export default function parseArguments(argv: string[]) { argv, booleanDefault: undefined, description: false, + version: pkg.version, flags: { // Required options projectToken: { type: 'string', alias: 't', isMultiple: true }, diff --git a/package.json b/package.json index 7daf4bdd7..16517b38b 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "lint": "yarn lint:js bin-src node-src test-stories ./isChromatic.js ./isChromatic.mjs", "lint:js": "cross-env NODE_ENV=production eslint --cache --cache-location=.cache/eslint --report-unused-disable-directives", "lint:package": "sort-package-json", - "release": "yarn run build && auto shipit", + "release": "./scripts/versionAndBuild.mjs && auto shipit", "prepack": "clean-package", "postpack": "clean-package restore", "publish-action": "./scripts/publish-action.mjs", diff --git a/scripts/versionAndBuild.mjs b/scripts/versionAndBuild.mjs new file mode 100755 index 000000000..328284923 --- /dev/null +++ b/scripts/versionAndBuild.mjs @@ -0,0 +1,26 @@ +#!/usr/bin/env node + +import { $ } from 'execa'; + +async function main() { + const { stdout: status } = await $`git status --porcelain`; + if (status) { + console.error(`โ—๏ธ Working directory is not clean:\n${status}`); + return; + } + + const { stdout: nextVersion } = await $`auto shipit --dry-run --quiet`; + + console.info(`๐Ÿ“Œ Temporarily bumping version to '${nextVersion}' for build step`); + await $`npm --no-git-tag-version version ${nextVersion}`; + + console.info('๐Ÿ“ฆ Building with new version'); + await $({ stdio: 'inherit' })`yarn build`; + + console.info('๐Ÿงน Resetting changes to let `auto` do its thing'); + await $`git reset --hard`; + + console.info('โœ… Build with new version completed'); +} + +main();