Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: remove --all flag #351

Merged
merged 7 commits into from
Feb 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 2 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,6 @@ The utility commands detailed in the next section.
case you'll simply run `corepack pack` to make sure that your image
includes the Last Known Good release for the specified package manager.

- If you want to have _all_ Last Known Good releases for all package managers,
just use the `--all` flag which will do just that.

- Or you're publishing your project to a system where the network is
unavailable, in which case you'll preemptively generate a package manager
archive from your local computer (using `corepack pack -o`) before storing
Expand Down Expand Up @@ -177,23 +174,18 @@ This command doesn't change the global version used when running the package
manager from outside the project (use the \`-g,--global\` flag if you wish
to do this).

### `corepack install <-g,--global> [--all] [... name[@<version>]]`

| Option | Description |
| --------------------- | ------------------------------------------ |
| `--all` | Install all Last Known Good releases |
### `corepack install <-g,--global> [... name[@<version>]]`

Install the selected package managers and install them on the system.

Package managers thus installed will be configured as the new default when
calling their respective binaries outside of projects defining the
`packageManager` field.

### `corepack pack [--all] [... name[@<version>]]`
### `corepack pack [... name[@<version>]]`

| Option | Description |
| --------------------- | ------------------------------------------ |
| `--all` | Pack all Last Known Good releases |
| `--json ` | Print the output folder rather than logs |
| `-o,--output ` | Path where to generate the archive |

Expand Down
9 changes: 2 additions & 7 deletions sources/commands/Base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,8 @@ import * as nodeUtils from '../nodeUtils';
import * as specUtils from '../specUtils';

export abstract class BaseCommand extends Command<Context> {
async resolvePatternsToDescriptors({all, patterns}: {all: boolean, patterns: Array<string>}) {
if (all && patterns.length > 0)
throw new UsageError(`The --all option cannot be used along with an explicit package manager specification`);

const resolvedSpecs = all
? await this.context.engine.getDefaultDescriptors()
: patterns.map(pattern => specUtils.parseSpec(pattern, `CLI arguments`, {enforceExactVersion: false}));
async resolvePatternsToDescriptors({patterns}: {patterns: Array<string>}) {
const resolvedSpecs = patterns.map(pattern => specUtils.parseSpec(pattern, `CLI arguments`, {enforceExactVersion: false}));

if (resolvedSpecs.length === 0) {
const lookup = await specUtils.loadSpec(this.context.cwd);
Expand Down
30 changes: 10 additions & 20 deletions sources/commands/InstallGlobal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,40 +24,30 @@ export class InstallGlobalCommand extends BaseCommand {
`Install the latest version of Yarn 1.x and make it globally available`,
`corepack install -g yarn@^1`,
], [
`Install the latest version of all available package managers, and make them globally available`,
`corepack install -g --all`,
`Install the latest version of pnpm, and make it globally available`,
`corepack install -g pnpm`,
]],
});

global = Option.Boolean(`-g,--global`, {
required: true,
});

all = Option.Boolean(`--all`, false, {
description: `If true, all available default package managers will be installed`,
});

cacheOnly = Option.Boolean(`--cache-only`, false, {
description: `If true, the package managers will only be cached, not set as new defaults`,
});

args = Option.Rest();

async execute() {
if (this.args.length === 0 && !this.all)
throw new UsageError(`No package managers specified; use --all to install all available package managers, or specify one or more package managers to proceed`);

if (!this.all) {
for (const arg of this.args) {
if (arg.endsWith(`.tgz`)) {
await this.installFromTarball(path.resolve(this.context.cwd, arg));
} else {
await this.installFromDescriptor(specUtils.parseSpec(arg, `CLI arguments`, {enforceExactVersion: false}));
}
}
} else {
for (const descriptor of await this.context.engine.getDefaultDescriptors()) {
await this.installFromDescriptor(descriptor);
if (this.args.length === 0)
throw new UsageError(`No package managers specified`);

for (const arg of this.args) {
if (arg.endsWith(`.tgz`)) {
await this.installFromTarball(path.resolve(this.context.cwd, arg));
} else {
await this.installFromDescriptor(specUtils.parseSpec(arg, `CLI arguments`, {enforceExactVersion: false}));
}
}
}
Expand Down
1 change: 0 additions & 1 deletion sources/commands/InstallLocal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ export class InstallLocalCommand extends BaseCommand {

async execute() {
const [descriptor] = await this.resolvePatternsToDescriptors({
all: false,
patterns: [],
});

Expand Down
8 changes: 0 additions & 8 deletions sources/commands/Pack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,9 @@ export class PackCommand extends BaseCommand {
], [
`Pack the latest version of Yarn 1.x inside a file named corepack.tgz`,
`corepack pack yarn@^1`,
], [
`Pack the latest versions of all supported package managers inside a file named everything.tgz`,
`corepack pack --all -o everything.tgz`,
]],
});

all = Option.Boolean(`--all`, false, {
description: `If true, all available default package managers will be installed`,
});

json = Option.Boolean(`--json`, false, {
description: `If true, the path to the generated tarball will be printed on stdout`,
});
Expand All @@ -44,7 +37,6 @@ export class PackCommand extends BaseCommand {

async execute() {
const descriptors = await this.resolvePatternsToDescriptors({
all: this.all,
patterns: this.patterns,
});

Expand Down
1 change: 0 additions & 1 deletion sources/commands/Up.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ export class UpCommand extends BaseCommand {

async execute() {
const [descriptor] = await this.resolvePatternsToDescriptors({
all: false,
patterns: [],
});

Expand Down
1 change: 0 additions & 1 deletion sources/commands/Use.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ export class UseCommand extends BaseCommand {

async execute() {
const [descriptor] = await this.resolvePatternsToDescriptors({
all: false,
patterns: [this.pattern],
});

Expand Down
11 changes: 1 addition & 10 deletions sources/commands/deprecated/Prepare.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@ export class PrepareCommand extends Command<Context> {
description: `If true, this release will become the default one for this package manager`,
});

all = Option.Boolean(`--all`, false, {
description: `If true, all available default package managers will be installed`,
});

json = Option.Boolean(`--json`, false, {
description: `If true, the output will be the path of the generated tarball`,
});
Expand All @@ -32,12 +28,7 @@ export class PrepareCommand extends Command<Context> {
specs = Option.Rest();

async execute() {
if (this.all && this.specs.length > 0)
throw new UsageError(`The --all option cannot be used along with an explicit package manager specification`);

const specs: Array<string | Descriptor> = this.all
? await this.context.engine.getDefaultDescriptors()
: this.specs;
const specs: Array<string | Descriptor> = this.specs;

const installLocations: Array<string> = [];

Expand Down
33 changes: 0 additions & 33 deletions tests/main.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -403,39 +403,6 @@ it(`should always use fallback version when project spec env is disabled`, async
});
});

it(`should allow to call "corepack install -g --all" to prepare all package managers`, async () => {
await xfs.mktempPromise(async cwd => {
await xfs.writeJsonPromise(ppath.join(cwd, `package.json` as Filename), {
// empty package.json file
});

await expect(runCli(cwd, [`install`, `-g`, `--all`])).resolves.toMatchObject({
exitCode: 0,
stderr: ``,
});

process.env.COREPACK_ENABLE_NETWORK = `0`;

await expect(runCli(cwd, [`yarn`, `--version`])).resolves.toMatchObject({
stdout: `${config.definitions.yarn.default.split(`+`, 1)[0]}\n`,
stderr: ``,
exitCode: 0,
});

await expect(runCli(cwd, [`pnpm`, `--version`])).resolves.toMatchObject({
stdout: `${config.definitions.pnpm.default.split(`+`, 1)[0]}\n`,
stderr: ``,
exitCode: 0,
});

await expect(runCli(cwd, [`npm`, `--version`])).resolves.toMatchObject({
stdout: `${config.definitions.npm.default.split(`+`, 1)[0]}\n`,
stderr: ``,
exitCode: 0,
});
});
});

it(`should support disabling the network accesses from the environment`, async () => {
process.env.COREPACK_ENABLE_NETWORK = `0`;

Expand Down
1 change: 0 additions & 1 deletion tests/nock/VurwVdvlR5Rs7xQVs9UCVw-1.dat

This file was deleted.