Skip to content

Commit b5a421e

Browse files
committed
Use the refactoring the C# dependencies
1 parent ad8fea9 commit b5a421e

File tree

6 files changed

+66
-38
lines changed

6 files changed

+66
-38
lines changed

src/CSharpExtDownloader.ts

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,31 @@
66
import { PlatformInformation } from './platform';
77
import { PackageInstallation, LogPlatformInfo, InstallationSuccess } from './omnisharp/loggingEvents';
88
import { EventStream } from './EventStream';
9-
import { DownloadAndInstallPackages } from './packageManager/PackageManager';
10-
import { Package } from './packageManager/Package';
9+
import { downloadAndInstallPackages1 } from './packageManager/PackageManager';
1110
import { NetworkSettingsProvider } from './NetworkSettings';
11+
import { getRuntimeDependenciesPackages } from './tools/RuntimeDependencyPackageUtils';
12+
import { AbsolutePathPackage } from './packageManager/AbsolutePathPackage';
13+
import { filterPackages } from './packageManager/PackageFilterer';
1214

13-
/*
14-
* Class used to download the runtime dependencies of the C# Extension
15-
*/
16-
export class CSharpExtDownloader {
17-
18-
public constructor(
19-
private networkSettingsProvider: NetworkSettingsProvider,
20-
private eventStream: EventStream,
21-
private packageJSON: any,
22-
private platformInfo: PlatformInformation,
23-
private extensionPath: string) {
24-
}
25-
26-
public async installRuntimeDependencies(): Promise<boolean> {
27-
this.eventStream.post(new PackageInstallation("C# dependencies"));
28-
15+
export async function installRuntimeDependencies(packageJSON: any, extensionPath: string, networkSettingsProvider: NetworkSettingsProvider, eventStream: EventStream, platformInfo: PlatformInformation): Promise<boolean>{
16+
let runTimeDependencies = getRuntimeDependenciesPackages(packageJSON);
17+
let absolutePathPackages = runTimeDependencies.map(pkg => AbsolutePathPackage.getAbsolutePathPackage(pkg, extensionPath));
18+
let packagesToInstall = await filterPackages(absolutePathPackages, platformInfo);
19+
if (packagesToInstall && packagesToInstall.length > 0) {
20+
eventStream.post(new PackageInstallation("C# dependencies"));
2921
try {
3022
// Display platform information and RID
31-
this.eventStream.post(new LogPlatformInfo(this.platformInfo));
32-
let runTimeDependencies = GetRunTimeDependenciesPackages(this.packageJSON);
33-
await DownloadAndInstallPackages(runTimeDependencies, this.networkSettingsProvider, this.platformInfo, this.eventStream, this.extensionPath);
34-
this.eventStream.post(new InstallationSuccess());
23+
eventStream.post(new LogPlatformInfo(platformInfo));
24+
await downloadAndInstallPackages1(packagesToInstall, networkSettingsProvider, eventStream);
25+
eventStream.post(new InstallationSuccess());
3526
return true;
3627
}
3728
catch (error) {
3829
return false;
3930
}
4031
}
41-
}
4232

43-
export function GetRunTimeDependenciesPackages(packageJSON: any): Package[] {
44-
if (packageJSON.runtimeDependencies) {
45-
return JSON.parse(JSON.stringify(<Package[]>packageJSON.runtimeDependencies));
46-
}
33+
//All the required packages are already downloaded and installed
34+
return true;
35+
}
4736

48-
throw new Error("No runtime dependencies found");
49-
}

src/coreclr-debug/activate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { PlatformInformation } from './../platform';
1111
import { DebuggerPrerequisiteWarning, DebuggerPrerequisiteFailure, DebuggerNotInstalledFailure } from '../omnisharp/loggingEvents';
1212
import { EventStream } from '../EventStream';
1313
import CSharpExtensionExports from '../CSharpExtensionExports';
14-
import { getRuntimeDependencyPackageWithId } from '../tools/GetRuntimeDependencyWithId';
14+
import { getRuntimeDependencyPackageWithId } from '../tools/RuntimeDependencyPackageUtils';
1515

1616
let _debugUtil: CoreClrDebugUtil = null;
1717

src/main.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import * as vscode from 'vscode';
1010

1111
import { ActivationFailure, ActiveTextEditorChanged } from './omnisharp/loggingEvents';
1212
import { WarningMessageObserver } from './observers/WarningMessageObserver';
13-
import { CSharpExtDownloader } from './CSharpExtDownloader';
1413
import { CsharpChannelObserver } from './observers/CsharpChannelObserver';
1514
import { CsharpLoggerObserver } from './observers/CsharpLoggerObserver';
1615
import { DotNetChannelObserver } from './observers/DotnetChannelObserver';
@@ -39,6 +38,7 @@ import { CSharpExtensionId } from './constants/CSharpExtensionId';
3938
import { OpenURLObserver } from './observers/OpenURLObserver';
4039
import { activateRazorExtension } from './razor/razor';
4140
import { RazorLoggerObserver } from './observers/RazorLoggerObserver';
41+
import { installRuntimeDependencies } from './CSharpExtDownloader';
4242

4343
export async function activate(context: vscode.ExtensionContext): Promise<CSharpExtensionExports> {
4444

@@ -159,7 +159,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<CSharp
159159
}
160160

161161
async function ensureRuntimeDependencies(extension: vscode.Extension<CSharpExtensionExports>, eventStream: EventStream, platformInfo: PlatformInformation, networkSettingsProvider: NetworkSettingsProvider): Promise<boolean> {
162-
const downloader = new CSharpExtDownloader(networkSettingsProvider, eventStream, extension.packageJSON, platformInfo, extension.extensionPath);
163-
return downloader.installRuntimeDependencies();
162+
return installRuntimeDependencies(extension.packageJSON, extension.extensionPath, networkSettingsProvider, eventStream, platformInfo);
164163
}
165164

src/packageManager/PackageManager.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import { PackageInstallStart } from "../omnisharp/loggingEvents";
2121
export async function DownloadAndInstallPackages(packages: Package[], provider: NetworkSettingsProvider, platformInfo: PlatformInformation, eventStream: EventStream, extensionPath: string): Promise<void> {
2222
let absolutePathPackages = packages.map(pkg => AbsolutePathPackage.getAbsolutePathPackage(pkg, extensionPath));
2323
let filteredPackages = await filterPackages(absolutePathPackages, platformInfo);
24-
2524
if (filteredPackages) {
2625
eventStream.post(new PackageInstallStart());
2726
for (let pkg of filteredPackages) {
@@ -59,3 +58,39 @@ export async function DownloadAndInstallPackages(packages: Package[], provider:
5958
}
6059
}
6160

61+
export async function downloadAndInstallPackages1(packages: AbsolutePathPackage[], provider: NetworkSettingsProvider, eventStream: EventStream) {
62+
if (packages) {
63+
for (let pkg of packages) {
64+
let installationStage = "touchBeginFile";
65+
try {
66+
mkdirpSync(pkg.installPath.value);
67+
await touchInstallFile(pkg.installPath, InstallFileType.Begin);
68+
installationStage = 'downloadAndInstallPackages';
69+
let buffer = await DownloadFile(pkg.description, eventStream, provider, pkg.url, pkg.fallbackUrl);
70+
await InstallZip(buffer, pkg.description, pkg.installPath, pkg.binaries, eventStream);
71+
installationStage = 'touchLockFile';
72+
await touchInstallFile(pkg.installPath, InstallFileType.Lock);
73+
}
74+
catch (error) {
75+
eventStream.post(new InstallationFailure(installationStage, error));
76+
if (error instanceof NestedError) {
77+
let packageError = new PackageError(error.message, pkg, error.err);
78+
eventStream.post(new InstallationFailure(installationStage, packageError));
79+
throw packageError;
80+
}
81+
else {
82+
eventStream.post(new InstallationFailure(installationStage, error));
83+
throw error;
84+
}
85+
}
86+
finally {
87+
try {
88+
if (installFileExists(pkg.installPath, InstallFileType.Begin)) {
89+
await deleteInstallFile(pkg.installPath, InstallFileType.Begin);
90+
}
91+
}
92+
catch (error) { }
93+
}
94+
}
95+
}
96+
}

src/tools/GetRuntimeDependencyWithId.ts renamed to src/tools/RuntimeDependencyPackageUtils.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,19 @@
55

66
import { PlatformInformation } from '../platform';
77
import { AbsolutePathPackage } from '../packageManager/AbsolutePathPackage';
8-
import { GetRunTimeDependenciesPackages } from '../CSharpExtDownloader';
98
import { filterPlatformPackages } from '../packageManager/PackageFilterer';
9+
import { Package } from '../packageManager/Package';
1010

1111
export function getRuntimeDependencyPackageWithId(packageId: string, packageJSON: any, platformInfo: PlatformInformation, extensionPath: string): AbsolutePathPackage {
12-
let runtimeDependencies = GetRunTimeDependenciesPackages(packageJSON);
12+
let runtimeDependencies = getRuntimeDependenciesPackages(packageJSON);
1313
let absolutePathPackages = runtimeDependencies.map(pkg => AbsolutePathPackage.getAbsolutePathPackage(pkg, extensionPath));
1414
let platformSpecificPackage = filterPlatformPackages(absolutePathPackages, platformInfo);
1515
return platformSpecificPackage.find(pkg => pkg.id == packageId);
16+
}
17+
18+
export function getRuntimeDependenciesPackages(packageJSON: any): Package[] {
19+
if (packageJSON.runtimeDependencies) {
20+
return JSON.parse(JSON.stringify(<Package[]>packageJSON.runtimeDependencies));
21+
}
22+
throw new Error("No runtime dependencies found");
1623
}

tasks/offlinePackagingTasks.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import { Logger } from '../src/logger';
2020
import { PlatformInformation } from '../src/platform';
2121
import { DownloadAndInstallPackages } from '../src/packageManager/PackageManager';
2222
import NetworkSettings from '../src/NetworkSettings';
23-
import { GetRunTimeDependenciesPackages } from '../src/CSharpExtDownloader';
2423
import { commandLineOptions } from '../tasks/commandLineArguments';
24+
import { getRuntimeDependenciesPackages } from '../src/tools/RuntimeDependencyPackageUtils';
2525

2626
gulp.task('vsix:offline:package', async () => {
2727
del.sync(vscodeignorePath);
@@ -89,7 +89,7 @@ async function install(platformInfo: PlatformInformation, packageJSON: any) {
8989
let stdoutObserver = new CsharpLoggerObserver(logger);
9090
eventStream.subscribe(stdoutObserver.post);
9191
const debuggerUtil = new debugUtil.CoreClrDebugUtil(path.resolve('.'));
92-
let runTimeDependencies = GetRunTimeDependenciesPackages(packageJSON);
92+
let runTimeDependencies = getRuntimeDependenciesPackages(packageJSON);
9393
let provider = () => new NetworkSettings(undefined, undefined);
9494
await DownloadAndInstallPackages(runTimeDependencies, provider, platformInfo, eventStream, codeExtensionPath);
9595
await debugUtil.CoreClrDebugUtil.writeEmptyFile(debuggerUtil.installCompleteFilePath());

0 commit comments

Comments
 (0)