mirror of
https://github.com/oven-sh/setup-bun.git
synced 2025-02-23 10:40:10 +08:00
* Do not save cache on hit * Support Windows (canary only) * Support `registry-url` and `scope`
51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
import { EOL } from "node:os";
|
|
import { appendFileSync } from "node:fs";
|
|
import { info } from "@actions/core";
|
|
|
|
type BunfigOptions = {
|
|
registryUrl?: string;
|
|
scope?: string;
|
|
};
|
|
|
|
export function createBunfig(options: BunfigOptions): string | null {
|
|
const { registryUrl, scope } = options;
|
|
|
|
let url: URL | undefined;
|
|
if (registryUrl) {
|
|
try {
|
|
url = new URL(registryUrl);
|
|
} catch {
|
|
throw new Error(`Invalid registry-url: ${registryUrl}`);
|
|
}
|
|
}
|
|
|
|
let owner: string | undefined;
|
|
if (scope) {
|
|
owner = scope.startsWith("@")
|
|
? scope.toLocaleLowerCase()
|
|
: `@${scope.toLocaleLowerCase()}`;
|
|
}
|
|
|
|
if (url && owner) {
|
|
return `[install.scopes]${EOL}'${owner}' = { token = "$BUN_AUTH_TOKEN", url = "${url}"}${EOL}`;
|
|
}
|
|
|
|
if (url && !owner) {
|
|
return `[install]${EOL}registry = "${url}"${EOL}`;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
export function writeBunfig(path: string, options: BunfigOptions): void {
|
|
const bunfig = createBunfig(options);
|
|
if (!bunfig) {
|
|
return;
|
|
}
|
|
|
|
info(`Writing bunfig.toml to '${path}'.`);
|
|
appendFileSync(path, bunfig, {
|
|
encoding: "utf8",
|
|
});
|
|
}
|