Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: antfu-collective/ni
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.21.7
Choose a base ref
...
head repository: antfu-collective/ni
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.21.8
Choose a head ref
  • 2 commits
  • 4 files changed
  • 1 contributor

Commits on Sep 1, 2023

  1. Copy the full SHA
    7a16514 View commit details
  2. chore: release v0.21.8

    antfu committed Sep 1, 2023
    Copy the full SHA
    0e7a95a View commit details
Showing with 54 additions and 50 deletions.
  1. +1 −1 package.json
  2. +4 −2 src/runner.ts
  3. +38 −38 test/programmatic/__snapshots__/runCli.spec.ts.snap
  4. +11 −9 test/programmatic/runCli.spec.ts
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@antfu/ni",
"type": "module",
"version": "0.21.7",
"version": "0.21.8",
"packageManager": "pnpm@8.6.12",
"description": "Use the right package manager",
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
6 changes: 4 additions & 2 deletions src/runner.ts
Original file line number Diff line number Diff line change
@@ -24,8 +24,10 @@ export interface RunnerContext {

export type Runner = (agent: Agent, args: string[], ctx?: RunnerContext) => Promise<string | undefined> | string | undefined

export async function runCli(fn: Runner, options: DetectOptions = {}) {
const args = process.argv.slice(2).filter(Boolean)
export async function runCli(fn: Runner, options: DetectOptions & { args?: string[] } = {}) {
const {
args = process.argv.slice(2).filter(Boolean),
} = options
try {
await run(fn, args, options)
}
76 changes: 38 additions & 38 deletions test/programmatic/__snapshots__/runCli.spec.ts.snap
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ exports[`lockfile > bun > na run foo 1`] = `"bun run foo"`;

exports[`lockfile > bun > ni --frozen 1`] = `"bun install --no-save"`;

exports[`lockfile > bun > ni -g foo 1`] = `"bun add -g foo"`;
exports[`lockfile > bun > ni -g foo 1`] = `"npm i -g foo"`;

exports[`lockfile > bun > ni 1`] = `"bun install"`;

@@ -20,7 +20,7 @@ exports[`lockfile > bun > nu -i 1`] = `"bun update"`;

exports[`lockfile > bun > nu 1`] = `"bun update"`;

exports[`lockfile > bun > nun -g foo 1`] = `"bun remove -g foo"`;
exports[`lockfile > bun > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`lockfile > bun > nun foo 1`] = `"bun remove foo"`;

@@ -54,7 +54,7 @@ exports[`lockfile > pnpm > na run foo 1`] = `"pnpm run foo"`;

exports[`lockfile > pnpm > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;

exports[`lockfile > pnpm > ni -g foo 1`] = `"pnpm add -g foo"`;
exports[`lockfile > pnpm > ni -g foo 1`] = `"npm i -g foo"`;

exports[`lockfile > pnpm > ni 1`] = `"pnpm i"`;

@@ -68,7 +68,7 @@ exports[`lockfile > pnpm > nu -i 1`] = `"pnpm update -i"`;

exports[`lockfile > pnpm > nu 1`] = `"pnpm update"`;

exports[`lockfile > pnpm > nun -g foo 1`] = `"pnpm remove --global foo"`;
exports[`lockfile > pnpm > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`lockfile > pnpm > nun foo 1`] = `"pnpm remove foo"`;

@@ -78,7 +78,7 @@ exports[`lockfile > pnpm@6 > na run foo 1`] = `"pnpm run foo"`;

exports[`lockfile > pnpm@6 > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;

exports[`lockfile > pnpm@6 > ni -g foo 1`] = `"pnpm add -g foo"`;
exports[`lockfile > pnpm@6 > ni -g foo 1`] = `"npm i -g foo"`;

exports[`lockfile > pnpm@6 > ni 1`] = `"pnpm i"`;

@@ -92,41 +92,41 @@ exports[`lockfile > pnpm@6 > nu -i 1`] = `"pnpm update -i"`;

exports[`lockfile > pnpm@6 > nu 1`] = `"pnpm update"`;

exports[`lockfile > pnpm@6 > nun -g foo 1`] = `"pnpm remove --global foo"`;
exports[`lockfile > pnpm@6 > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`lockfile > pnpm@6 > nun foo 1`] = `"pnpm remove foo"`;

exports[`lockfile > unknown > na 1`] = `"npm"`;
exports[`lockfile > unknown > na 1`] = `"pnpm"`;

exports[`lockfile > unknown > na run foo 1`] = `"npm run foo"`;
exports[`lockfile > unknown > na run foo 1`] = `"pnpm run foo"`;

exports[`lockfile > unknown > ni --frozen 1`] = `"npm ci"`;
exports[`lockfile > unknown > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;

exports[`lockfile > unknown > ni -g foo 1`] = `"npm i -g foo"`;

exports[`lockfile > unknown > ni 1`] = `"npm i"`;
exports[`lockfile > unknown > ni 1`] = `"pnpm i"`;

exports[`lockfile > unknown > ni foo -D 1`] = `"npm i foo -D"`;
exports[`lockfile > unknown > ni foo -D 1`] = `"pnpm add foo -D"`;

exports[`lockfile > unknown > ni foo 1`] = `"npm i foo"`;
exports[`lockfile > unknown > ni foo 1`] = `"pnpm add foo"`;

exports[`lockfile > unknown > nlx 1`] = `"npx foo"`;
exports[`lockfile > unknown > nlx 1`] = `"pnpm dlx foo"`;

exports[`lockfile > unknown > nu -i 1`] = `"Command \\"upgrade-interactive\\" is not support by agent \\"npm\\""`;
exports[`lockfile > unknown > nu -i 1`] = `"pnpm update -i"`;

exports[`lockfile > unknown > nu 1`] = `"npm update"`;
exports[`lockfile > unknown > nu 1`] = `"pnpm update"`;

exports[`lockfile > unknown > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`lockfile > unknown > nun foo 1`] = `"npm uninstall foo"`;
exports[`lockfile > unknown > nun foo 1`] = `"pnpm remove foo"`;

exports[`lockfile > yarn > na 1`] = `"yarn"`;

exports[`lockfile > yarn > na run foo 1`] = `"yarn run foo"`;

exports[`lockfile > yarn > ni --frozen 1`] = `"yarn install --frozen-lockfile"`;

exports[`lockfile > yarn > ni -g foo 1`] = `"yarn global add foo"`;
exports[`lockfile > yarn > ni -g foo 1`] = `"npm i -g foo"`;

exports[`lockfile > yarn > ni 1`] = `"yarn install"`;

@@ -140,7 +140,7 @@ exports[`lockfile > yarn > nu -i 1`] = `"yarn upgrade-interactive"`;

exports[`lockfile > yarn > nu 1`] = `"yarn upgrade"`;

exports[`lockfile > yarn > nun -g foo 1`] = `"yarn global remove foo"`;
exports[`lockfile > yarn > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`lockfile > yarn > nun foo 1`] = `"yarn remove foo"`;

@@ -150,7 +150,7 @@ exports[`lockfile > yarn@berry > na run foo 1`] = `"yarn run foo"`;

exports[`lockfile > yarn@berry > ni --frozen 1`] = `"yarn install --frozen-lockfile"`;

exports[`lockfile > yarn@berry > ni -g foo 1`] = `"yarn global add foo"`;
exports[`lockfile > yarn@berry > ni -g foo 1`] = `"npm i -g foo"`;

exports[`lockfile > yarn@berry > ni 1`] = `"yarn install"`;

@@ -164,7 +164,7 @@ exports[`lockfile > yarn@berry > nu -i 1`] = `"yarn upgrade-interactive"`;

exports[`lockfile > yarn@berry > nu 1`] = `"yarn upgrade"`;

exports[`lockfile > yarn@berry > nun -g foo 1`] = `"yarn global remove foo"`;
exports[`lockfile > yarn@berry > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`lockfile > yarn@berry > nun foo 1`] = `"yarn remove foo"`;

@@ -174,7 +174,7 @@ exports[`packager > bun > na run foo 1`] = `"bun run foo"`;

exports[`packager > bun > ni --frozen 1`] = `"bun install --no-save"`;

exports[`packager > bun > ni -g foo 1`] = `"bun add -g foo"`;
exports[`packager > bun > ni -g foo 1`] = `"npm i -g foo"`;

exports[`packager > bun > ni 1`] = `"bun install"`;

@@ -188,7 +188,7 @@ exports[`packager > bun > nu -i 1`] = `"bun update"`;

exports[`packager > bun > nu 1`] = `"bun update"`;

exports[`packager > bun > nun -g foo 1`] = `"bun remove -g foo"`;
exports[`packager > bun > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`packager > bun > nun foo 1`] = `"bun remove foo"`;

@@ -222,7 +222,7 @@ exports[`packager > pnpm > na run foo 1`] = `"pnpm run foo"`;

exports[`packager > pnpm > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;

exports[`packager > pnpm > ni -g foo 1`] = `"pnpm add -g foo"`;
exports[`packager > pnpm > ni -g foo 1`] = `"npm i -g foo"`;

exports[`packager > pnpm > ni 1`] = `"pnpm i"`;

@@ -236,7 +236,7 @@ exports[`packager > pnpm > nu -i 1`] = `"pnpm update -i"`;

exports[`packager > pnpm > nu 1`] = `"pnpm update"`;

exports[`packager > pnpm > nun -g foo 1`] = `"pnpm remove --global foo"`;
exports[`packager > pnpm > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`packager > pnpm > nun foo 1`] = `"pnpm remove foo"`;

@@ -246,7 +246,7 @@ exports[`packager > pnpm@6 > na run foo 1`] = `"pnpm run foo"`;

exports[`packager > pnpm@6 > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;

exports[`packager > pnpm@6 > ni -g foo 1`] = `"pnpm add -g foo"`;
exports[`packager > pnpm@6 > ni -g foo 1`] = `"npm i -g foo"`;

exports[`packager > pnpm@6 > ni 1`] = `"pnpm i"`;

@@ -260,41 +260,41 @@ exports[`packager > pnpm@6 > nu -i 1`] = `"pnpm update -i"`;

exports[`packager > pnpm@6 > nu 1`] = `"pnpm update"`;

exports[`packager > pnpm@6 > nun -g foo 1`] = `"pnpm remove --global foo"`;
exports[`packager > pnpm@6 > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`packager > pnpm@6 > nun foo 1`] = `"pnpm remove foo"`;

exports[`packager > unknown > na 1`] = `"npm"`;
exports[`packager > unknown > na 1`] = `"pnpm"`;

exports[`packager > unknown > na run foo 1`] = `"npm run foo"`;
exports[`packager > unknown > na run foo 1`] = `"pnpm run foo"`;

exports[`packager > unknown > ni --frozen 1`] = `"npm ci"`;
exports[`packager > unknown > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;

exports[`packager > unknown > ni -g foo 1`] = `"npm i -g foo"`;

exports[`packager > unknown > ni 1`] = `"npm i"`;
exports[`packager > unknown > ni 1`] = `"pnpm i"`;

exports[`packager > unknown > ni foo -D 1`] = `"npm i foo -D"`;
exports[`packager > unknown > ni foo -D 1`] = `"pnpm add foo -D"`;

exports[`packager > unknown > ni foo 1`] = `"npm i foo"`;
exports[`packager > unknown > ni foo 1`] = `"pnpm add foo"`;

exports[`packager > unknown > nlx 1`] = `"npx foo"`;
exports[`packager > unknown > nlx 1`] = `"pnpm dlx foo"`;

exports[`packager > unknown > nu -i 1`] = `"Command \\"upgrade-interactive\\" is not support by agent \\"npm\\""`;
exports[`packager > unknown > nu -i 1`] = `"pnpm update -i"`;

exports[`packager > unknown > nu 1`] = `"npm update"`;
exports[`packager > unknown > nu 1`] = `"pnpm update"`;

exports[`packager > unknown > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`packager > unknown > nun foo 1`] = `"npm uninstall foo"`;
exports[`packager > unknown > nun foo 1`] = `"pnpm remove foo"`;

exports[`packager > yarn > na 1`] = `"yarn"`;

exports[`packager > yarn > na run foo 1`] = `"yarn run foo"`;

exports[`packager > yarn > ni --frozen 1`] = `"yarn install --frozen-lockfile"`;

exports[`packager > yarn > ni -g foo 1`] = `"yarn global add foo"`;
exports[`packager > yarn > ni -g foo 1`] = `"npm i -g foo"`;

exports[`packager > yarn > ni 1`] = `"yarn install"`;

@@ -308,7 +308,7 @@ exports[`packager > yarn > nu -i 1`] = `"yarn upgrade-interactive"`;

exports[`packager > yarn > nu 1`] = `"yarn upgrade"`;

exports[`packager > yarn > nun -g foo 1`] = `"yarn global remove foo"`;
exports[`packager > yarn > nun -g foo 1`] = `"npm uninstall -g foo"`;

exports[`packager > yarn > nun foo 1`] = `"yarn remove foo"`;

20 changes: 11 additions & 9 deletions test/programmatic/runCli.spec.ts
Original file line number Diff line number Diff line change
@@ -15,17 +15,19 @@ function runCliTest(fixtureName: string, agent: string, runner: Runner, args: st
const fixture = path.join(__dirname, '..', 'fixtures', fixtureName, agent)
await fs.copy(fixture, cwd)

await runCli(async (agent, _, ctx) => {
// we override the args to be test specific
return runner(agent, args, ctx)
}, {
programmatic: true,
cwd,
}).catch((e) => {
// it will always throw if execa is mocked
await runCli(
async (agent, _, ctx) => {
// we override the args to be test specific
return runner(agent, args, ctx)
}, {
programmatic: true,
cwd,
args,
},
).catch((e) => {
// it will always throw if execa is mocked
if (e.command)
expect(e.command).toMatchSnapshot()

else
expect(e.message).toMatchSnapshot()
})