Invoke wrangler to check if it's installed, but don't auto-install through npx/bunx

This commit is contained in:
Maximo Guk 2024-06-15 23:22:47 -05:00
parent aa5d18dd1e
commit 66efca2cbb
No known key found for this signature in database
GPG key ID: 6ACC2847315F8810
5 changed files with 52 additions and 32 deletions

View file

@ -0,0 +1,5 @@
---
"wrangler-action": minor
---
This unreverts #235 ensuring wrangler-action will re-use existing wrangler installations, thanks @AdiRishi! and ensures we don't automatically install wrangler when checking if it present

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "wrangler-action",
"version": "3.5.0",
"version": "3.6.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "wrangler-action",
"version": "3.5.0",
"version": "3.6.1",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@actions/core": "^1.10.1",

View file

@ -90,7 +90,8 @@ async function installWrangler() {
let installedVersionSatisfiesRequirement = false;
try {
const { stdout } = await getExecOutput(
packageManager.exec,
// We want to simply invoke wrangler to check if it's installed, but don't want to auto-install it at this stage
packageManager.execNoInstall,
["wrangler", "--version"],
{
cwd: config["workingDirectory"],

View file

@ -7,6 +7,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "npx",
"execNoInstall": "npx --no-install",
"install": "npm i",
}
`);
@ -15,6 +16,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "yarn",
"execNoInstall": "yarn",
"install": "yarn add",
}
`);
@ -23,6 +25,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "pnpm exec",
"execNoInstall": "pnpm exec",
"install": "pnpm add",
}
`);
@ -31,6 +34,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "bunx",
"execNoInstall": "bun run",
"install": "bun i",
}
`);
@ -41,6 +45,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "npx",
"execNoInstall": "npx --no-install",
"install": "npm i",
}
`);
@ -51,6 +56,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "yarn",
"execNoInstall": "yarn",
"install": "yarn add",
}
`);
@ -61,6 +67,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "pnpm exec",
"execNoInstall": "pnpm exec",
"install": "pnpm add",
}
`);
@ -71,6 +78,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "bunx",
"execNoInstall": "bun run",
"install": "bun i",
}
`);
@ -81,6 +89,7 @@ describe("getPackageManager", () => {
.toMatchInlineSnapshot(`
{
"exec": "npx",
"execNoInstall": "npx --no-install",
"install": "npm i",
}
`);

View file

@ -4,24 +4,29 @@ import * as path from "node:path";
interface PackageManager {
install: string;
exec: string;
execNoInstall: string;
}
const PACKAGE_MANAGERS = {
npm: {
install: "npm i",
exec: "npx",
execNoInstall: "npx --no-install",
},
yarn: {
install: "yarn add",
exec: "yarn",
execNoInstall: "yarn",
},
pnpm: {
install: "pnpm add",
exec: "pnpm exec",
execNoInstall: "pnpm exec",
},
bun: {
install: "bun i",
exec: "bunx",
execNoInstall: "bun run",
},
} as const satisfies Readonly<Record<string, PackageManager>>;