Skip to content

Commit d779f90

Browse files
feat: add defaultSwiftVersion to configuration & reads from runSwiftScript
1 parent 0cdc25f commit d779f90

File tree

2 files changed

+49
-40
lines changed

2 files changed

+49
-40
lines changed

src/commands/runSwiftScript.ts

+46-40
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import * as fs from "fs/promises";
1818
import { createSwiftTask } from "../tasks/SwiftTaskProvider";
1919
import { WorkspaceContext } from "../WorkspaceContext";
2020
import { Version } from "../utilities/version";
21+
import configuration from "../configuration";
2122

2223
/**
2324
* Run the active document through the Swift REPL
@@ -40,50 +41,55 @@ export async function runSwiftScript(ctx: WorkspaceContext) {
4041
return;
4142
}
4243

43-
const picked = await vscode.window.showQuickPick(
44-
[
45-
// Potentially add more versions here
46-
{ value: 5, label: "Swift 5" },
47-
{ value: 6, label: "Swift 6" },
48-
],
49-
{
50-
placeHolder: "Select a target Swift version",
51-
}
52-
);
44+
let target: number;
5345

54-
if (!picked) {
55-
return;
56-
}
57-
58-
if (picked) {
59-
const target = picked.value;
60-
let filename = document.fileName;
61-
let isTempFile = false;
62-
if (document.isUntitled) {
63-
// if document hasn't been saved, save it to a temporary file
64-
isTempFile = true;
65-
filename = ctx.tempFolder.filename(document.fileName, "swift");
66-
const text = document.getText();
67-
await fs.writeFile(filename, text);
68-
} else {
69-
// otherwise save document
70-
await document.save();
71-
}
72-
const runTask = createSwiftTask(
73-
["-swift-version", target.toString(), filename],
74-
`Run ${filename}`,
46+
const defaultVersion = configuration.defaultSwiftVersion;
47+
if (defaultVersion !== undefined) {
48+
target = defaultVersion;
49+
} else {
50+
const picked = await vscode.window.showQuickPick(
51+
[
52+
// Potentially add more versions here
53+
{ value: 5, label: "Swift 5" },
54+
{ value: 6, label: "Swift 6" },
55+
],
7556
{
76-
scope: vscode.TaskScope.Global,
77-
cwd: vscode.Uri.file(path.dirname(filename)),
78-
presentationOptions: { reveal: vscode.TaskRevealKind.Always, clear: true },
79-
},
80-
ctx.toolchain
57+
placeHolder: "Select a target Swift version",
58+
}
8159
);
82-
await ctx.tasks.executeTaskAndWait(runTask);
8360

84-
// delete file after running swift
85-
if (isTempFile) {
86-
await fs.rm(filename);
61+
if (!picked) {
62+
return;
8763
}
64+
target = picked.value;
65+
}
66+
67+
let filename = document.fileName;
68+
let isTempFile = false;
69+
if (document.isUntitled) {
70+
// if document hasn't been saved, save it to a temporary file
71+
isTempFile = true;
72+
filename = ctx.tempFolder.filename(document.fileName, "swift");
73+
const text = document.getText();
74+
await fs.writeFile(filename, text);
75+
} else {
76+
// otherwise save document
77+
await document.save();
78+
}
79+
const runTask = createSwiftTask(
80+
["-swift-version", target.toString(), filename],
81+
`Run ${filename}`,
82+
{
83+
scope: vscode.TaskScope.Global,
84+
cwd: vscode.Uri.file(path.dirname(filename)),
85+
presentationOptions: { reveal: vscode.TaskRevealKind.Always, clear: true },
86+
},
87+
ctx.toolchain
88+
);
89+
await ctx.tasks.executeTaskAndWait(runTask);
90+
91+
// delete file after running swift
92+
if (isTempFile) {
93+
await fs.rm(filename);
8894
}
8995
}

src/configuration.ts

+3
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,9 @@ const configuration = {
328328
.get<string[]>("buildArguments", [])
329329
.map(substituteVariablesInString);
330330
},
331+
get defaultSwiftVersion(): number | undefined {
332+
return vscode.workspace.getConfiguration("swift").get<number>("script.defaultSwiftVersion");
333+
},
331334
/** swift package arguments */
332335
get packageArguments(): string[] {
333336
return vscode.workspace

0 commit comments

Comments
 (0)