Skip to content

Commit 13d7943

Browse files
committed
Ensure all commands are printed when running zero update
1 parent 9cbb0ed commit 13d7943

2 files changed

Lines changed: 33 additions & 9 deletions

File tree

Sources/Zero/Commands/Update.swift

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ private extension ZeroRunner {
2626
Term.stdout <<< TTY.progressMessage("Checking for system updates...")
2727

2828
let verboseFlags: [String] = verbose ? ["--verbose"] : []
29-
let result = try Task.capture(
29+
let result = try ZeroRunner.captureTask(
3030
"/usr/sbin/softwareupdate",
3131
arguments: ["--list"] + verboseFlags,
3232
tee: Term.stdout,
@@ -49,16 +49,13 @@ private extension ZeroRunner {
4949

5050
let prompt = "Install system updates? This will restart your machine if necessary."
5151
if Input.confirm(prompt: prompt, defaultValue: true) {
52-
let exitStatus = try Task.spawn("/usr/bin/sudo", arguments: [
52+
try ZeroRunner.spawnTask("/usr/bin/sudo", arguments: [
5353
"--",
5454
"/usr/sbin/softwareupdate",
5555
"--install",
5656
"--all",
5757
"--restart",
5858
] + verboseFlags)
59-
guard exitStatus == 0 else {
60-
throw SpawnError(exitStatus: exitStatus)
61-
}
6259
exit(0)
6360
} else {
6461
Term.stderr <<< "Aborting."
@@ -69,14 +66,14 @@ private extension ZeroRunner {
6966
/// Check and apply brew and brew cask updates.
7067
static func brewUpdate(verbose: Bool) throws {
7168
let verboseFlags: [String] = verbose ? ["--verbose"] : []
72-
try Task.run("brew", arguments: ["update"] + verboseFlags)
73-
try Task.run("brew", arguments: ["upgrade"] + verboseFlags)
74-
try Task.run("brew", arguments: ["cask", "upgrade"] + verboseFlags)
69+
try ZeroRunner.runTask("brew", arguments: ["update"] + verboseFlags)
70+
try ZeroRunner.runTask("brew", arguments: ["upgrade"] + verboseFlags)
71+
try ZeroRunner.runTask("brew", arguments: ["cask", "upgrade"] + verboseFlags)
7572
}
7673

7774
/// Check and apply app store updates.
7875
static func appStoreUpdate() throws {
7976
Term.stdout <<< TTY.progressMessage("Upgrading apps from the App Store...")
80-
try Task.run("mas", "upgrade")
77+
try ZeroRunner.runTask("mas", "upgrade")
8178
}
8279
}

Sources/Zero/Runner.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,33 @@ struct ZeroRunner {
4646
try validate()
4747
}
4848

49+
static func captureTask(
50+
_ executable: String,
51+
arguments: [String],
52+
tee: WritableStream? = nil,
53+
at directory: Path? = nil,
54+
env: [String: String] = ProcessInfo.processInfo.environment
55+
) throws -> CaptureResult {
56+
self.printCommand(executable, arguments)
57+
if let directory = directory, executable.hasPrefix(".") {
58+
return try Task.capture(
59+
directory.join(executable).string,
60+
arguments: arguments,
61+
directory: directory.string,
62+
tee: tee,
63+
env: env
64+
)
65+
}
66+
67+
return try Task.capture(
68+
executable,
69+
arguments: arguments,
70+
directory: directory?.string,
71+
tee: tee,
72+
env: env
73+
)
74+
}
75+
4976
/// Run an executable with the given arguments, printing the command before
5077
/// running.
5178
static func runTask(

0 commit comments

Comments
 (0)