summaryrefslogtreecommitdiffstats
path: root/completions/fastfetch.fish
blob: f4804f5f501e70eccd725b4a4565fb566f8ad782 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
if not type -q fastfetch
    exit
end

command -q python3
if test $status -ne 0
    exit
end

complete -c fastfetch -f

function __fastfetch_complete_bool
    echo -e "true\tBool"
    echo -e "false\tBool"
end

function __fastfetch_complete_color
    echo -e "black\tColor"
    echo -e "red\tColor"
    echo -e "green\tColor"
    echo -e "yellow\tColor"
    echo -e "blue\tColor"
    echo -e "magenta\tColor"
    echo -e "cyan\tColor"
    echo -e "white\tColor"
    echo -e "default\tColor"
end

function __fastfetch_complete_command
    for line in (fastfetch --list-modules autocompletion)
        set -l pair (string split -m 2 : $line)
        set -l module (string lower $pair[1])

        echo -e "$module-format\tModule format"
    end
    echo -e "format\tCustom format"
    echo -e "color\tColor format"
end

function __fastfetch_complete_config
    for line in (fastfetch --list-presets autocompletion)
        echo -e "$line\tPreset"
    end
    echo -e "none\tDisable loading config file"
end

function __fastfetch_complete_logo
    for line in (fastfetch --list-logos autocompletion)
        echo -e "$line\tBuiltin logo"
    end
    echo -e "none\tDon't print logo"
    echo -e "small\tPrint small ascii logo if available"
end

function __fastfetch_complete_structure
    for line in (fastfetch --list-modules autocompletion)
        set -l pair (string split -m 2 : $line)
        echo -e "$pair[1]\t$pair[2]"
    end
end

echo '
import json, subprocess, sys


def main():
    data: dict[str, list[dict]] = json.loads(subprocess.check_output(["fastfetch", "--help-raw"]))

    for key in data:
        for flag in data[key]:
            if flag["long"] == "logo-color-[1-9]":
                for i in range(1, 10):
                    print(f"""complete -c fastfetch -d "{flag["desc"]}" -l "logo-color-{i}" -x -a "(__fastfetch_complete_color)" """)
                continue

            if flag.get("pseudo", False):
                continue

            command_prefix = f"""complete -c fastfetch -d "{flag["desc"]}" -l "{flag["long"]}\""""
            if "short" in flag:
                command_prefix += f""" -o {flag["short"]}"""

            if "arg" in flag:
                type: str = flag["arg"]["type"]
                if type == "bool":
                    print(f"{command_prefix} -x -a \"(__fastfetch_complete_bool)\"")
                elif type == "color":
                    print(f"{command_prefix} -x -a \"(__fastfetch_complete_color)\"")
                elif type == "command":
                    print(f"{command_prefix} -x -a \"(__fastfetch_complete_command)\"")
                elif type == "config":
                    print(f"{command_prefix} -x -a \"(__fastfetch_complete_config)\"")
                elif type == "enum":
                    temp: str = " ".join(flag["arg"]["enum"])
                    print(f"{command_prefix} -x -a \"{temp}\"")
                elif type == "logo":
                    print(f"{command_prefix} -x -a \"(__fastfetch_complete_logo)\"")
                elif type == "structure":
                    print(f"{command_prefix} -x -a \"(__fish_complete_list : __fastfetch_complete_structure)\"")
                elif type == "path":
                    print(f"{command_prefix} -r -F")
                else:
                    print(f"{command_prefix} -x")
            else:
                print(f"{command_prefix} -f")


if __name__ == "__main__":
    try:
        main()
    except:
        sys.exit(1)
' | python3 | source