From cb51a398adf2f5c18fe8c2da1d309aff92e87ba6 Mon Sep 17 00:00:00 2001 From: Spencer Brower Date: Thu, 11 Jun 2026 20:32:58 -0400 Subject: [PATCH] refactor(odin): ported deps command, added utilities (features, tty, table). --- cli.odin | 1 + flake.nix | 1 + main.odin | 2 ++ table.odin | 18 ++++++++++++------ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/cli.odin b/cli.odin index 576dd90..5e1647f 100644 --- a/cli.odin +++ b/cli.odin @@ -13,6 +13,7 @@ Command :: struct { IMPLEMENTED_COMMANDS := []string{ "version", + "deps", } parse_args :: proc() -> (cmd: Command, ok: bool) { diff --git a/flake.nix b/flake.nix index 9843f44..82bdcbc 100644 --- a/flake.nix +++ b/flake.nix @@ -97,6 +97,7 @@ gotools cobra-cli + age unstable.odin unstable.ols diff --git a/main.odin b/main.odin index 14a1361..480a6ef 100644 --- a/main.odin +++ b/main.odin @@ -19,6 +19,8 @@ main :: proc() { switch cmd.name { case "version": cmd_version(&cmd) + case "deps": + cmd_deps(&cmd) case: fmt.printf("Unknown command: %s\n", cmd.name) print_usage() diff --git a/table.odin b/table.odin index 531eca4..3647f09 100644 --- a/table.odin +++ b/table.odin @@ -9,14 +9,15 @@ render_table :: proc(headers: []string, rows: [][]string) { return } - col_widths := make([dynamic]int, len(headers)) + col_widths := make([dynamic]int, 0, len(headers)) for i in 0.. col_widths[i] { - col_widths[i] = len(r[i]) + w := strings.rune_count(r[i]) + if i < len(col_widths) && w > col_widths[i] { + col_widths[i] = w } } } @@ -44,9 +45,14 @@ render_table :: proc(headers: []string, rows: [][]string) { hline(&b, "\u250c", "\u252c", "\u2510", col_widths) + cell :: proc(b: ^strings.Builder, s: string, width: int) { + extra := len(s) - strings.rune_count(s) + fmt.sbprintf(b, " %-*s \u2502", width + extra, s) + } + strings.write_string(&b, "\u2502") for i in 0..