Skip to content

Commit fe8a57c

Browse files
committed
Have single instance of task provider
Match setup of plugin task provider
1 parent 1275cec commit fe8a57c

File tree

3 files changed

+8
-18
lines changed

3 files changed

+8
-18
lines changed

src/WorkspaceContext.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { DocCDocumentationRequest, ReIndexProjectRequest } from "./sourcekit-lsp
3535
import { TestKind } from "./TestExplorer/TestKind";
3636
import { isValidWorkspaceFolder, searchForPackages } from "./utilities/workspace";
3737
import { SwiftPluginTaskProvider } from "./tasks/SwiftPluginTaskProvider";
38+
import { SwiftTaskProvider } from "./tasks/SwiftTaskProvider";
3839

3940
/**
4041
* Context for whole workspace. Holds array of contexts for each workspace folder
@@ -49,6 +50,7 @@ export class WorkspaceContext implements vscode.Disposable {
4950
public languageClientManager: LanguageClientToolchainCoordinator;
5051
public tasks: TaskManager;
5152
public diagnostics: DiagnosticsManager;
53+
public taskProvider: SwiftTaskProvider;
5254
public pluginProvider: SwiftPluginTaskProvider;
5355
public subscriptions: vscode.Disposable[];
5456
public commentCompletionProvider: CommentCompletionProviders;
@@ -78,6 +80,7 @@ export class WorkspaceContext implements vscode.Disposable {
7880
this.languageClientManager = new LanguageClientToolchainCoordinator(this);
7981
this.tasks = new TaskManager(this);
8082
this.diagnostics = new DiagnosticsManager(this);
83+
this.taskProvider = new SwiftTaskProvider(this);
8184
this.pluginProvider = new SwiftPluginTaskProvider(this);
8285
this.documentation = new DocumentationManager(extensionContext, this);
8386
this.currentDocument = null;

src/extension.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import * as vscode from "vscode";
1919
import * as commands from "./commands";
2020
import * as debug from "./debugger/launch";
2121
import { ProjectPanelProvider } from "./ui/ProjectPanelProvider";
22-
import { SwiftTaskProvider } from "./tasks/SwiftTaskProvider";
2322
import { FolderEvent, FolderOperation, WorkspaceContext } from "./WorkspaceContext";
2423
import { FolderContext } from "./FolderContext";
2524
import { TestExplorer } from "./TestExplorer/TestExplorer";
@@ -96,7 +95,9 @@ export async function activate(context: vscode.ExtensionContext): Promise<Api> {
9695
context.subscriptions.push(new SelectedXcodeWatcher(outputChannel));
9796

9897
// Register task provider.
99-
context.subscriptions.push(SwiftTaskProvider.register(workspaceContext));
98+
context.subscriptions.push(
99+
vscode.tasks.registerTaskProvider("swift", workspaceContext.taskProvider)
100+
);
100101

101102
// Register swift plugin task provider.
102103
context.subscriptions.push(

src/tasks/SwiftTaskProvider.ts

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@ import * as vscode from "vscode";
1616
import { WorkspaceContext } from "../WorkspaceContext";
1717
import { FolderContext } from "../FolderContext";
1818
import { Product } from "../SwiftPackage";
19-
import configuration, {
20-
ShowBuildStatusOptions,
21-
substituteVariablesInString,
22-
} from "../configuration";
19+
import configuration, { ShowBuildStatusOptions } from "../configuration";
2320
import { swiftRuntimeEnv } from "../utilities/utilities";
2421
import { Version } from "../utilities/version";
2522
import { SwiftToolchain } from "../toolchain/toolchain";
@@ -445,9 +442,7 @@ export class SwiftTaskProvider implements vscode.TaskProvider {
445442
platform = task.definition.macos;
446443
}
447444
// get args and cwd values from either platform specific block or base
448-
const args = (platform?.args ?? task.definition.args ?? []).map(
449-
substituteVariablesInString
450-
);
445+
const args = platform?.args ?? task.definition.args;
451446
const env = platform?.env ?? task.definition.env;
452447
const fullCwd = resolveTaskCwd(task, platform?.cwd ?? task.definition.cwd);
453448
const fullEnv = {
@@ -475,13 +470,4 @@ export class SwiftTaskProvider implements vscode.TaskProvider {
475470

476471
return newTask;
477472
}
478-
479-
/**
480-
* Registers the Swift task provider with VS Code.
481-
* @param ctx The workspace context.
482-
* @returns A disposable that unregisters the provider when disposed.
483-
*/
484-
public static register(ctx: WorkspaceContext): vscode.Disposable {
485-
return vscode.tasks.registerTaskProvider("swift", new SwiftTaskProvider(ctx));
486-
}
487473
}

0 commit comments

Comments
 (0)