mirror of
https://github.com/changesets/action
synced 2026-10-26 16:39:56 +08:00
Add select-mode, version, pack and publish sub-actions (#656)
* Add select-mode, version, and publish sub-actions * Rename * No github-token needed for select-mode for now * extend select-mode with publish-plan check and upload * Rename base-branch to pr-base-branch * add `pack` subaction * `--from-pack` support in the publish subaction * rename CLI arg * update rolldown config * rename pack dir input/output * tweak retendion days --------- Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
This commit is contained in:
co-authored by
Mateusz Burzyński
parent
5649ff41b8
commit
a12d90de83
@@ -1,6 +1,17 @@
|
||||
import fs from "node:fs/promises";
|
||||
import { createRequire } from "node:module";
|
||||
import path from "node:path";
|
||||
import artifact from "@actions/artifact";
|
||||
import {
|
||||
exec,
|
||||
getExecOutput,
|
||||
type ExecOptions as ActionsExecOptions,
|
||||
type ExecOutput,
|
||||
} from "@actions/exec";
|
||||
import { getPackages, type Package } from "@manypkg/get-packages";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
|
||||
export const BumpLevels = {
|
||||
dep: 0,
|
||||
patch: 1,
|
||||
@@ -111,3 +122,57 @@ export function fileExists(filePath: string) {
|
||||
() => false,
|
||||
);
|
||||
}
|
||||
|
||||
function resolveChangesetsCli(cwd: string) {
|
||||
return require.resolve("@changesets/cli/bin.js", {
|
||||
paths: [cwd],
|
||||
});
|
||||
}
|
||||
|
||||
interface ExecOptions extends Omit<ActionsExecOptions, "env"> {
|
||||
env?: Record<string, string | undefined>;
|
||||
}
|
||||
|
||||
export function execChangesetsCli(args: string[], options?: ExecOptions) {
|
||||
return exec(
|
||||
"node",
|
||||
[resolveChangesetsCli(options?.cwd ?? process.cwd()), ...args],
|
||||
options as ActionsExecOptions,
|
||||
);
|
||||
}
|
||||
|
||||
export function getExecOutputChangesetsCli(
|
||||
args: string[],
|
||||
options?: ExecOptions,
|
||||
): Promise<ExecOutput> {
|
||||
return getExecOutput(
|
||||
"node",
|
||||
[resolveChangesetsCli(options?.cwd ?? process.cwd()), ...args],
|
||||
options as ActionsExecOptions,
|
||||
);
|
||||
}
|
||||
|
||||
export async function downloadArtifact(
|
||||
tmpDir: string,
|
||||
artifactId: number,
|
||||
name: string,
|
||||
) {
|
||||
if (!Number.isInteger(artifactId) || artifactId <= 0) {
|
||||
throw new Error(
|
||||
`Invalid ${JSON.stringify(name)} artifact id: ${artifactId}`,
|
||||
);
|
||||
}
|
||||
|
||||
const downloadPath = path.join(tmpDir, `${name}-${artifactId}-${Date.now()}`);
|
||||
const result = await artifact.downloadArtifact(artifactId, {
|
||||
path: downloadPath,
|
||||
});
|
||||
|
||||
if (!result.downloadPath) {
|
||||
throw new Error(
|
||||
`${JSON.stringify(name)} artifact download did not return a path for artifact ${artifactId}`,
|
||||
);
|
||||
}
|
||||
|
||||
return result.downloadPath;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user