Skip to content

Commit bb13c81

Browse files
committed
refactoring changes
1 parent fcd3803 commit bb13c81

File tree

5 files changed

+30
-39
lines changed

5 files changed

+30
-39
lines changed

src/toolchain/swiftly.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ export class Swiftly {
5454
* @returns the version of Swiftly as a `Version` object, or `undefined`
5555
* if Swiftly is not installed or not supported.
5656
*/
57-
public async getSwiftlyVersion(): Promise<Version | undefined> {
58-
if (!this.isSupported()) {
57+
public static async version(): Promise<Version | undefined> {
58+
if (!Swiftly.isSupported()) {
5959
return undefined;
6060
}
6161
const { stdout } = await execFile("swiftly", ["--version"]);
@@ -67,19 +67,19 @@ export class Swiftly {
6767
*
6868
* @returns an array of toolchain paths
6969
*/
70-
public async getSwiftlyToolchainInstalls(): Promise<string[]> {
70+
public static async listAvailableToolchains(): Promise<string[]> {
7171
if (!this.isSupported()) {
7272
return [];
7373
}
74-
const version = await swiftly.getSwiftlyVersion();
74+
const version = await Swiftly.version();
7575
if (version?.isLessThan(new Version(1, 1, 0))) {
76-
return await this.getToolchainInstallLegacy();
76+
return await Swiftly.getToolchainInstallLegacy();
7777
}
7878

79-
return await this.getListAvailableToolchains();
79+
return await Swiftly.getListAvailableToolchains();
8080
}
8181

82-
private async getListAvailableToolchains(): Promise<string[]> {
82+
private static async getListAvailableToolchains(): Promise<string[]> {
8383
try {
8484
const { stdout } = await execFile("swiftly", ["list-available", "--format=json"]);
8585
const response = ListAvailableResult.parse(JSON.parse(stdout));
@@ -89,13 +89,13 @@ export class Swiftly {
8989
}
9090
}
9191

92-
private async getToolchainInstallLegacy() {
92+
private static async getToolchainInstallLegacy() {
9393
try {
9494
const swiftlyHomeDir: string | undefined = process.env["SWIFTLY_HOME_DIR"];
9595
if (!swiftlyHomeDir) {
9696
return [];
9797
}
98-
const swiftlyConfig = await swiftly.getSwiftlyConfig();
98+
const swiftlyConfig = await Swiftly.getConfig();
9999
if (!swiftlyConfig || !("installedToolchains" in swiftlyConfig)) {
100100
return [];
101101
}
@@ -111,11 +111,11 @@ export class Swiftly {
111111
}
112112
}
113113

114-
private isSupported() {
114+
private static isSupported() {
115115
return process.platform === "linux" || process.platform === "darwin";
116116
}
117117

118-
public async swiftlyInUseLocation(swiftlyPath: string, cwd?: vscode.Uri) {
118+
public static async inUseLocation(swiftlyPath: string, cwd?: vscode.Uri) {
119119
const { stdout: inUse } = await execFile(swiftlyPath, ["use", "--print-location"], {
120120
cwd: cwd?.fsPath,
121121
});
@@ -127,7 +127,7 @@ export class Swiftly {
127127
* the path to the active toolchain.
128128
* @returns The location of the active toolchain if swiftly is being used to manage it.
129129
*/
130-
public async swiftlyToolchain(cwd?: vscode.Uri): Promise<string | undefined> {
130+
public static async toolchain(cwd?: vscode.Uri): Promise<string | undefined> {
131131
const swiftlyHomeDir: string | undefined = process.env["SWIFTLY_HOME_DIR"];
132132
if (swiftlyHomeDir) {
133133
const { stdout: swiftLocation } = await execFile("which", ["swift"]);
@@ -136,7 +136,7 @@ export class Swiftly {
136136
// is no cwd specified then it returns the global "inUse" toolchain otherwise
137137
// it respects the .swift-version file in the cwd and resolves using that.
138138
try {
139-
const inUse = await swiftly.swiftlyInUseLocation("swiftly", cwd);
139+
const inUse = await Swiftly.inUseLocation("swiftly", cwd);
140140
if (inUse.length > 0) {
141141
return path.join(inUse, "usr");
142142
}
@@ -155,7 +155,7 @@ export class Swiftly {
155155
*
156156
* @returns A parsed Swiftly configuration.
157157
*/
158-
private async getSwiftlyConfig(): Promise<SwiftlyConfig | undefined> {
158+
private static async getConfig(): Promise<SwiftlyConfig | undefined> {
159159
const swiftlyHomeDir: string | undefined = process.env["SWIFTLY_HOME_DIR"];
160160
if (!swiftlyHomeDir) {
161161
return;
@@ -167,5 +167,3 @@ export class Swiftly {
167167
return JSON.parse(swiftlyConfigRaw);
168168
}
169169
}
170-
171-
export const swiftly = new Swiftly();

src/toolchain/toolchain.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ import { Version } from "../utilities/version";
2525
import { BuildFlags } from "./BuildFlags";
2626
import { Sanitizer } from "./Sanitizer";
2727
import { lineBreakRegex } from "../utilities/tasks";
28-
import { swiftly } from "./swiftly";
29-
28+
import { Swiftly } from "./swiftly";
3029
/**
3130
* Contents of **Info.plist** on Windows.
3231
*/
@@ -567,7 +566,7 @@ export class SwiftToolchain {
567566
let realSwift = await fs.realpath(swift);
568567
if (path.basename(realSwift) === "swiftly") {
569568
try {
570-
const inUse = await swiftly.swiftlyInUseLocation(realSwift, cwd);
569+
const inUse = await Swiftly.inUseLocation(realSwift, cwd);
571570
if (inUse) {
572571
realSwift = path.join(inUse, "usr", "bin", "swift");
573572
}
@@ -620,7 +619,7 @@ export class SwiftToolchain {
620619
const swiftlyPath = path.join(configPath, "swiftly");
621620
if (await fileExists(swiftlyPath)) {
622621
try {
623-
const inUse = await swiftly.swiftlyInUseLocation(swiftlyPath, cwd);
622+
const inUse = await Swiftly.inUseLocation(swiftlyPath, cwd);
624623
if (inUse) {
625624
return path.join(inUse, "usr");
626625
}
@@ -631,7 +630,7 @@ export class SwiftToolchain {
631630
return path.dirname(configuration.path);
632631
}
633632

634-
const swiftlyToolchainLocation = await swiftly.swiftlyToolchain(cwd);
633+
const swiftlyToolchainLocation = await Swiftly.toolchain(cwd);
635634
if (swiftlyToolchainLocation) {
636635
return swiftlyToolchainLocation;
637636
}

src/ui/ToolchainSelection.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { showReloadExtensionNotification } from "./ReloadExtension";
1818
import { SwiftToolchain } from "../toolchain/toolchain";
1919
import configuration from "../configuration";
2020
import { Commands } from "../commands";
21-
import { swiftly } from "../toolchain/swiftly";
21+
import { Swiftly } from "../toolchain/swiftly";
2222

2323
/**
2424
* Open the installation page on Swift.org
@@ -193,7 +193,7 @@ async function getQuickPickItems(
193193
return result;
194194
});
195195
// Find any Swift toolchains installed via Swiftly
196-
const swiftlyToolchains = (await swiftly.getSwiftlyToolchainInstalls())
196+
const swiftlyToolchains = (await Swiftly.listAvailableToolchains())
197197
.reverse()
198198
.map<SwiftToolchainItem>(toolchainPath => ({
199199
type: "toolchain",

test/unit-tests/toolchain/swiftly.test.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@ import { mockGlobalModule } from "../../MockUtils";
1919

2020
suite("Swiftly Unit Tests", () => {
2121
const mockUtilities = mockGlobalModule(utilities);
22-
let swiftly: Swiftly;
23-
24-
setup(() => {
25-
swiftly = new Swiftly();
26-
});
27-
2822

2923
suite("getSwiftlyToolchainInstalls", () => {
3024
test("should return toolchain names from list-available command for version 1.1.0", async () => {
@@ -82,7 +76,7 @@ suite("Swiftly Unit Tests", () => {
8276
stderr: ""
8377
});
8478

85-
const result = await swiftly.getSwiftlyToolchainInstalls();
79+
const result = await Swiftly.listAvailableToolchains();
8680

8781
expect(result).to.deep.equal([
8882
"swift-5.9.0-RELEASE",
@@ -101,7 +95,7 @@ suite("Swiftly Unit Tests", () => {
10195
writable: true
10296
});
10397

104-
const result = await swiftly.getSwiftlyToolchainInstalls();
98+
const result = await Swiftly.listAvailableToolchains();
10599

106100
expect(result).to.deep.equal([]);
107101
expect(mockUtilities.execFile).not.have.been.called;

test/unit-tests/toolchain/toolchain.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import * as utilities from "../../../src/utilities/utilities";
1919
import { SwiftToolchain } from "../../../src/toolchain/toolchain";
2020
import { Version } from "../../../src/utilities/version";
2121
import { mockGlobalModule, mockGlobalValue } from "../../MockUtils";
22-
import { swiftly } from "../../../src/toolchain/swiftly";
22+
import { Swiftly } from "../../../src/toolchain/swiftly";
2323

2424
suite("SwiftToolchain Unit Test Suite", () => {
2525
const mockedUtilities = mockGlobalModule(utilities);
@@ -313,7 +313,7 @@ suite("SwiftToolchain Unit Test Suite", () => {
313313
}),
314314
});
315315

316-
const toolchains = await swiftly.getSwiftlyToolchainInstalls();
316+
const toolchains = await Swiftly.listAvailableToolchains();
317317
expect(toolchains).to.deep.equal([
318318
path.join(mockHomeDir, "toolchains", "swift-5.9.0"),
319319
path.join(mockHomeDir, "toolchains", "swift-6.0.0"),
@@ -331,7 +331,7 @@ suite("SwiftToolchain Unit Test Suite", () => {
331331
}),
332332
});
333333

334-
const toolchains = await swiftly.getSwiftlyToolchainInstalls();
334+
const toolchains = await Swiftly.listAvailableToolchains();
335335
expect(toolchains).to.deep.equal([
336336
path.join(mockHomeDir, "toolchains", "swift-5.9.0"),
337337
path.join(mockHomeDir, "toolchains", "swift-6.0.0"),
@@ -342,7 +342,7 @@ suite("SwiftToolchain Unit Test Suite", () => {
342342
mockedPlatform.setValue("linux");
343343
mockedEnv.setValue({});
344344

345-
const toolchains = await swiftly.getSwiftlyToolchainInstalls();
345+
const toolchains = await Swiftly.listAvailableToolchains();
346346
expect(toolchains).to.be.empty;
347347
});
348348

@@ -353,7 +353,7 @@ suite("SwiftToolchain Unit Test Suite", () => {
353353

354354
mockFS({});
355355

356-
await expect(swiftly.getSwiftlyToolchainInstalls()).to.be.rejectedWith(
356+
await expect(Swiftly.listAvailableToolchains()).to.be.rejectedWith(
357357
"Failed to retrieve Swiftly installations from disk: ENOENT, no such file or directory '/home/user/.swiftly/config.json'"
358358
);
359359
});
@@ -369,13 +369,13 @@ suite("SwiftToolchain Unit Test Suite", () => {
369369
}),
370370
});
371371

372-
const toolchains = await swiftly.getSwiftlyToolchainInstalls();
372+
const toolchains = await Swiftly.listAvailableToolchains();
373373
expect(toolchains).to.be.empty;
374374
});
375375

376376
test("returns empty array on Windows", async () => {
377377
mockedPlatform.setValue("win32");
378-
const toolchains = await swiftly.getSwiftlyToolchainInstalls();
378+
const toolchains = await Swiftly.listAvailableToolchains();
379379
expect(toolchains).to.be.empty;
380380
});
381381

@@ -390,7 +390,7 @@ suite("SwiftToolchain Unit Test Suite", () => {
390390
}),
391391
});
392392

393-
const toolchains = await swiftly.getSwiftlyToolchainInstalls();
393+
const toolchains = await Swiftly.listAvailableToolchains();
394394
expect(toolchains).to.deep.equal([
395395
path.join(mockHomeDir, "toolchains", "swift-5.9.0"),
396396
path.join(mockHomeDir, "toolchains", "swift-6.0.0"),

0 commit comments

Comments
 (0)