diff --git a/packages/cli/package.json b/packages/cli/package.json index 6d3f223b5..a14892f80 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -41,7 +41,8 @@ "start": "npm run build -- -w", "lint": "eslint src --ext .ts", "test": "jest --maxWorkers=2", - "bundle": "yarn package && yarn gzip", + "bundle": "yarn inject-version && yarn package && yarn gzip", + "inject-version": "node scripts/inject-version.js", "package": "rimraf binary && pkg . --out-path binary", "gzip": "ls binary/auto* | xargs gzip" }, diff --git a/packages/cli/scripts/inject-version.js b/packages/cli/scripts/inject-version.js new file mode 100644 index 000000000..3715f9322 --- /dev/null +++ b/packages/cli/scripts/inject-version.js @@ -0,0 +1,23 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* eslint-disable @typescript-eslint/no-var-requires */ + +const { execSync } = require("child_process"); +const path = require("path"); +const fs = require("fs"); +const dotenv = require("dotenv"); + +dotenv.config({ path: path.join(__dirname, "../../../.env") }); + +const autoPath = path.join(__dirname, "../dist/bin/auto.js"); + +execSync(`chmod +x ${autoPath}`); +const nextVersion = execSync(`${autoPath} shipit -dq`, { + encoding: "utf-8", +}).trim(); +const parseArgsPath = path.join(__dirname, "../dist/parse-args.js"); +const parseArgsContent = fs.readFileSync(parseArgsPath, { encoding: "utf-8" }); + +fs.writeFileSync( + parseArgsPath, + parseArgsContent.replace(/process\.env\.AUTO_CLI_VERSION/, `"${nextVersion}"`) +); diff --git a/packages/cli/src/parse-args.ts b/packages/cli/src/parse-args.ts index e0e31ccec..7bbbefe58 100644 --- a/packages/cli/src/parse-args.ts +++ b/packages/cli/src/parse-args.ts @@ -623,7 +623,8 @@ export default function parseArgs(testArgs?: string[]) { if (!mainOptions._command) { if (mainOptions.version) { - console.log(`v${getAutoVersion()}`); + const version = process.env.AUTO_CLI_VERSION || getAutoVersion(); + console.log(`v${version}`); } return [];