refactor: enter the future with bbansi

This commit is contained in:
Daylin Morgan 2023-10-23 14:23:30 -05:00
parent f3ac3d7722
commit 212076b6d2
Signed by: daylin
GPG key ID: C1E52E7DD81DF79F
5 changed files with 45 additions and 34 deletions

View file

@ -8,7 +8,9 @@ binDir = "bin"
requires "nim >= 2.0.0",
"cligen"
"cligen",
"https://github.com/daylinmorgan/bbansi#head"
import strformat

View file

@ -85,17 +85,16 @@ proc release(
checkTargets(cfg.targets.keys.toSeq())
if verbose:
termEcho $cfg
cfg.showConfig
if dryrun:
termEcho styleBright, fgBlue, "dry run...see below for commands"
termEcho "[bold blue]dry run...see below for commands".bb
let
baseCmd = if nimble or cfg.nimble: "nimble" else: "nim"
rest = parseArgs(args)
termEcho styleBright, fgYellow,
&"compiling {cfg.bins.len} binaries for {cfg.targets.len} targets"
termEcho fmt"[bold yellow]compiling {cfg.bins.len} binaries for {cfg.targets.len} targets".bb
for t, tArgs in cfg.targets:
for b, bArgs in cfg.bins:
@ -118,7 +117,7 @@ proc release(
stderr.writeLine cmd
else:
if verbose:
termEcho styleBright, "cmd: ", ansiResetCode, cmd
termEcho fmt"[bold]cmd[/]: {cmd}".bb
let errCode = execCmd cmd
if errCode != 0:
termErr "cmd: ", cmd

View file

@ -1,4 +1,5 @@
import std/[parsecfg, tables, os, strutils, strformat]
import term
type
ForgeConfig* = object
@ -10,21 +11,31 @@ type
version*: string
nimble*: bool
proc `$`*(c: ForgeConfig): string =
var lines: seq[string] = @[]
lines.add "config ="
lines.add "| nimble " & $c.nimble
lines.add "| outdir " & c.outdir
lines.add "| format " & c.format
lines.add "| version " & c.version
lines.add "| targets:"
for target, args in c.targets:
lines.add "| " & target & (if args != "": "|" & args else: "")
lines.add "| bins:"
for bin, args in c.bins:
lines.add "| " & bin & (if args != "": "|" & args else: "")
proc showConfig*(c: ForgeConfig) =
var lines: string = ""
template addLine(l: string) = lines.add(l & "\n")
proc addNameArgs(name, args: string): string =
result.add fmt"| {name}"
if args != "":
result.add fmt" | " & $args.bb("faint")
lines.join("\n")
addLine $fmt"""
config =
| [blue]nimble[/] {c.nimble}
| [blue]outdir[/] {c.outdir}
| [blue]format[/] {c.format}
| [blue]version[/] {c.version}""".bb
addLine $"| [green]targets[/]:".bb
for target, args in c.targets:
addLine addNameArgs(target, args)
addLine $"| [green]bins[/]:".bb
for bin, args in c.bins:
addline addNameArgs(bin, args)
termEcho lines
proc loadConfigFile*(
f: string,

View file

@ -1,17 +1,17 @@
import std/terminal
import std/strutils
# TODO support NO_COLOR for these
let prefix = ansiForegroundColorCode(fgMagenta, bright = true) & "forge" &
ansiResetCode & ansiForegroundColorCode(fgYellow) & " || " & ansiResetCode
import bbansi
template termEcho*(args: varargs[untyped]) =
stderr.styledWriteLine(prefix, args)
let prefix = "[bold magenta]forge[/] [yellow]||[/] ".bb
template termErr*(args: varargs[untyped]) =
stderr.styledWriteLine(prefix, fgRed, "error ", fgDefault, args)
template termEcho*(args: varargs[string | BbString, `$`]) =
stderr.writeLine $prefix, args.join(" ")
template termErrQuit*(args: varargs[untyped]) =
termErr(args)
template termErr*(args: varargs[string | BbString, `$`]) =
stderr.writeLine $prefix, $"[red]error ||[/] ".bb, args.join(" ")
template termErrQuit*(args: varargs[string | BbString, `$`]) =
termErr args
quit 1
export bbansi

View file

@ -1,5 +1,4 @@
import std/[json, os, osproc, terminal]
import std/[json, os, osproc]
import term
proc zigTargets*(): seq[string] =
@ -26,7 +25,7 @@ template callZig*(zigCmd: string) =
proc zigExists*() =
if (findExe "zig") == "":
termErr "zig not found"
termErr "[red]zig not found".bb
termErr " forge requires a working installation of zig"
termErr " see: https://ziglang.org/download/"
quit 1