feat: make packageManager from package.json the default bun version
Co-authored-by: xhyrom <56601352+xhyrom@users.noreply.github.com>
This commit is contained in:
parent
45a543cc37
commit
c9d9f20ae5
216
dist/cache-save/index.js
generated
vendored
216
dist/cache-save/index.js
generated
vendored
File diff suppressed because one or more lines are too long
306
dist/setup/index.js
generated
vendored
306
dist/setup/index.js
generated
vendored
File diff suppressed because one or more lines are too long
5
package-lock.json
generated
5
package-lock.json
generated
@ -6,7 +6,7 @@
|
|||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "setup-bun",
|
"name": "setup-bun",
|
||||||
"version": "2.0.2",
|
"version": "2.1.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^4.0.0",
|
"@actions/cache": "^4.0.0",
|
||||||
@ -15,7 +15,8 @@
|
|||||||
"@actions/glob": "^0.4.0",
|
"@actions/glob": "^0.4.0",
|
||||||
"@actions/io": "^1.1.2",
|
"@actions/io": "^1.1.2",
|
||||||
"@actions/tool-cache": "^2.0.1",
|
"@actions/tool-cache": "^2.0.1",
|
||||||
"@iarna/toml": "^2.2.5"
|
"@iarna/toml": "^2.2.5",
|
||||||
|
"compare-versions": "^6.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bun": "^1.1.13",
|
"@types/bun": "^1.1.13",
|
||||||
|
|||||||
@ -26,6 +26,7 @@ runAction({
|
|||||||
version:
|
version:
|
||||||
getInput("bun-version") ||
|
getInput("bun-version") ||
|
||||||
readVersionFromFile(getInput("bun-version-file")) ||
|
readVersionFromFile(getInput("bun-version-file")) ||
|
||||||
|
readVersionFromFile("package.json", true) ||
|
||||||
undefined,
|
undefined,
|
||||||
customUrl: getInput("bun-download-url") || undefined,
|
customUrl: getInput("bun-download-url") || undefined,
|
||||||
registries: registries,
|
registries: registries,
|
||||||
|
|||||||
14
src/utils.ts
14
src/utils.ts
@ -60,7 +60,7 @@ const FILE_VERSION_READERS = {
|
|||||||
".bun-version": (content: string) => content,
|
".bun-version": (content: string) => content,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function readVersionFromFile(file: string): string | undefined {
|
export function readVersionFromFile(file: string, silent = false): string | undefined {
|
||||||
const cwd = process.env.GITHUB_WORKSPACE;
|
const cwd = process.env.GITHUB_WORKSPACE;
|
||||||
if (!cwd) {
|
if (!cwd) {
|
||||||
return;
|
return;
|
||||||
@ -76,7 +76,9 @@ export function readVersionFromFile(file: string): string | undefined {
|
|||||||
const base = basename(file);
|
const base = basename(file);
|
||||||
|
|
||||||
if (!existsSync(path)) {
|
if (!existsSync(path)) {
|
||||||
warning(`File ${path} not found`);
|
if (!silent) {
|
||||||
|
warning(`File ${path} not found`);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,12 +89,16 @@ export function readVersionFromFile(file: string): string | undefined {
|
|||||||
output = reader(readFileSync(path, "utf8"))?.trim();
|
output = reader(readFileSync(path, "utf8"))?.trim();
|
||||||
|
|
||||||
if (!output) {
|
if (!output) {
|
||||||
warning(`Failed to read version from ${file}`);
|
if (!silent) {
|
||||||
|
warning(`Failed to read version from ${file}`);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const { message } = error as Error;
|
const { message } = error as Error;
|
||||||
warning(`Failed to read ${file}: ${message}`);
|
if (!silent) {
|
||||||
|
warning(`Failed to read ${file}: ${message}`);
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if (output) {
|
if (output) {
|
||||||
info(`Obtained version ${output} from ${file}`);
|
info(`Obtained version ${output} from ${file}`);
|
||||||
|
|||||||
117
tests/utils.spec.ts
Normal file
117
tests/utils.spec.ts
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
import { describe, expect, it, beforeEach, afterEach } from "bun:test";
|
||||||
|
import { existsSync, mkdirSync, writeFileSync, unlinkSync, rmdirSync } from "node:fs";
|
||||||
|
import { readVersionFromFile } from "../src/utils";
|
||||||
|
import { resolve } from "node:path";
|
||||||
|
|
||||||
|
describe("readVersionFromFile", () => {
|
||||||
|
const testDir = "/tmp/setup-bun-tests";
|
||||||
|
const originalWorkspace = process.env.GITHUB_WORKSPACE;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
// Set up test directory
|
||||||
|
if (!existsSync(testDir)) {
|
||||||
|
mkdirSync(testDir, { recursive: true });
|
||||||
|
}
|
||||||
|
process.env.GITHUB_WORKSPACE = testDir;
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
// Clean up test directory
|
||||||
|
try {
|
||||||
|
const files = ["package.json", ".bun-version", ".tool-versions", ".bumrc"];
|
||||||
|
files.forEach((file) => {
|
||||||
|
const path = resolve(testDir, file);
|
||||||
|
if (existsSync(path)) {
|
||||||
|
unlinkSync(path);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error cleaning up test files:", error);
|
||||||
|
}
|
||||||
|
process.env.GITHUB_WORKSPACE = originalWorkspace;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("package.json with packageManager field", () => {
|
||||||
|
it("should read version from packageManager field", () => {
|
||||||
|
const packageJson = {
|
||||||
|
name: "test",
|
||||||
|
packageManager: "bun@1.0.25",
|
||||||
|
};
|
||||||
|
writeFileSync(
|
||||||
|
resolve(testDir, "package.json"),
|
||||||
|
JSON.stringify(packageJson, null, 2)
|
||||||
|
);
|
||||||
|
|
||||||
|
const version = readVersionFromFile("package.json");
|
||||||
|
expect(version).toBe("1.0.25");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should fallback to engines.bun when packageManager doesn't exist", () => {
|
||||||
|
const packageJson = {
|
||||||
|
name: "test",
|
||||||
|
engines: {
|
||||||
|
bun: ">=1.0.0",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
writeFileSync(
|
||||||
|
resolve(testDir, "package.json"),
|
||||||
|
JSON.stringify(packageJson, null, 2)
|
||||||
|
);
|
||||||
|
|
||||||
|
const version = readVersionFromFile("package.json");
|
||||||
|
expect(version).toBe(">=1.0.0");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return undefined when neither packageManager nor engines.bun exist (with warning)", () => {
|
||||||
|
const packageJson = {
|
||||||
|
name: "test",
|
||||||
|
};
|
||||||
|
writeFileSync(
|
||||||
|
resolve(testDir, "package.json"),
|
||||||
|
JSON.stringify(packageJson, null, 2)
|
||||||
|
);
|
||||||
|
|
||||||
|
const version = readVersionFromFile("package.json");
|
||||||
|
expect(version).toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("silent mode", () => {
|
||||||
|
it("should not warn when file doesn't exist and silent is true", () => {
|
||||||
|
// This should not produce a warning
|
||||||
|
const version = readVersionFromFile("package.json", true);
|
||||||
|
expect(version).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not warn when version cannot be read and silent is true", () => {
|
||||||
|
const packageJson = {
|
||||||
|
name: "test",
|
||||||
|
};
|
||||||
|
writeFileSync(
|
||||||
|
resolve(testDir, "package.json"),
|
||||||
|
JSON.stringify(packageJson, null, 2)
|
||||||
|
);
|
||||||
|
|
||||||
|
const version = readVersionFromFile("package.json", true);
|
||||||
|
expect(version).toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe(".bun-version file", () => {
|
||||||
|
it("should read version from .bun-version file", () => {
|
||||||
|
writeFileSync(resolve(testDir, ".bun-version"), "1.0.20");
|
||||||
|
|
||||||
|
const version = readVersionFromFile(".bun-version");
|
||||||
|
expect(version).toBe("1.0.20");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe(".tool-versions file", () => {
|
||||||
|
it("should read bun version from .tool-versions file", () => {
|
||||||
|
writeFileSync(resolve(testDir, ".tool-versions"), "nodejs 18.0.0\nbun 1.0.15\npython 3.9.0");
|
||||||
|
|
||||||
|
const version = readVersionFromFile(".tool-versions");
|
||||||
|
expect(version).toBe("1.0.15");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
x
Reference in New Issue
Block a user