mirror of
https://github.com/daylinmorgan/oizys.git
synced 2024-12-23 11:00:44 -06:00
Compare commits
7 commits
add7992106
...
cd105ae69a
Author | SHA1 | Date | |
---|---|---|---|
cd105ae69a | |||
a5668d426d | |||
c55dd04671 | |||
b83c345693 | |||
46912c29af | |||
2614aeb181 | |||
af89a69eff |
2 changed files with 33 additions and 20 deletions
|
@ -16,32 +16,46 @@ proc runCmd*(cmd: string): int =
|
|||
debug fmt"running cmd: {cmd}"
|
||||
execCmd cmd
|
||||
|
||||
proc runCmdCapt*(cmd: string): tuple[stdout, stderr: string, exitCode: int] =
|
||||
type
|
||||
CaptureGrp* = enum
|
||||
CaptStdout
|
||||
CaptStderr
|
||||
|
||||
proc runCmdCapt*(
|
||||
cmd: string,
|
||||
capture: set[CaptureGrp],
|
||||
): tuple[stdout, stderr: string, exitCode: int] =
|
||||
debug fmt"running cmd: {cmd}"
|
||||
let args = cmd.splitWhitespace()
|
||||
let p = startProcess(args[0], args = args[1..^1], options = {poUsePath})
|
||||
let ostrm = outputStream p
|
||||
let errstrm = errorStream p
|
||||
let p = startProcess(
|
||||
args[0],
|
||||
args = args[1..^1],
|
||||
options = {poUsePath}
|
||||
)
|
||||
let
|
||||
outstrm = peekableOutputStream p
|
||||
errstrm = peekableErrorStream p
|
||||
result.exitCode = -1
|
||||
var line = newStringOfCap(120)
|
||||
var line: string
|
||||
# var cnt: int
|
||||
while true:
|
||||
if ostrm.readLine(line):
|
||||
result.stdout.add line & '\n'
|
||||
if errstrm.readLine(line):
|
||||
result.stderr.add line & '\n'
|
||||
if CaptStdout in capture:
|
||||
if outstrm.readLine(line):
|
||||
result.stdout.add line & '\n'
|
||||
if CaptStderr in capture:
|
||||
if errstrm.readLine(line):
|
||||
result.stderr.add line & '\n'
|
||||
result.exitCode = peekExitCode(p)
|
||||
if result.exitCode != -1: break
|
||||
|
||||
# result = (
|
||||
# readAll p.outputStream,
|
||||
# readAll p.errorStream,
|
||||
# waitForExit p
|
||||
# )
|
||||
# result.exitCode = waitForExit p
|
||||
# result.exitCode = waitForExit p
|
||||
# close p
|
||||
close p
|
||||
|
||||
proc runCmdCaptWithSpinner*(cmd: string, msg: string = ""): tuple[output, err: string] =
|
||||
debug fmt"running command: {cmd}"
|
||||
proc runCmdCaptWithSpinner*(cmd: string, msg: string = "", capture: set[CaptureGrp] = {CaptStdout}): tuple[output, err: string] =
|
||||
withSpinner(msg):
|
||||
let (output, err, code) = runCmdCapt(cmd)
|
||||
let (output, err, code) = runCmdCapt(cmd, capture)
|
||||
if code != 0:
|
||||
stderr.writeLine("stdout\n" & output)
|
||||
stderr.writeLine("stderr\n" & err)
|
||||
|
|
|
@ -110,9 +110,8 @@ proc toBuildNixosConfiguration(): seq[string] =
|
|||
var cmd = nixCommand("build")
|
||||
cmd.addArg "--dry-run"
|
||||
cmd.addArgs nixosConfigAttrs()
|
||||
debug "trying with ouptut"
|
||||
discard execCmd(cmd)
|
||||
let (_, err) = runCmdCaptWithSpinner(cmd, "running dry run build for: " & getHosts().join(" "))
|
||||
# let (_, err) = runCmdCaptWithSpinner(cmd, "running dry run build for: " & getHosts().join(" "))
|
||||
let (_, err, _) = runCmdCapt(cmd, {CaptStderr})
|
||||
let output = parseDryRunOutput err
|
||||
return output.toBuild.mapIt(it.storePath)
|
||||
|
||||
|
|
Loading…
Reference in a new issue