#!/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 ---* 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 '' set -l presets (fastfetch --list-presets autocompletion)"\tPreset" set res $res -r -a "none\tDisable $presets" case '' set res $res -F -r case '' 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 '' 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 '' 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 '' 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