diff --git a/home/console/figlet.nix b/home/console/figlet.nix index edfbb39..88102d9 100644 --- a/home/console/figlet.nix +++ b/home/console/figlet.nix @@ -16,36 +16,39 @@ packages = with pkgs; [figlet]; }; programs.nushell.extraConfig = '' + # Generate ASCII art from input text def title [ - text: string # text to render - --font (-f): string # figlet font name - --width (-w): int # override terminal width detection - ...rest: string # any extra args passed straight to figlet + text?: string # text to render (optional when using --all, falls back to font name) + --font (-f): string # figlet font name + --width (-w): int # override terminal width detection + --all (-a) # preview text in every installed figlet font + ...rest: string # any extra args passed straight to figlet ] { - let w = ($width | default (term size | get columns)) - - mut args = [-w $w] - if $font != null { - $args = ($args | append [-f $font]) - } - $args = ($args | append $rest) + if $all { + let width = ($width | default ((term size | get columns) - 30)) + glob ${config.home.homeDirectory}/.local/share/figlet/*.flf + | path parse + | get stem + | each { |f| + { + font: $f, + preview: (figlet -w $width -f $f ($text | default $f)) + } + } + } else { + if $text == null { + error make {msg: "title: `text` is required unless --all is set"} + } - figlet ...$args $text - } + let w = ($width | default (term size | get columns)) - # Preview all figlet fonts - def figlet-preview [ - text?: string # OPTIONAL: Provide text used in the preview - ] { - let width = (term size | get columns) - 30 - glob ${config.home.homeDirectory}/.local/share/figlet/*.flf - | path parse - | get stem - | each { |font| - { - font: $font, - preview: (figlet -w $width -f $font ($text | default $font)) + mut args = [-w $w] + if $font != null { + $args = ($args | append [-f $font]) } + $args = ($args | append $rest) + + figlet ...$args $text } } '';