diff --git a/styx/styx.nim b/styx/styx.nim index c68b405..dd0d272 100644 --- a/styx/styx.nim +++ b/styx/styx.nim @@ -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 [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