Files
fastfetch/completions/fish
T

72 lines
2.5 KiB
Fish
Executable File

#!/usr/bin/env fish
if not test -x fastfetch
return
end
set -l whole_text (fastfetch --pipe --help)
set modules_complex (fastfetch --list-modules autocompletion)
complete -c fastfetch -f
for line in (string match -- ' -*' $whole_text)
set -l kv (string split -n ':' $line -m1)
set -l args (string trim -- $kv[1])
set -l desc (string trim -- $kv[2])
if string match -q -- '--<*' $args # ignore --<module>-*
continue
end
set -l res -c fastfetch
set -l regexp '<\??[\w=]+>'
switch (string match -r -- $regexp $args)
case '<\?command>'
set -l temp (string match -r "\\w+" $modules_complex | string lower)
set -l temp $temp-format"\tModule\\ format"
set res $res -x -a "color\tSupported\\ colors format\tCustom\\ format config\tConfiguration $temp"
case '<\?bool>'
set res $res -x -a "true\tBool false\tBool"
case '<config>'
set -l presets (fastfetch --list-presets autocompletion)"\tPreset"
set res $res -r -a "none\tDisable $presets"
case '<path>'
set res $res -F -r
case '<num>'
set res $res -x -a "0\tNumber 1\tNumber 2\tNumber 3\tNumber 4\tNumber 5\tNumber 6\tNumber 7\tNumber 8\tNumber 9\tNumber"
case '<\?num>'
set res $res -x -a "0\tNumber 1\tNumber 2\tNumber 3\tNumber 4\tNumber 5\tNumber 6\tNumber 7\tNumber 8\tNumber 9\tNumber"
case '<structure>'
function __fastfetch_complete_structure
for line in $modules_complex
set -l pair (string split -m 2 : $line)
echo -e "$pair[1]\t$pair[2]"
end
end
set res $res -x -a "(__fish_complete_list : __fastfetch_complete_structure)"
case '<logo>'
set -l temp (fastfetch --list-logos autocompletion)
set -l temp (string replace -- ' ' '\\ ' $temp)
set -l temp $temp"\tBuiltin"
set res $res -x -a "none\tNone small\tSmall $temp"
case '<color>'
set res $res -x -a "black\tColor red\tColor green\tColor yellow\tColor blue\tColor magenta\tColor cyan\tColor white\tColor default\tColor"
case '<*>'
set res $res -x
case '*'
set res $res -f
end
set args (string replace -r -- $regexp '' $args | string split ',' | string trim)
for arg in $args
if string match -q -- '--*' $arg
set res $res -l (string sub -s 3 -- $arg)
else
set res $res -o (string sub -s 2 -- $arg)
end
end
complete $res -d (string replace -- ' (+)' '' $desc)
end