aboutsummaryrefslogtreecommitdiffhomepage
path: root/share/completions/apm.fish
diff options
context:
space:
mode:
authorGravatar Dan Underwood <dan-c-underwood@users.noreply.github.com>2015-09-15 19:00:32 +0100
committerGravatar Dan Underwood <dan.underwood@outlook.com>2015-09-16 15:54:42 +0100
commit18a116394d2c02d096c8e07933035bb39e62d8ff (patch)
tree0b06577021e0d5f2af25fb45719a0f439fa1d67c /share/completions/apm.fish
parent094948db51973c0db93620e0c30ebefb80e33cfa (diff)
Complete atom package manager or apmd
Completions for `apm` now support both the Advanced Power Management client and the Atom text editor.
Diffstat (limited to 'share/completions/apm.fish')
-rw-r--r--share/completions/apm.fish261
1 files changed, 253 insertions, 8 deletions
diff --git a/share/completions/apm.fish b/share/completions/apm.fish
index 2817e615..9a206c53 100644
--- a/share/completions/apm.fish
+++ b/share/completions/apm.fish
@@ -1,8 +1,253 @@
-#apm
-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"
+# 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 a command (argv[1]) appears once, exclusions can
+# can be provided (argv[2..-1]) that are ignored, e.g. `get` and `set`
+function __fish_apm_using_command
+ set command $argv[1]
+ if test (count $argv) -gt 1
+ set exclusions $argv[2..-1]
+ end
+ 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 '--color' '--no-color' $exclusions
+ continue
+ case $argv
+ # 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 '*'
+ return 1
+ 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 | grep -v '^;\|^$' | tr "\ =\ " "\t"
+end
+
+# Lists all installed atom packages
+function __fish_apm_list_packages
+ apm list -b
+end
+
+if apm -h ^| grep -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