Skip to content

Commit b2f4162

Browse files
Migrate PackagePlugin.Path to Foundation.URL
1 parent 84221b9 commit b2f4162

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

Diff for: Plugins/PackageToJS/MiniMake.swift

+25-10
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,19 @@ struct MiniMake {
6969
}
7070

7171
/// Adds a task to the build system
72-
mutating func addTask(inputFiles: [String] = [], inputTasks: [TaskKey] = [], output: String, attributes: [TaskAttribute] = [], build: @escaping (Task) throws -> Void) -> TaskKey {
73-
let displayName = output.hasPrefix(self.buildCwd) ? String(output.dropFirst(self.buildCwd.count + 1)) : output
72+
mutating func addTask(
73+
inputFiles: [String] = [], inputTasks: [TaskKey] = [], output: String,
74+
attributes: [TaskAttribute] = [], build: @escaping (Task) throws -> Void
75+
) -> TaskKey {
76+
let displayName =
77+
output.hasPrefix(self.buildCwd)
78+
? String(output.dropFirst(self.buildCwd.count + 1)) : output
7479
let taskKey = TaskKey(id: output)
75-
let info = TaskInfo(wants: inputTasks, inputs: inputFiles, output: output, attributes: attributes)
76-
self.tasks[taskKey] = Task(info: info, wants: Set(inputTasks), attributes: Set(attributes), displayName: displayName, key: taskKey, build: build, isDone: false)
80+
let info = TaskInfo(
81+
wants: inputTasks, inputs: inputFiles, output: output, attributes: attributes)
82+
self.tasks[taskKey] = Task(
83+
info: info, wants: Set(inputTasks), attributes: Set(attributes),
84+
displayName: displayName, key: taskKey, build: build, isDone: false)
7785
return taskKey
7886
}
7987

@@ -163,25 +171,32 @@ struct MiniMake {
163171
explain("Task \(task.output) should be built because it doesn't exist")
164172
return true
165173
}
166-
let outputMtime = try? outputURL.resourceValues(forKeys: [.contentModificationDateKey]).contentModificationDate
174+
let outputMtime = try? outputURL.resourceValues(forKeys: [.contentModificationDateKey])
175+
.contentModificationDate
167176
return task.inputs.contains { input in
168177
let inputURL = URL(fileURLWithPath: input)
169178
// Ignore directory modification times
170179
var isDirectory: ObjCBool = false
171-
let fileExists = FileManager.default.fileExists(atPath: input, isDirectory: &isDirectory)
180+
let fileExists = FileManager.default.fileExists(
181+
atPath: input, isDirectory: &isDirectory)
172182
if fileExists && isDirectory.boolValue {
173183
return false
174184
}
175185

176-
let inputMtime = try? inputURL.resourceValues(forKeys: [.contentModificationDateKey]).contentModificationDate
177-
let shouldBuild = outputMtime == nil || inputMtime == nil || outputMtime! < inputMtime!
186+
let inputMtime = try? inputURL.resourceValues(forKeys: [.contentModificationDateKey]
187+
).contentModificationDate
188+
let shouldBuild =
189+
outputMtime == nil || inputMtime == nil || outputMtime! < inputMtime!
178190
if shouldBuild {
179-
explain("Task \(task.output) should be re-built because \(input) is newer: \(outputMtime?.timeIntervalSince1970 ?? 0) < \(inputMtime?.timeIntervalSince1970 ?? 0)")
191+
explain(
192+
"Task \(task.output) should be re-built because \(input) is newer: \(outputMtime?.timeIntervalSince1970 ?? 0) < \(inputMtime?.timeIntervalSince1970 ?? 0)"
193+
)
180194
}
181195
return shouldBuild
182196
}
183197
}
184-
var progressPrinter = ProgressPrinter(total: self.computeTotalTasksForDisplay(task: self.tasks[output]!))
198+
var progressPrinter = ProgressPrinter(
199+
total: self.computeTotalTasksForDisplay(task: self.tasks[output]!))
185200

186201
func runTask(taskKey: TaskKey) throws {
187202
guard var task = self.tasks[taskKey] else {

Diff for: Plugins/PackageToJS/PackageToJS.swift

+5-5
Original file line numberDiff line numberDiff line change
@@ -194,10 +194,10 @@ struct PackageToJS: CommandPlugin {
194194
// Copy the wasm product artifact
195195
let wasmFilename = "main.wasm"
196196
let wasm = make.addTask(
197-
inputFiles: [selfPath, wasmProductArtifact.path.string], inputTasks: [outputDirTask],
197+
inputFiles: [selfPath, wasmProductArtifact.url.path], inputTasks: [outputDirTask],
198198
output: outputDir.appending(path: wasmFilename).path
199199
) {
200-
try syncFile(from: wasmProductArtifact.path.string, to: $0.output)
200+
try syncFile(from: wasmProductArtifact.url.path, to: $0.output)
201201
}
202202
packageInputs.append(wasm)
203203

@@ -238,7 +238,7 @@ struct PackageToJS: CommandPlugin {
238238
inputFiles: [selfPath, inputPath.path], inputTasks: [outputDirTask],
239239
output: outputDir.appending(path: output).path
240240
) {
241-
var content = try String(contentsOf: inputPath)
241+
var content = try String(contentsOf: inputPath, encoding: .utf8)
242242
for (key, value) in substitutions {
243243
content = content.replacingOccurrences(of: key, with: value)
244244
}
@@ -295,7 +295,7 @@ extension PackageManager.BuildResult {
295295
-> PackageManager.BuildResult.BuiltArtifact
296296
{
297297
let executables = self.builtArtifacts.filter {
298-
$0.kind == .executable && $0.path.lastComponent == "\(product).wasm"
298+
($0.kind == .executable) && ($0.url.lastPathComponent == "\(product).wasm")
299299
}
300300
guard !executables.isEmpty else {
301301
throw PackageToJSError(
@@ -304,7 +304,7 @@ extension PackageManager.BuildResult {
304304
}
305305
guard executables.count == 1, let executable = executables.first else {
306306
throw PackageToJSError(
307-
"Failed to disambiguate executable product artifacts from \(executables.map(\.path.string).joined(separator: ", "))"
307+
"Failed to disambiguate executable product artifacts from \(executables.map(\.url.path).joined(separator: ", "))"
308308
)
309309
}
310310
return executable

0 commit comments

Comments
 (0)