diff --git a/bin/release.ts b/bin/release.ts index ea7be963fc4..9590afb326c 100755 --- a/bin/release.ts +++ b/bin/release.ts @@ -6,14 +6,13 @@ import * as inquirer from "inquirer" import chalk from "chalk" import parseArgs = require("minimist") import deline = require("deline") -import { join, resolve } from "path" +import { resolve } from "path" const replace = require("replace-in-file") type ReleaseType = "minor" | "patch" | "preminor" | "prepatch" | "prerelease" const RELEASE_TYPES = ["minor", "patch", "preminor", "prepatch", "prerelease"] const gardenRoot = resolve(__dirname, "..") -const gardenServiceRoot = join(gardenRoot, "garden-service") /** * Performs the following steps to prepare for a release: @@ -45,11 +44,10 @@ async function release() { if (!RELEASE_TYPES.includes(releaseType)) { throw new Error(`Invalid release type ${releaseType}, available types are: ${RELEASE_TYPES.join(", ")}`) } - // Update package.json versions - await execa.stdout("lerna", [ + await execa("node_modules/.bin/lerna", [ "version", "--no-git-tag-version", "--yes", releaseType, - ], { cwd: gardenServiceRoot }) + ], { cwd: gardenRoot }) // Read the version from garden-service/package.json after setting it (rather than parsing the lerna output) const version = "v" + require("../garden-service/package.json").version @@ -92,12 +90,24 @@ async function release() { return } + // Lerna doesn't update package-lock.json so we need the following workaround. + // See this issue for details: https://github.com/lerna/lerna/issues/1415 + // console.log("Updating package-lock.json for all packages") + await execa("node_modules/.bin/lerna", ["clean", "--yes"], { cwd: gardenRoot }) + await execa("node_modules/.bin/lerna", [ + "bootstrap", + "--ignore-scripts", + "--", + "--package-lock-only", + "--no-audit", + ], { cwd: gardenRoot }) + // Pull remote tags console.log("Pulling remote tags...") await execa("git", ["fetch", "origin", "--tags", "-f"], { cwd: gardenRoot }) // Verify tag doesn't exist - const tags = (await execa.stdout("git", ["tag"], { cwd: gardenRoot })).split("\n") + const tags = (await execa("git", ["tag"], { cwd: gardenRoot })).stdout.split("\n") if (tags.includes(version) && !force) { await rollBack() throw new Error(`Tag ${version} already exists. Use "--force" to override.`) @@ -190,7 +200,7 @@ async function createTag(version: string, force: boolean) { if (force) { createTagArgs.push("-f") } - await execa.stdout("git", createTagArgs, { cwd: gardenRoot }) + await execa("git", createTagArgs, { cwd: gardenRoot }) // Push the tag const pushTagArgs = ["push", "origin", version, "--no-verify"] @@ -213,7 +223,7 @@ async function updateExampleLinks(version: string) { async function rollBack() { // Undo any file changes. This is safe since we know the branch is clean. console.log("Undoing file changes") - await execa.stdout("git", ["checkout", "."], { cwd: gardenRoot }) + await execa("git", ["checkout", "."], { cwd: gardenRoot }) } async function prompt(version: string): Promise { @@ -246,12 +256,12 @@ async function stripPrereleaseTags(tags: string[], version: string) { // E.g., if the current tag is v0.5.0-2 and we're releasing v0.9.0-2, we remove it. // If the current tag is v0.9.0-0 and we're releasing v0.9.0-2, we keep it. if (!semver.prerelease(version) || semver.diff(version, tag) !== "prerelease") { - await execa.stdout("git", ["tag", "-d", tag]) + await execa("git", ["tag", "-d", tag]) } } // We also need to remove the "edge" tag - await execa.stdout("git", ["tag", "-d", "edge"]) + await execa("git", ["tag", "-d", "edge"]) } (async () => { diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index d8379a0ccfc..cdc092ea330 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -1,6 +1,6 @@ { "name": "dashboard", - "version": "0.1.0", + "version": "0.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/garden-service/package-lock.json b/garden-service/package-lock.json index 489876c5a68..273cc60eca1 100644 --- a/garden-service/package-lock.json +++ b/garden-service/package-lock.json @@ -1198,11 +1198,18 @@ } }, "ansi-escapes": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.1.0.tgz", - "integrity": "sha512-2VY/iCUZTDLD/qxptS3Zn3c6k2MeIbYqjRXqM8T5oC7N2mMjh3xIU3oYru6cHGbldFa9h5i8N0fP65UaUqrMWA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", "requires": { - "type-fest": "^0.3.0" + "type-fest": "^0.5.2" + }, + "dependencies": { + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" + } } }, "ansi-gray": { diff --git a/garden-service/package.json b/garden-service/package.json index ff43fc88147..bc648ca1c81 100644 --- a/garden-service/package.json +++ b/garden-service/package.json @@ -27,7 +27,7 @@ "@kubernetes/client-node": "git+https://github.com/garden-io/javascript.git#client-cert-auth", "JSONStream": "^1.3.5", "analytics-node": "3.3.0", - "ansi-escapes": "^4.1.0", + "ansi-escapes": "^4.2.1", "archiver": "^3.0.0", "async-exit-hook": "^2.0.1", "async-lock": "^1.2.0",