mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 02:42:09 +02:00
72 lines
2.5 KiB
Fish
Executable File
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
|