1+ /*---------------------------------------------------------------------------------------------
2+ * Copyright (c) Microsoft Corporation. All rights reserved.
3+ * Licensed under the MIT License. See License.txt in the project root for license information.
4+ *--------------------------------------------------------------------------------------------*/
5+
6+ import { Package } from "./Package";
7+ import { IPackage } from "./IPackage";
8+ import { AbsolutePath } from "./AbsolutePath";
9+
10+ export class AbsolutePathPackage implements IPackage{
11+ constructor(public description: string,
12+ public url: string,
13+ public platforms: string[],
14+ public architectures: string[],
15+ public binaries: AbsolutePath[],
16+ public installPath?: AbsolutePath,
17+ public installTestPath?: AbsolutePath,
18+ public fallbackUrl?: string,
19+ public platformId?: string) {
20+ }
21+
22+ public static getAbsolutePathPackage(pkg: Package, extensionPath: string) {
23+ return new AbsolutePathPackage(
24+ pkg.description,
25+ pkg.url,
26+ pkg.platforms,
27+ pkg.architectures,
28+ getAbsoluteBinaries(pkg, extensionPath),
29+ getAbsoluteInstallPath(pkg, extensionPath),
30+ getAbsoluteInstallTestPath(pkg, extensionPath),
31+ pkg.fallbackUrl,
32+ pkg.platformId
33+ );
34+ }
35+ }
36+
37+ function getAbsoluteInstallTestPath(pkg: Package, extensionPath: string): AbsolutePath {
38+ if (pkg.installTestPath) {
39+ return AbsolutePath.getAbsolutePath(extensionPath, pkg.installTestPath);
40+ }
41+
42+ return null;
43+ }
44+
45+ function getAbsoluteBinaries(pkg: Package, extensionPath: string): AbsolutePath[] {
46+ let basePath = getAbsoluteInstallPath(pkg, extensionPath).value;
47+ if (pkg.binaries) {
48+ return pkg.binaries.map(value => AbsolutePath.getAbsolutePath(basePath, value));
49+ }
50+
51+ return null;
52+ }
53+
54+ function getAbsoluteInstallPath(pkg: Package, extensionPath: string): AbsolutePath {
55+ if (pkg.installPath) {
56+ return AbsolutePath.getAbsolutePath(extensionPath, pkg.installPath);
57+ }
58+
59+ return new AbsolutePath(extensionPath);
60+ }
0 commit comments