72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
import { execFile } from "node:child_process";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { promisify } from "node:util";
|
|
|
|
import { resolveReleaseVersion } from "../release-version.mjs";
|
|
import { uploadReleaseAssets } from "./upload-release-assets.mjs";
|
|
|
|
const execFileAsync = promisify(execFile);
|
|
|
|
export async function runReleaseTagPipeline(env = process.env) {
|
|
const projectRoot = resolveProjectRoot();
|
|
const releaseVersion = resolveReleaseVersion(env);
|
|
const publicBaseUrl =
|
|
env.UPDATE_PUBLIC_BASE_URL ??
|
|
`https://wksgx-1343191620.cos.ap-nanjing.myqcloud.com/star-chart-search-enhancer/releases/${releaseVersion}`;
|
|
|
|
console.log(`release version: ${releaseVersion}`);
|
|
console.log("running build:release");
|
|
await runNpmScript("build:release", projectRoot, {
|
|
...env,
|
|
EXTENSION_VERSION: releaseVersion
|
|
});
|
|
|
|
console.log("running package-release");
|
|
await runNodeScript("scripts/package-release.mjs", projectRoot, {
|
|
...env,
|
|
EXTENSION_VERSION: releaseVersion
|
|
});
|
|
|
|
console.log("writing latest manifest");
|
|
await runNpmScript("write:latest", projectRoot, {
|
|
...env,
|
|
EXTENSION_VERSION: releaseVersion,
|
|
UPDATE_PUBLIC_BASE_URL: publicBaseUrl
|
|
});
|
|
|
|
console.log("uploading release assets to COS");
|
|
await uploadReleaseAssets({
|
|
env: {
|
|
...env,
|
|
EXTENSION_VERSION: releaseVersion
|
|
},
|
|
projectRoot,
|
|
releaseVersion
|
|
});
|
|
}
|
|
|
|
async function runNpmScript(scriptName, cwd, env) {
|
|
await execFileAsync("npm", ["run", scriptName], {
|
|
cwd,
|
|
env,
|
|
stdio: "inherit"
|
|
});
|
|
}
|
|
|
|
async function runNodeScript(scriptPath, cwd, env) {
|
|
await execFileAsync("node", [scriptPath], {
|
|
cwd,
|
|
env,
|
|
stdio: "inherit"
|
|
});
|
|
}
|
|
|
|
function resolveProjectRoot() {
|
|
return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
|
|
}
|
|
|
|
if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
await runReleaseTagPipeline();
|
|
}
|