more styxing

This commit is contained in:
Daylin Morgan 2024-01-26 15:42:48 -06:00
parent 2434a3b3bf
commit a64d438e4a
Signed by: daylin
GPG key ID: C1E52E7DD81DF79F

View file

@ -4,7 +4,13 @@ from std/nativesockets import getHostname
var logger = newConsoleLogger()
addHandler(logger)
let summaryFile = getEnv("GITHUB_STEP_SUMMARY")
let summaryFilePath = getEnv("GITHUB_STEP_SUMMARY")
proc writeToSummary(msg: string) =
let f = open(summaryFilePath, mode = fmAppend)
write(f,msg)
close(f)
type
StyxContext = object
@ -34,8 +40,8 @@ proc dry(c: StyxContext) =
execQuit "nix build " & c.systemFlakePath & " --dry-run"
proc cache(c: StyxContext) =
# Simple benchmarking
let start = cpuTime()
## build and upload to binary cache
let start = getTime()
let code = execCmd """
cachix watch-exec """ & c.cache & """ \
-- \
@ -43,17 +49,26 @@ proc cache(c: StyxContext) =
--print-build-logs \
--accept-flake-config
"""
let duration = (cpuTime() - start)
let duration = (getTime() - start)
if code != 0:
error "faile to build configuration for: ", c.host
error "failed to build configuration for: ", c.host
if summaryFile != "":
writeFile(
summaryFile,
if summaryFilePath != "":
writeToSummary(
"Built host: " & c.host & " in " & $duration & " seconds"
)
info "Built host: " & c.host & " in " & $duration & " seconds"
proc touchPr(c: StyxContext) =
const cmds = ["git branch -D update_flake_lock_action",
"git fetch origin",
"git checkout update_flake_lock_action",
"git commit --amend --no-edit",
"git push origin update_flake_lock_action --force"]
for cmd in cmds:
let code = execCmd cmd
if code != 0:
error "command: ",cmd,"exited with code: ",$code
proc nixosRebuild(c: StyxContext, cmd: string) =
execQuit "sudo nixos-rebuild " & cmd & " " & " --flake " & c.flake
@ -64,20 +79,7 @@ proc boot(c: StyxContext) =
proc switch(c: StyxContext) =
## nixos rebuild switch
nixosRebuild c, "swith"
# proc matchCmd(cmd: string): proc =
# case cmd:
# of "dry": dry
# of "switch": switch
# of "boot": boot
# of "cache": cache
# of "build": build
# else:
# error "unknown command", cmd
# quit 1
#
nixosRebuild c, "switch"
proc runCmd(c: StyxContext, cmd: string) =
case cmd:
@ -86,6 +88,7 @@ proc runCmd(c: StyxContext, cmd: string) =
of "boot": boot c
of "cache": cache c
of "build": build c
of "touch-pr": touchPr c
else:
error "unknown command: ", cmd
quit 1
@ -94,14 +97,15 @@ proc runCmd(c: StyxContext, cmd: string) =
const usage = """
styx <cmd> [opts]
commands:
dry poor man's nix flake check
boot nixos-rebuild boot
switch nixos-rebuild switch
cache build and push to cachix
build build system flake
dry poor man's nix flake check
boot nixos-rebuild boot
switch nixos-rebuild switch
cache build and push to cachix
build build system flake
touch-pr trigger Github Action Ci
options:
-?|--help > show this help
--help > show this help
-h|--host > hostname (current host)
-f|--flake > path to flake ($FLAKE_PATH or $HOME/styx)
-c|--cache > name of cachix binary cache (daylin)
@ -131,6 +135,8 @@ when isMainModule:
parseFlag c, key, val
of cmdEnd:
discard
if cmd == "":
echo "please specify a command, see below"
echo usage; quit 1
info $c
runCmd c, cmd