From b77b2489cc00eb663234f194c2f537e7682d3e58 Mon Sep 17 00:00:00 2001 From: Daylin Morgan Date: Wed, 6 Nov 2024 23:53:41 -0600 Subject: [PATCH] update to newer hwylterm --- forge.nimble | 5 +- nimble.lock | 14 +---- src/forge.nim | 143 +++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 114 insertions(+), 48 deletions(-) diff --git a/forge.nimble b/forge.nimble index 0bacb58..82b02e9 100644 --- a/forge.nimble +++ b/forge.nimble @@ -8,7 +8,4 @@ binDir = "bin" requires "nim >= 2.0.0" -requires "cligen" -requires "https://github.com/daylinmorgan/hwylterm#HEAD" - - +requires "https://github.com/daylinmorgan/hwylterm#dfd9a7d" diff --git a/nimble.lock b/nimble.lock index 46c4d5d..799b40c 100644 --- a/nimble.lock +++ b/nimble.lock @@ -1,24 +1,14 @@ { "version": 2, "packages": { - "cligen": { - "version": "1.7.5", - "vcsRevision": "85daafd76b0104387f50ff3f75c829b4c2804412", - "url": "https://github.com/c-blake/cligen.git", - "downloadMethod": "git", - "dependencies": [], - "checksums": { - "sha1": "f3ffe7329c8db755677d3ca377d02ff176cec8b1" - } - }, "hwylterm": { "version": "0.1.0", - "vcsRevision": "c2bcfd1f73dda97bd3e209c89e2abfe588f0977c", + "vcsRevision": "dfd9a7d98d345510c9d248670b7e80f7501d1a5a", "url": "https://github.com/daylinmorgan/hwylterm", "downloadMethod": "git", "dependencies": [], "checksums": { - "sha1": "1932229840c893c39acca0b50def19913678f5f0" + "sha1": "7ed514f09d1f74f725c866ddb3cfba19cc8b3e42" } } }, diff --git a/src/forge.nim b/src/forge.nim index 8639dcd..58aa4f3 100644 --- a/src/forge.nim +++ b/src/forge.nim @@ -20,6 +20,7 @@ proc genFlags(target: string, args: seq[string] = @[]): seq[string] = proc targets() = ## show available targets + zigExists() let targetList = zigTargets() termEcho "[bold green]available targets:".bb stderr.writeLine targetList.columns @@ -118,39 +119,117 @@ proc release( termErrQuit &"exited with code {errCode} see above for error" when isMainModule: - import cligen - import hwylterm/cli - hwylCli(clCfg) + # import cligen + # TODO: swap for hwylterm/hwylcli + import hwylterm/hwylcli + # hwylCli(clCfg) - let clUse* = $bb("$command $args\n${doc}[bold]Options[/]:\n$options") + # let clUse* = $bb("$command $args\n${doc}[bold]Options[/]:\n$options") const vsn = staticExec "git describe --tags --always HEAD" - var vsnCfg = clCfg - vsnCfg.version = vsn + hwylCli: + name "forge" + V vsn + subcommands: + --- targets + ... "show available targets" + run: targets() - dispatchMulti( - ["multi", cf = vsnCfg], - [ - cc, - usage = clUse, - help = { - "dryrun": "show command instead of executing", - "nimble": "use nimble as base command for compiling", - }, - ], - [targets, usage = clUse], - [ - release, - usage = clUse, - help = { - "target": "set target, may be repeated", - "bin": "set bin, may be repeated", - "dryrun": "show command instead of executing", - "format": "set format, see help above", - "nimble": "use nimble as base command for compiling", - "config-file": "path to config", - "no-config": "ignore config file", - }, - short = {"verbose": 'V'}, - ], - ) + --- cc + ... "compile with zig cc" + flags: + `dry-run`: + T bool + ? "show command instead of executing" + - n + nimble: + T bool + ? "use nimble as base command for compiling" + target: + ? "target triple" + - t + run: + cc(target, `dry-run`, nimble, args) + + --- release + ... """ + generate release assets for n>=1 targets + + format argument: + format is a template string used for each target directory + available fields are name, version, target + default: ${name}-v${verison}-${target} + + if name or version are not specified they will be inferred from the local .nimble file + """ + flags: + verbose: + T bool + ? "enable verbose" + - v + target: + T seq[string] + ? "set target, may be repeated" + * @[] + - t + bin: + T seq[string] + ? "set bin, may be repeated" + * @[] + `dry-run`: + T bool + ? "show command instead of executing" + - n + format: + ? "set format, see help above" + nimble: + T bool + ? "use nimble as base command for compiling" + `config-file`: + ? "path to config" + * ".forge.cfg" + `no-config`: + T bool + ? "ignore config file" + outdir: + ? "path to output dir" + * "dist" + - o + name: + ? "set name, inferred otherwise" + * "" + version: + ? "set version, inferred otherwise" + * "" + run: + release( + target,# seq[string] = @[], + bin, # seq[string] = @[], + args,# seq[string], + outdir,# string = "dist", + format,# string = "", + name,# string = "", + version,# string = "", + `dry-run`,# bool = false, + nimble,# bool = false, + `config-file`,# string = ".forge.cfg", + `no-config`,# bool = false, + verbose,# bool = false, + ) + + + # [ + # release, + # usage = clUse, + # help = { + # "target": "set target, may be repeated", + # "bin": "set bin, may be repeated", + # "dryrun": "show command instead of executing", + # "format": "set format, see help above", + # "nimble": "use nimble as base command for compiling", + # "config-file": "path to config", + # "no-config": "ignore config file", + # }, + # short = {"verbose": 'V'}, + # ], + # )