()
| 31 | }); |
| 32 | |
| 33 | async execute() { |
| 34 | const [descriptor] = await this.resolvePatternsToDescriptors({ |
| 35 | patterns: [], |
| 36 | }); |
| 37 | |
| 38 | if (!semverValid(descriptor.range) && !semverValidRange(descriptor.range)) |
| 39 | throw new UsageError(`The 'corepack up' command can only be used when your project's packageManager field is set to a semver version or semver range`); |
| 40 | |
| 41 | const resolved = await this.context.engine.resolveDescriptor(descriptor, {useCache: false}); |
| 42 | if (!resolved) |
| 43 | throw new UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`); |
| 44 | |
| 45 | const majorVersion = semverMajor(resolved.reference); |
| 46 | const majorDescriptor = {name: descriptor.name as SupportedPackageManagers, range: `^${majorVersion}.0.0`}; |
| 47 | |
| 48 | const highestVersion = await this.context.engine.resolveDescriptor(majorDescriptor, {useCache: false}); |
| 49 | if (!highestVersion) |
| 50 | throw new UsageError(`Failed to find the highest release for ${descriptor.name} ${majorVersion}.x`); |
| 51 | |
| 52 | this.context.stdout.write(`Installing ${highestVersion.name}@${highestVersion.reference} in the project...\n`); |
| 53 | |
| 54 | const packageManagerInfo = await this.context.engine.ensurePackageManager(highestVersion); |
| 55 | await this.setAndInstallLocalPackageManager(packageManagerInfo); |
| 56 | } |
| 57 | } |
nothing calls this directly
no test coverage detected