mirror of
https://github.com/daylinmorgan/oizys.git
synced 2025-02-02 15:04:18 -06:00
update oizys cli with newer hwylterm
This commit is contained in:
parent
00fb07a64f
commit
7d68c9549c
6 changed files with 36 additions and 37 deletions
|
@ -8,7 +8,7 @@ buildNimblePackage {
|
|||
version = "unstable";
|
||||
src = lib.cleanSource ./.;
|
||||
nativeBuildInputs = [ openssl ];
|
||||
nimbleDepsHash = "sha256-dFJw/m7D5UFUrHH7exsyHknt8WHIK1QIQATNd5l7FZA=";
|
||||
nimbleDepsHash = "sha256-2xuTo85qPZtcNGlcD5/SXkRN73srbTBVtiPtFYmq2Ww=";
|
||||
|
||||
meta = {
|
||||
description = "nix begat oizys";
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
"packages": {
|
||||
"hwylterm": {
|
||||
"version": "0.1.0",
|
||||
"vcsRevision": "3cf572ea4afa6f895eb0897bfb8e6e35f8f1e953",
|
||||
"vcsRevision": "c40a0a2038338b6bbaa4179c76452f6f0d1ac87c",
|
||||
"url": "https://github.com/daylinmorgan/hwylterm",
|
||||
"downloadMethod": "git",
|
||||
"dependencies": [],
|
||||
"checksums": {
|
||||
"sha1": "bf33d39e2a451b89fbbff6418569ccd5428b6bfd"
|
||||
"sha1": "ba253b8643c6cd5abf98de5e1c89f961e14dc87c"
|
||||
}
|
||||
},
|
||||
"jsony": {
|
||||
|
|
|
@ -13,5 +13,5 @@ bin = @["oizys"]
|
|||
requires "nim >= 2.0.8"
|
||||
requires "jsony"
|
||||
requires "zippy"
|
||||
requires "https://github.com/daylinmorgan/hwylterm#3cf572ea"
|
||||
requires "https://github.com/daylinmorgan/hwylterm#c40a0a2"
|
||||
|
||||
|
|
|
@ -39,6 +39,8 @@ hwylCli:
|
|||
subcommands:
|
||||
[build]
|
||||
... "nix build"
|
||||
positionals:
|
||||
args seq[string]
|
||||
flags:
|
||||
^minimal
|
||||
nom:
|
||||
|
@ -48,6 +50,8 @@ hwylCli:
|
|||
|
||||
[cache]
|
||||
... "build and push store paths"
|
||||
positionals:
|
||||
args seq[string]
|
||||
flags:
|
||||
name:
|
||||
T string
|
||||
|
@ -75,6 +79,8 @@ hwylCli:
|
|||
subcommands:
|
||||
[update]
|
||||
... "build current and updated hosts"
|
||||
positionals:
|
||||
args seq[string]
|
||||
run:
|
||||
ciUpdate(args)
|
||||
|
||||
|
@ -85,6 +91,8 @@ hwylCli:
|
|||
examples:
|
||||
[b]oizys gha update[/] --inputs:hosts:othalan,algiz,mannaz
|
||||
"""
|
||||
positionals:
|
||||
workflow string
|
||||
flags:
|
||||
inputs:
|
||||
T seq[KVString]
|
||||
|
@ -96,13 +104,14 @@ hwylCli:
|
|||
run:
|
||||
# TODO: support file operations like gh
|
||||
# i.e. @flake.lock means read a file at flake.lock and use it's contents as a string
|
||||
if args.len == 0: fatalQuit "expected workflow file name"
|
||||
let inputs =
|
||||
inputs.mapIt((it.key, it.val)).toTable()
|
||||
createDispatch(args[0], `ref`, inputs)
|
||||
createDispatch(workflow, `ref`, inputs)
|
||||
|
||||
[dry]
|
||||
... "dry run build"
|
||||
positionals:
|
||||
args seq[string]
|
||||
flags:
|
||||
^minimal
|
||||
run:
|
||||
|
@ -111,12 +120,15 @@ hwylCli:
|
|||
[os]
|
||||
? "[b]oizys os[/] [i]subcmd[/] [[[faint]flags[/]]"
|
||||
... "nixos-rebuild [italic]subcmd[/]"
|
||||
positionals:
|
||||
subcmd NixosRebuildSubcmd
|
||||
args seq[string]
|
||||
flags:
|
||||
remote:
|
||||
? "host is remote"
|
||||
- r
|
||||
run:
|
||||
nixosRebuild(args, remote)
|
||||
nixosRebuild(subcmd, args, remote)
|
||||
|
||||
[output]
|
||||
... "nixos config attr"
|
||||
|
@ -145,5 +157,5 @@ hwylCli:
|
|||
if preview: quit 0
|
||||
if yes or confirm("Proceed with system update?"):
|
||||
updateRepo()
|
||||
nixosRebuild(["switch"])
|
||||
nixosRebuild(NixosRebuildSubcmd.switch)
|
||||
|
||||
|
|
|
@ -56,17 +56,14 @@ proc runCmdCapt*(
|
|||
|
||||
close p
|
||||
|
||||
proc formatStdoutStderr(stdout: string, stderr: string): string =
|
||||
template show(stream: string) =
|
||||
proc formatStdoutStderr(stdout: string, stderr: string): BbString =
|
||||
template add(stream: string) =
|
||||
if stream.strip() != "":
|
||||
result.add astToStr(stream) & ":\n"
|
||||
result.add astToStr(stream).bb("bold") & ":\n"
|
||||
for line in stream.splitlines():
|
||||
# TODO: make -> red after hwylterm update
|
||||
result.add "-> "
|
||||
result.add line
|
||||
result.add "\n"
|
||||
show(stdout)
|
||||
show(stderr)
|
||||
result.add bb("[red]->[/] " & line & "\n")
|
||||
add(stdout)
|
||||
add(stderr)
|
||||
|
||||
proc runCmdCaptWithSpinner*(
|
||||
cmd: string,
|
||||
|
@ -79,7 +76,7 @@ proc runCmdCaptWithSpinner*(
|
|||
with(Dots2, msg):
|
||||
(output, err, code) = runCmdCapt(cmd, capture)
|
||||
if code != 0:
|
||||
stderr.write(formatStdoutStderr(output,err))
|
||||
stderr.write($formatStdoutStderr(output,err))
|
||||
error fmt"{cmd} had non zero exit"
|
||||
quit code
|
||||
return (output, err)
|
||||
|
|
|
@ -27,24 +27,15 @@ proc nixosConfigAttrs*(): seq[string] =
|
|||
for host in getHosts():
|
||||
result.add nixosConfigAttr(host)
|
||||
|
||||
const nixosSubcmds* =
|
||||
"""switch boot test build dry-build dry-activate edit
|
||||
repl build-vm build-vm-with-bootloader list-generations""".splitWhitespace()
|
||||
type
|
||||
NixosRebuildSubcmd* = enum
|
||||
switch, boot, test, build, `dry-build`,`dry-activate`, `edit`,
|
||||
repl, `build-vm`, `build-vm-with-bootloader`, `list-generations`
|
||||
|
||||
proc handleRebuildArgs(args: openArray[string], remote: bool): string =
|
||||
assert args.len > 0
|
||||
# TODO: future versions will let hwylterm handle arg parseing
|
||||
let subcmd = args[0]
|
||||
if subcmd notin nixosSubcmds:
|
||||
fatalQuit(
|
||||
"unknown nixos-rebuild subcmd: " &
|
||||
subcmd &
|
||||
"\nexpected one of: \n" &
|
||||
nixosSubcmds.mapIt(" " & it).join("\n")
|
||||
)
|
||||
proc handleRebuildArgs(subcmd: NixosRebuildSubcmd, args: openArray[string], remote: bool): string =
|
||||
if not remote: result.add "sudo"
|
||||
result.addArgs "nixos-rebuild"
|
||||
result.addArgs subcmd
|
||||
result.addArgs $subcmd
|
||||
result.addArgs "--flake", getFlake()
|
||||
result.addArgs "--log-format multiline"
|
||||
if remote:
|
||||
|
@ -55,10 +46,9 @@ proc handleRebuildArgs(args: openArray[string], remote: bool): string =
|
|||
result.addArgs args[1..^1]
|
||||
|
||||
|
||||
proc nixosRebuild*(args: openArray[string], remote: bool = false) =
|
||||
if getHosts().len > 1: fatalQuit "nixos-rebuild only supports one host"
|
||||
if args.len == 0: fatalQuit "please provide subcmd"
|
||||
let cmd = handleRebuildArgs(args, remote)
|
||||
proc nixosRebuild*(subcmd: NixosRebuildSubcmd, args: openArray[string] = [], remote: bool = false) =
|
||||
if getHosts().len > 1: fatalQuit bb"[bold]oizys os[/] only supports one host"
|
||||
let cmd = handleRebuildArgs(subcmd, args, remote)
|
||||
quitWithCmd cmd
|
||||
|
||||
type
|
||||
|
|
Loading…
Reference in a new issue