Skip to content

Commit e3000ce

Browse files
committed
Various rush and rush-lib refactors.
1 parent ca7b36b commit e3000ce

File tree

9 files changed

+68
-47
lines changed

9 files changed

+68
-47
lines changed

apps/rush-lib/src/cli/executeCli.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

apps/rush-lib/src/start.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
2+
// See LICENSE in the project root for license information.
3+
4+
import { EOL } from 'os';
5+
import * as colors from 'colors';
6+
7+
import rushVersion from './rushVersion';
8+
import RushCommandLineParser from './cli/actions/RushCommandLineParser';
9+
10+
// tslint:disable-next-line:export-name
11+
export function executeCli(wrapperVersion: string, isManaged: boolean = false): void {
12+
console.log(
13+
EOL +
14+
colors.bold(`Rush Multi-Package Build Tool ${rushVersion}` + colors.yellow(isManaged ? '' : '(unmanaged)')) +
15+
colors.cyan(' - http://aka.ms/rush') +
16+
EOL
17+
);
18+
19+
const parser: RushCommandLineParser = new RushCommandLineParser();
20+
21+
parser.execute();
22+
}

apps/rush/bin/rush

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#!/usr/bin/env node
2-
require('../lib/rush.js')
2+
require('../lib/start.js')

apps/rush/rush-debug.cmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
@ECHO OFF
22
@SETLOCAL
3-
cmd /c "(cd ..\.. && node-debug "%~dp0lib\rush.js" %*)"
3+
cmd /c "(cd ..\.. && node-debug "%~dp0lib\start.js" %*)"

apps/rush/src/MinimalRushConfiguration.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@ export default class MinimalRushConfiguration {
1313
private _rushVersion: string;
1414
private _homeFolder: string;
1515

16-
public static loadFromDefaultLocation(): MinimalRushConfiguration {
16+
public static loadFromDefaultLocation(): MinimalRushConfiguration | undefined {
1717
const rushJsonLocation: string = RushConfiguration.findRushJsonLocation();
1818
return MinimalRushConfiguration.loadFromConfigurationFile(rushJsonLocation);
1919
}
2020

21-
public static loadFromConfigurationFile(rushJsonFilename: string): MinimalRushConfiguration {
21+
public static loadFromConfigurationFile(rushJsonFilename: string): MinimalRushConfiguration | undefined {
2222
try {
2323
const minimalRushConfigurationJson: IMinimalRushConfigurationJson = JsonFile.load(rushJsonFilename);
2424
return new MinimalRushConfiguration(minimalRushConfigurationJson);
2525
} catch (e) {
26-
throw new Error(`Failed to load rush.json: ${e}`);
26+
return undefined;
2727
}
2828
}
2929

apps/rush/src/RushVersionManager.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@
44
import * as path from 'path';
55
import * as fsx from 'fs-extra';
66
import * as semver from 'semver';
7+
78
import { Utilities } from '@microsoft/rush-lib';
9+
import * as rushLibCli from '@microsoft/rush-lib/lib/start';
810

911
import RushWrapper from './RushWrapper';
1012

1113
const RUSH_TRANSITIONAL_VERSION: string = '4.0.0';
1214
const MAX_INSTALL_ATTEMPTS: number = 5;
1315

14-
interface IRushCliEntrypoint {
15-
executeCli(): void;
16-
}
17-
1816
export default class RushVersionManager {
1917
private _rushDirectory: string;
18+
private _currentPackageVersion: string;
2019

21-
constructor(homeDirectory: string) {
20+
constructor(homeDirectory: string, currentPackageVersion: string) {
2221
this._rushDirectory = path.join(homeDirectory, '.rush');
22+
this._currentPackageVersion = currentPackageVersion;
2323
}
2424

2525
public ensureRushVersionInstalled(version: string): RushWrapper {
@@ -50,16 +50,15 @@ export default class RushVersionManager {
5050
});
5151
} else {
5252
return new RushWrapper(() => {
53-
const rushCliEntrypoint: IRushCliEntrypoint = require(path.join(
53+
const rushCliEntrypoint: typeof rushLibCli = require(path.join(
5454
expectedRushPath,
5555
'node_modules',
5656
'@microsoft',
5757
'rush-lib',
5858
'lib',
59-
'cli',
60-
'executeCli'
59+
'start'
6160
));
62-
rushCliEntrypoint.executeCli();
61+
rushCliEntrypoint.executeCli(this._currentPackageVersion, true);
6362
});
6463
}
6564
}

apps/rush/src/rush.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

apps/rush/src/start.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
2+
// See LICENSE in the project root for license information.
3+
4+
import * as path from 'path';
5+
import { JsonFile } from '@microsoft/node-core-library';
6+
7+
import { IPackageJson } from '@microsoft/rush-lib';
8+
import { executeCli } from '@microsoft/rush-lib/lib/start';
9+
10+
import MinimalRushConfiguration from './MinimalRushConfiguration';
11+
import RushVersionManager from './RushVersionManager';
12+
import RushWrapper from './RushWrapper';
13+
14+
const currentPackageJson: IPackageJson = JsonFile.load(path.join(__dirname, '..', 'package.json'));
15+
16+
// Load the configuration
17+
const configuration: MinimalRushConfiguration | undefined = MinimalRushConfiguration.loadFromDefaultLocation();
18+
19+
if (configuration) {
20+
const versionManager: RushVersionManager = new RushVersionManager(
21+
configuration.homeFolder,
22+
currentPackageJson.version
23+
);
24+
const rushWrapper: RushWrapper = versionManager.ensureRushVersionInstalled(configuration.rushVersion);
25+
rushWrapper.invokeRush();
26+
} else {
27+
executeCli(currentPackageJson.version);
28+
}

apps/rush/src/test/MinimalRushConfiguration.test.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,20 @@ describe('MinimalRushConfiguration', () => {
2424
});
2525

2626
it('correctly loads the rush.json file', () => {
27-
const config: MinimalRushConfiguration = MinimalRushConfiguration.loadFromDefaultLocation();
27+
const config: MinimalRushConfiguration =
28+
MinimalRushConfiguration.loadFromDefaultLocation() as MinimalRushConfiguration;
2829
assert.equal(config.rushVersion, '2.5.0');
2930
});
3031
});
3132

32-
describe('legacy rush config', () => {
33+
describe('non-legacy rush config', () => {
3334
beforeEach(() => {
3435
sandbox.stub(process, 'cwd', () => path.join(__dirname, 'sandbox', 'repo', 'project'));
3536
});
3637

3738
it('correctly loads the rush.json file', () => {
38-
const config: MinimalRushConfiguration = MinimalRushConfiguration.loadFromDefaultLocation();
39+
const config: MinimalRushConfiguration =
40+
MinimalRushConfiguration.loadFromDefaultLocation() as MinimalRushConfiguration;
3941
assert.equal(config.rushVersion, '4.0.0');
4042
});
4143
});

0 commit comments

Comments
 (0)