Skip to content

Commit aecb55c

Browse files
committed
Grab the currently installed variant in a few cases.
1 parent 75ecba2 commit aecb55c

9 files changed

+56
-24
lines changed

libraries/rush-lib/src/api/Variants.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,19 @@ export const VARIANT_PARAMETER: ICommandLineStringDefinition = {
1717
environmentVariable: EnvironmentVariableNames.RUSH_VARIANT
1818
};
1919

20-
export function getVariant(
20+
export async function getVariantAsync(
2121
variantsParameter: CommandLineStringParameter,
22-
rushConfiguration: RushConfiguration
23-
): string | undefined {
24-
const variant: string | undefined = variantsParameter.value;
22+
rushConfiguration: RushConfiguration,
23+
defaultToCurrentlyInstalledVariant: boolean
24+
): Promise<string | undefined> {
25+
let variant: string | undefined = variantsParameter.value;
2526
if (variant && !rushConfiguration.variants.has(variant)) {
2627
throw new Error(`The variant "${variant}" is not defined in ${RushConstants.rushJsonFilename}`);
2728
}
2829

30+
if (!variant && defaultToCurrentlyInstalledVariant) {
31+
variant = await rushConfiguration.getCurrentlyInstalledVariantAsync();
32+
}
33+
2934
return variant;
3035
}

libraries/rush-lib/src/cli/actions/AddAction.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
type IPackageJsonUpdaterRushAddOptions,
1818
SemVerStyle
1919
} from '../../logic/PackageJsonUpdaterTypes';
20-
import { getVariant, VARIANT_PARAMETER } from '../../api/Variants';
20+
import { getVariantAsync, VARIANT_PARAMETER } from '../../api/Variants';
2121

2222
export class AddAction extends BaseAddAndRemoveAction {
2323
protected readonly _allFlag: CommandLineFlagParameter;
@@ -94,7 +94,7 @@ export class AddAction extends BaseAddAndRemoveAction {
9494
this._variantParameter = this.defineStringParameter(VARIANT_PARAMETER);
9595
}
9696

97-
public getUpdateOptions(): IPackageJsonUpdaterRushAddOptions {
97+
public async getUpdateOptionsAsync(): Promise<IPackageJsonUpdaterRushAddOptions> {
9898
const projects: RushConfigurationProject[] = super.getProjects();
9999

100100
if (this._caretFlag.value && this._exactFlag.value) {
@@ -157,7 +157,11 @@ export class AddAction extends BaseAddAndRemoveAction {
157157
packagesToAdd.push({ packageName, version, rangeStyle });
158158
}
159159

160-
const variant: string | undefined = getVariant(this._variantParameter, this.rushConfiguration);
160+
const variant: string | undefined = await getVariantAsync(
161+
this._variantParameter,
162+
this.rushConfiguration,
163+
true
164+
);
161165

162166
return {
163167
projects: projects,

libraries/rush-lib/src/cli/actions/BaseAddAndRemoveAction.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export abstract class BaseAddAndRemoveAction extends BaseRushAction {
5454
});
5555
}
5656

57-
protected abstract getUpdateOptions(): IPackageJsonUpdaterRushBaseUpdateOptions;
57+
protected abstract getUpdateOptionsAsync(): Promise<IPackageJsonUpdaterRushBaseUpdateOptions>;
5858

5959
protected getProjects(): RushConfigurationProject[] {
6060
if (this._allFlag.value) {
@@ -83,6 +83,7 @@ export abstract class BaseAddAndRemoveAction extends BaseRushAction {
8383
this.rushGlobalFolder
8484
);
8585

86-
await updater.doRushUpdateAsync(this.getUpdateOptions());
86+
const updateOptions: IPackageJsonUpdaterRushBaseUpdateOptions = await this.getUpdateOptionsAsync();
87+
await updater.doRushUpdateAsync(updateOptions);
8788
}
8889
}

libraries/rush-lib/src/cli/actions/BaseInstallAction.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { RushConstants } from '../../logic/RushConstants';
2323
import { SUBSPACE_LONG_ARG_NAME, type SelectionParameterSet } from '../parsing/SelectionParameterSet';
2424
import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
2525
import type { Subspace } from '../../api/Subspace';
26-
import { getVariant, VARIANT_PARAMETER } from '../../api/Variants';
26+
import { getVariantAsync, VARIANT_PARAMETER } from '../../api/Variants';
2727

2828
/**
2929
* Temporary data structure used by `BaseInstallAction.runAsync()`
@@ -169,7 +169,11 @@ export abstract class BaseInstallAction extends BaseRushAction {
169169
}
170170
}
171171

172-
const variant: string | undefined = getVariant(this._variantParameter, this.rushConfiguration);
172+
const variant: string | undefined = await getVariantAsync(
173+
this._variantParameter,
174+
this.rushConfiguration,
175+
false
176+
);
173177
if (selectedSubspaces) {
174178
// Check each subspace for version inconsistencies
175179
for (const subspace of selectedSubspaces) {

libraries/rush-lib/src/cli/actions/CheckAction.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Colorize, type ITerminal } from '@rushstack/terminal';
77
import type { RushCommandLineParser } from '../RushCommandLineParser';
88
import { BaseRushAction } from './BaseRushAction';
99
import { VersionMismatchFinder } from '../../logic/versionMismatch/VersionMismatchFinder';
10-
import { getVariant, VARIANT_PARAMETER } from '../../api/Variants';
10+
import { getVariantAsync, VARIANT_PARAMETER } from '../../api/Variants';
1111

1212
export class CheckAction extends BaseRushAction {
1313
private readonly _terminal: ITerminal;
@@ -60,7 +60,11 @@ export class CheckAction extends BaseRushAction {
6060

6161
const currentlyInstalledVariant: string | undefined =
6262
await this.rushConfiguration.getCurrentlyInstalledVariantAsync();
63-
const variant: string | undefined = getVariant(this._variantParameter, this.rushConfiguration);
63+
const variant: string | undefined = await getVariantAsync(
64+
this._variantParameter,
65+
this.rushConfiguration,
66+
true
67+
);
6468
if (!variant && currentlyInstalledVariant) {
6569
this._terminal.writeWarningLine(
6670
Colorize.yellow(

libraries/rush-lib/src/cli/actions/InstallAction.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type { RushCommandLineParser } from '../RushCommandLineParser';
99
import { SelectionParameterSet } from '../parsing/SelectionParameterSet';
1010
import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
1111
import type { Subspace } from '../../api/Subspace';
12-
import { getVariant } from '../../api/Variants';
12+
import { getVariantAsync } from '../../api/Variants';
1313

1414
export class InstallAction extends BaseInstallAction {
1515
private readonly _checkOnlyParameter: CommandLineFlagParameter;
@@ -62,7 +62,11 @@ export class InstallAction extends BaseInstallAction {
6262
(await this._selectionParameters?.getSelectedProjectsAsync(this._terminal)) ??
6363
new Set(this.rushConfiguration.projects);
6464

65-
const variant: string | undefined = getVariant(this._variantParameter, this.rushConfiguration);
65+
const variant: string | undefined = await getVariantAsync(
66+
this._variantParameter,
67+
this.rushConfiguration,
68+
false
69+
);
6670

6771
return {
6872
debug: this.parser.isDebug,

libraries/rush-lib/src/cli/actions/RemoveAction.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import type {
1515
IPackageForRushRemove,
1616
IPackageJsonUpdaterRushRemoveOptions
1717
} from '../../logic/PackageJsonUpdaterTypes';
18-
import { getVariant, VARIANT_PARAMETER } from '../../api/Variants';
18+
import { getVariantAsync, VARIANT_PARAMETER } from '../../api/Variants';
1919

2020
export class RemoveAction extends BaseAddAndRemoveAction {
2121
protected readonly _allFlag: CommandLineFlagParameter;
@@ -54,7 +54,7 @@ export class RemoveAction extends BaseAddAndRemoveAction {
5454
this._variantParameter = this.defineStringParameter(VARIANT_PARAMETER);
5555
}
5656

57-
public getUpdateOptions(): IPackageJsonUpdaterRushRemoveOptions {
57+
public async getUpdateOptionsAsync(): Promise<IPackageJsonUpdaterRushRemoveOptions> {
5858
const projects: RushConfigurationProject[] = super.getProjects();
5959

6060
const packagesToRemove: IPackageForRushRemove[] = [];
@@ -83,7 +83,11 @@ export class RemoveAction extends BaseAddAndRemoveAction {
8383
packagesToRemove.push({ packageName });
8484
}
8585

86-
const variant: string | undefined = getVariant(this._variantParameter, this.rushConfiguration);
86+
const variant: string | undefined = await getVariantAsync(
87+
this._variantParameter,
88+
this.rushConfiguration,
89+
true
90+
);
8791

8892
return {
8993
projects: projects,

libraries/rush-lib/src/cli/actions/UpdateAction.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type { RushCommandLineParser } from '../RushCommandLineParser';
99
import { SelectionParameterSet } from '../parsing/SelectionParameterSet';
1010
import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
1111
import type { Subspace } from '../../api/Subspace';
12-
import { getVariant } from '../../api/Variants';
12+
import { getVariantAsync } from '../../api/Variants';
1313

1414
export class UpdateAction extends BaseInstallAction {
1515
private readonly _fullParameter: CommandLineFlagParameter;
@@ -85,7 +85,11 @@ export class UpdateAction extends BaseInstallAction {
8585
(await this._selectionParameters?.getSelectedProjectsAsync(this._terminal)) ??
8686
new Set(this.rushConfiguration.projects);
8787

88-
const variant: string | undefined = getVariant(this._variantParameter, this.rushConfiguration);
88+
const variant: string | undefined = await getVariantAsync(
89+
this._variantParameter,
90+
this.rushConfiguration,
91+
false
92+
);
8993

9094
return {
9195
debug: this.parser.isDebug,

libraries/rush-lib/src/cli/actions/UpgradeInteractiveAction.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { BaseRushAction } from './BaseRushAction';
77

88
import type * as PackageJsonUpdaterType from '../../logic/PackageJsonUpdater';
99
import type * as InteractiveUpgraderType from '../../logic/InteractiveUpgrader';
10-
import { getVariant, VARIANT_PARAMETER } from '../../api/Variants';
10+
import { getVariantAsync, VARIANT_PARAMETER } from '../../api/Variants';
1111

1212
export class UpgradeInteractiveAction extends BaseRushAction {
1313
private _makeConsistentFlag: CommandLineFlagParameter;
@@ -62,9 +62,11 @@ export class UpgradeInteractiveAction extends BaseRushAction {
6262
this.rushConfiguration
6363
);
6464

65-
const variant: string | undefined =
66-
getVariant(this._variantParameter, this.rushConfiguration) ??
67-
(await this.rushConfiguration.getCurrentlyInstalledVariantAsync());
65+
const variant: string | undefined = await getVariantAsync(
66+
this._variantParameter,
67+
this.rushConfiguration,
68+
true
69+
);
6870
const shouldMakeConsistent: boolean =
6971
this.rushConfiguration.defaultSubspace.shouldEnsureConsistentVersions(variant) ||
7072
this._makeConsistentFlag.value;

0 commit comments

Comments
 (0)