aboutsummaryrefslogtreecommitdiffhomepage
path: root/share/completions/apm.fish
blob: 40e6794b5257903b676e7151c7c4c8718b3389f9 (plain)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# Returns exit code of 0 if apm hasn't received a command yet, e.g. `config`
function __fish_apm_needs_command
    set cmd (commandline -opc)
    if test (count $cmd) -eq 1
        return 0
    else if test (count $cmd) -gt 1
        for c in $cmd[2..-1]
            switch $c
                # Exclude options that are allowed to appear before command
                case '--color' '--no-color' 'help'
                    continue
                case '*'
                    return 1
            end
        end
        return 0
    end
    return 1
end

# Returns exit code of 0 if any command (argv[1..-1]) appears once, ignores flags.
function __fish_apm_using_command
    set commands $argv
    set cmd (commandline -opc)
    if test (count $cmd) -gt 1
        set -l command_seen_once 1
        for c in $cmd[2..-1]
            switch $c
                case '-*'
                    continue
                case $commands
                    # If the command is seen more than once then return 1
                    if test $command_seen_once -eq 1
                        set command_seen_once 0
                    else
                        return 1
                    end
                case '*'
                    if test $command_seen_once -eq 0
                        return 0
                    else
                        return 1
                    end
            end
        end
        return $command_seen_once
    end
    return 1
end

# Check if `commandline` contains a set of subcommands
function __fish_apm_includes_subcommand
    set cmd (commandline -opc)
    for subcommand in $argv
        if contains $subcommand $cmd
            return 0
        end
    end
    return 1
end

# Lists all apm config items
function __fish_apm_config_items
    apm config list | string match -r -v "^\s*;|^\s*\$" | string replace "\w*=\w*" \t
end

# Lists all installed atom packages
function __fish_apm_list_packages
    apm list -b
end

if apm -h ^| string match -q "*Atom Package Manager*"
    # Completions for Atom Package Manager

    ##################
    # global options #
    ##################

    # help
    complete -f -c apm -n '__fish_apm_needs_command' -s h -l help -d "Display help"
    complete -f -c apm -n '__fish_apm_needs_command' -a help -d "Display help"
    complete -f -c apm -n '__fish_apm_using_command clean config dedupe deinstall delete dev develop docs erase featured home init install link linked links list ln lns login ls open outdated publish rebuild rebuild-module-cache remove rm search show star starred stars test uninstall unlink unpublish unstar update upgrade view' -s h -l help -d 'Display help'

    # version
    complete -f -c apm -n '__fish_apm_needs_command' -s v -l version -d "Display version"

    # color
    complete -f -c apm -n '__fish_apm_needs_command' -l color -d "Enable colored output"
    complete -f -c apm -n '__fish_apm_needs_command' -l no-color -d "Disable colored output"

    ############
    # commands #
    ############

    # clean
    complete -f -c apm -n '__fish_apm_needs_command' -a clean -d "Deletes packages in node_modules not referenced
as dependency in package.json"

    # config
    set -l config_subcommands "get set edit delete list"
    complete -f -c apm -n '__fish_apm_needs_command' -a config -d "Modify or list configuration items"
    complete -x -c apm -n "__fish_apm_using_command config; and not __fish_apm_includes_subcommand $config_subcommands" -a set -d 'Set config item'
    complete -x -c apm -n "__fish_apm_using_command config; and not __fish_apm_includes_subcommand $config_subcommands" -a get -d 'Get config item'
    complete -x -c apm -n "__fish_apm_using_command config; and not __fish_apm_includes_subcommand $config_subcommands" -a delete -d 'Delete config item'
    complete -x -c apm -n "__fish_apm_using_command config; and not __fish_apm_includes_subcommand $config_subcommands" -a list -d 'List config items'
    complete -x -c apm -n "__fish_apm_using_command config; and not __fish_apm_includes_subcommand $config_subcommands" -a edit -d 'Edit config items'
    complete -x -c apm -n '__fish_apm_using_command config set get delete; and __fish_apm_includes_subcommand set get delete' -a '(__fish_apm_config_items)'

    # dedupe
    complete -f -c apm -n '__fish_apm_needs_command' -a dedupe -d "Reduce duplication in node_modules in current directory"

    # deinstall & delete & erase & remove & rm & uninstall
    set -l uninstall_commands "deinstall delete erase remove rm uninstall"
    complete -f -c apm -n '__fish_apm_needs_command' -a $uninstall_commands -d "Delete installed package(s) from ~/.atom/packages"
    complete -f -c apm -n "__fish_apm_using_command $uninstall_commands" -a '(__fish_apm_list_packages)'
    complete -f -c apm -n "__fish_apm_using_command $uninstall_commands" -l hard -d "Unlink package from ~/.atom/packages and ~/.atom/dev/packages"
    complete -f -c apm -n "__fish_apm_using_command $uninstall_commands" -s d -l dev -d "Unlink package from ~/.atom/dev/packages"

    # dev(elop)
    set -l dev_commands "dev develop"
    complete -f -c apm -n '__fish_apm_needs_command' -a $dev_commands -d "Clone install dependencies and link a package for development"
    complete -f -c apm -n "__fish_apm_using_command $dev_commands" -a '(__fish_apm_list_packages)'

    # docs & home & open
    set -l open_commands "docs home open"
    complete -f -c apm -n '__fish_apm_needs_command' -a $open_commands -d "Open a package's homepage in the default browser"
    complete -f -c apm -n "__fish_apm_using_command $open_commands" -s p -l print -d "Print URL instead of opening"
    complete -f -c apm -n "__fish_apm_using_command $open_commands" -a '(__fish_apm_list_packages)'

    # featured
    complete -f -c apm -n '__fish_apm_needs_command' -a featured -d "List Atom packages and themes currently featured in the
atom.io registry"
    complete -f -c apm -n '__fish_apm_using_command featured' -l json -d "Output featured packages as JSON array"
    complete -f -c apm -n '__fish_apm_using_command featured' -s t -l themes -d "Only list themes"
    complete -x -c apm -n '__fish_apm_using_command featured' -s c -l compatible -d "Only list packages/themes compatible with specified Atom version"

    # init
    complete -f -c apm -n '__fish_apm_needs_command' -a init -d "Generates code scaffolding for theme or package"
    complete -r -c apm -n '__fish_apm_using_command init' -l template -d "Path to the package or theme template"
    complete -x -c apm -n '__fish_apm_using_command init' -s p -l package -d "Generates a basic package"
    complete -x -c apm -n '__fish_apm_using_command init' -s t -l theme -d "Generates a basic theme"
    complete -x -c apm -n '__fish_apm_using_command init' -s l -l language -d "Generates a basic language package"
    complete -r -c apm -n '__fish_apm_using_command init' -s c -l convert -d "Convert TextMate bundle/theme"

    # install
    complete -f -c apm -n '__fish_apm_needs_command' -a install -d "Install Atom package to ~/.atom/packages/<package_name>"
    complete -f -c apm -n '__fish_apm_using_command install' -l check -d "Check native build tools are installed"
    complete -f -c apm -n '__fish_apm_using_command install' -l verbose -d "Show verbose debug information"
    complete -r -c apm -n '__fish_apm_using_command install' -l packages-file -d "Specify text file containing packages to install"
    complete -f -c apm -n '__fish_apm_using_command install' -l production -d "Do not install dev dependencies"
    complete -x -c apm -n '__fish_apm_using_command install' -s c -l compatible -d "Only install packages/themes compatible with specified Atom version"
    complete -f -c apm -n '__fish_apm_using_command install' -s s -l silent -d "Set npm log level to silent"
    complete -f -c apm -n '__fish_apm_using_command install' -s q -l quiet -d "Set npm log level to quiet"

    # link & ln
    set -l link_commands "link ln"
    complete -f -c apm -n '__fish_apm_needs_command' -a $link_commands -d "Create a symlink for the package in ~/.atom/packages"
    complete -f -c apm -n "__fish_apm_using_command $link_commands" -s d -l dev -d "Link to ~/.atom/dev/packages"

    # linked & links & lns
    set -l linked_commands "linked links lns"
    complete -f -c apm -n '__fish_apm_needs_command' -a $linked_commands -d "List all symlinked packages in ~/.atom/packages and
~/.atom/dev/packages"

    # list & ls
    set -l list_commands "list ls"
    complete -f -c apm -n '__fish_apm_needs_command' -a $list_commands -d "List all installed and bundled packages"
    complete -f -c apm -n "__fish_apm_using_command $list_commands" -s b -l bare -d "Print packages one per line with no formatting"
    complete -f -c apm -n "__fish_apm_using_command $list_commands" -s d -l dev -d "Include dev packages"
    complete -f -c apm -n "__fish_apm_using_command $list_commands" -s i -l installed -d "Only list installed packages/themes"
    complete -f -c apm -n "__fish_apm_using_command $list_commands" -s j -l json -d "Output all packages as a JSON object"
    complete -f -c apm -n "__fish_apm_using_command $list_commands" -s l -l links -d "Include linked packages"
    complete -f -c apm -n "__fish_apm_using_command $list_commands" -s t -l themes -d "Only list themes"
    complete -f -c apm -n "__fish_apm_using_command $list_commands" -s p -l packages -d "Only list packages"

    # login
    complete -f -c apm -n '__fish_apm_needs_command' -a login -d "Save Atom API token to keychain"
    complete -x -c apm -n "__fish_apm_using_command login" -l token -d "Specify API token"

    # outdated & upgrade & update
    set  -l upgrade_commands "outdated upgrade update"
    complete -f -c apm -n '__fish_apm_needs_command' -a $upgrade_commands -d "Upgrade out of date packages"
    complete -f -c apm -n "__fish_apm_using_command $upgrade_commands" -l json -d "Output outdated packages as JSON array"
    complete -x -c apm -n "__fish_apm_using_command $upgrade_commands" -l compatible -d "Only install packages/themes compatible with specified Atom version"
    complete -f -c apm -n "__fish_apm_using_command $upgrade_commands" -l verbose -d "Show verbose debug information"
    complete -f -c apm -n "__fish_apm_using_command $upgrade_commands" -s c -l confirm -d "Confirm before installing updates"
    complete -f -c apm -n "__fish_apm_using_command $upgrade_commands" -s l -l list -d "List but don't install the outdated packages"

    # publish
    set -l publish_subcommands "major minor patch build"
    complete -f -c apm -n '__fish_apm_needs_command' -a publish -d "Publish new version of package in current working directory"
    complete -f -c apm -n "__fish_apm_using_command publish; and not __fish_apm_includes_subcommand $publish_subcommands" -a $publish_subcommands -d "Semantic version category for new version"
    complete -x -c apm -n '__fish_apm_using_command publish' -s t -l tag -d "Specify a tag to publish"
    complete -x -c apm -n '__fish_apm_using_command publish' -s r -l rename -d "Specify a new name for the package"

    # rebuild
    complete -f -c apm -n '__fish_apm_needs_command' -a rebuild -d "Rebuild modules installed in node_modules in current working directory"

    # rebuild-module-cache
    complete -f -c apm -n '__fish_apm_needs_command' -a rebuild-module-cache -d "Rebuild module cache for installed packages"

    # search
    complete -f -c apm -n '__fish_apm_needs_command' -a search -d "Search for Atom packages/themes in the atom.io registry"
    complete -f -c apm -n '__fish_apm_using_command search' -l json -d "Output matching packages as JSON array"
    complete -f -c apm -n '__fish_apm_using_command search' -s p -l packages -d "Search only non-theme packages"
    complete -f -c apm -n '__fish_apm_using_command search' -s t -l themes -d "Search only themes"

    # show & view
    set -l show_commands "show view"
    complete -f -c apm -n '__fish_apm_needs_command' -a $show_commands -d "View information about package/theme in the atom.io registry"
    complete -f -c apm -n "__fish_apm_using_command $show_commands" -l json -d "Output as JSON array"
    complete -x -c apm -n "__fish_apm_using_command $show_commands" -l compatible -d "Show latest version compatible with specified Atom version"

    # star
    complete -f -c apm -n '__fish_apm_needs_command' -a star -d "Star the given packages on https://atom.io"
    complete -f -c apm -n '__fish_apm_using_command star' -l installed -d "Star all packages in ~/.atom/packages"

    # starred & stars
    set -l stars_commands "starred stars"
    complete -f -c apm -n '__fish_apm_needs_command' -a $stars_commands -d "List or install starred Atom packages and themes"
    complete -f -c apm -n "__fish_apm_using_command $stars_commands" -l json -d "Output packages as JSON array"
    complete -f -c apm -n "__fish_apm_using_command $stars_commands" -s i -l install -d "Install the starred packages"
    complete -f -c apm -n "__fish_apm_using_command $stars_commands" -s t -l themes -d "Only list themes"
    complete -x -c apm -n "__fish_apm_using_command $stars_commands" -s u -l user -d "GitHub username to show starred packages for"

    # test
    complete -f -c apm -n '__fish_apm_needs_command' -a test -d "Runs the package's tests contained within the spec directory"
    complete -r -c apm -n '__fish_apm_using_command test' -s p -l path -d "Path to atom command"

    # unlink
    complete -f -c apm -n '__fish_apm_needs_command' -a unlink -d "Delete the symlink in ~/.atom/packages for the package"
    complete -f -c apm -n '__fish_apm_using_command unlink' -l hard -d "Unlink package from ~/.atom/packages and ~/.atom/dev/packages"
    complete -f -c apm -n '__fish_apm_using_command unlink' -s d -l dev -d "Unlink package from ~/.atom/dev/packages"
    complete -f -c apm -n '__fish_apm_using_command unlink' -s a -l all -d "Unlink all packages in ~/.atom/packages and ~/.atom/dev/packages"

    # unpublish
    complete -f -c apm -n '__fish_apm_needs_command' -a unpublish -d "Remove published package or version from the atom.io registry"
    complete -f -c apm -n '__fish_apm_using_command unpublish' -s f -l force -d "Do not prompt for confirmation"

    # unstar
    complete -f -c apm -n '__fish_apm_needs_command' -a unstar -d "Unstar given packages on https://atom.io"

else
    # Completions for the Advanced Power Management client

    complete -f -c apm -s V -l version --description "Display version and exit"
    complete -f -c apm -s v -l verbose --description "Print APM info"
    complete -f -c apm -s m -l minutes --description "Print time remaining"
    complete -f -c apm -s M -l monitor --description "Monitor status info"
    complete -f -c apm -s S -l standby --description "Request APM standby mode"
    complete -f -c apm -s s -l suspend --description "Request APM suspend mode"
    complete -f -c apm -s d -l debug --description "APM status debugging info"
end