From b46b0310f3ca7ab601f80bcdca6ceff7075b878f Mon Sep 17 00:00:00 2001 From: Laurent Pireyn Date: Mon, 13 Nov 2017 06:03:11 +0100 Subject: [PATCH] Create Hugo completion (#4529) --- share/completions/hugo.fish | 225 ++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 share/completions/hugo.fish diff --git a/share/completions/hugo.fish b/share/completions/hugo.fish new file mode 100644 index 000000000..565e40a5f --- /dev/null +++ b/share/completions/hugo.fish @@ -0,0 +1,225 @@ +# Completions for Hugo (https://gohugo.io) + +# Functions + +function __fish_hugo_command + set -l tokens (commandline -opc) + test (count $tokens) -le 1; and return 1 + set -l command "" + set -l skip 1 + for token in $tokens[2..-1] + if test $skip -eq 0 + set skip 1 + else + switch $token + case "--config" "--logFile" + set skip 0 + case "-*" + case "*" + set command (string trim -l "$command $token") + end + end + end + test (count $command) -eq 0; and return 1 + echo $command +end + +function __fish_hugo_using_command + set -l command (__fish_hugo_command) + test "$command" = "$argv" +end + +function __fish_hugo_using_main_like_command + set -l command (__fish_hugo_command) + switch "$command" + case "" benchmark server + return 0 + end + return 1 +end + +# Global options + +complete -c hugo -l config -f -d "Configuration file" +complete -c hugo -l debug -f -d "Debug output" +complete -c hugo -l log -f -d "Enable logging" +complete -c hugo -l logFile -r -d "Log file" +complete -c hugo -l quiet -f -d "Quiet mode" +complete -c hugo -s v -l verbose -f -d "Verbose output" +complete -c hugo -l verboseLog -f -d "Verbose logging" + +# Main-like commands + +complete -c hugo -n "__fish_hugo_using_main_like_command" -s b -l baseURL -r -d "Hostname and path to the root" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s B -l buildDrafts -f -d "Include content marked as draft" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s E -l buildExpired -f -d "Include expired content" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s F -l buildFuture -f -d "Include content with publishdate in the future" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l cacheDir -f -a "(__fish_complete_directories (commandline -ct) 'Cache directory')" -d "Cache directory" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l canonifyURLs -f -d "Canonicalize all relative URLs using baseurl" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l cleanDestinationDir -f -d "Remove files from destination not found in static directories" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s c -l contentDir -f -a "(__fish_complete_directories (commandline -ct) 'Content directory')" -d "Content directory" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s d -l destination -f -a "(__fish_complete_directories (commandline -ct) 'Destination directory')" -d "Destination directory" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l disable404 -f -d "Do not build 404 page" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l disableKinds -r -d "Disable different kinds of pages" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l disableRSS -f -d "Do not build RSS files" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l disableSitemap -f -d "Do not build sitemap files" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l enableGitInfo -f -d "Add Git revision, date and author info to the pages" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l forceSyncStatic -f -d "Copy all files when static is changed" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s h -l help -f -d "Help for hugo" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l i18n-warnings -f -d "Print missing translations" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l ignoreCache -f -d "Ignore the cache directory" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s l -l layoutDir -f -a "(__fish_complete_directories (commandline -ct) 'Layout directory')" -d "Layout directory" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l noChmod -f -d "Do not sync permission mode of files" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l noTimes -f -d "Do not sync modification time of files" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l pluralizeListTitles -f -d "Pluralize titles in lists using inflect" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l preserveTaxonomyNames -f -d "Preserve taxonomy names as written" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l renderToMemory -f -d "Render to memory" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s s -l source -f -a "(__fish_complete_directories (commandline -ct) 'Source directory')" -d "Source directory" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l stepAnalysis -f -d "Display memory and timing of different steps of the program" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l templateMetrics -f -d "Display metrics about template executions" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l templateMetricsHints -f -d "Calculate some improvement hints when combined with --templateMetrics" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s t -l theme -r -d "Theme to use" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l themesDir -f -a "(__fish_complete_directories (commandline -ct) 'Themes directory')" -d "Themes directory" +complete -c hugo -n "__fish_hugo_using_main_like_command" -l uglyURLs -f -d "Use /filename.html instead of /filename/" +complete -c hugo -n "__fish_hugo_using_main_like_command" -s w -l watch -f -d "Watch filesystem for changes and recreate as needed" + +# Commands + +# benchmark +complete -c hugo -n "not __fish_hugo_command" -f -a benchmark -d "Benchmark Hugo by building the site a number of times" +complete -c hugo -n "__fish_hugo_using_command benchmark" -s n -l count -f -d "Number of times to build the site" +complete -c hugo -n "__fish_hugo_using_command benchmark" -l cpuprofile -r -d "CPU profile file" +complete -c hugo -n "__fish_hugo_using_command benchmark" -s h -l help -f -d "Help for benchmark" +complete -c hugo -n "__fish_hugo_using_command benchmark" -l memprofile -r -d "Memory profile file" +complete -c hugo -n "__fish_hugo_using_command benchmark" -l renderToMemory -f -d "Render to memory" +complete -c hugo -n "__fish_hugo_using_command benchmark" -l stepAnalysis -f -d "Display memory and timing of different steps of the program" +complete -c hugo -n "__fish_hugo_using_command benchmark" -l templateMetrics -f -d "Display metrics about template executions" +complete -c hugo -n "__fish_hugo_using_command benchmark" -l templateMetricsHints -f -d "Calculate some improvement hints when combined with --templateMetrics" + +# check +complete -c hugo -n "not __fish_hugo_command" -f -a check -d "Perform some verification checks" +complete -c hugo -n "__fish_hugo_using_command check" -s h -l help -f -d "Help for check" + +# check ulimit +complete -c hugo -n "__fish_hugo_using_command check" -f -a ulimit -d "Check system ulimit settings" +complete -c hugo -n "__fish_hugo_using_command check ulimit" -s h -l help -f -d "Help for ulimit" + +# config +complete -c hugo -n "not __fish_hugo_command" -f -a config -d "Print the site configuration" +complete -c hugo -n "__fish_hugo_using_command config" -s h -l help -f -d "Help for config" + +# convert +complete -c hugo -n "not __fish_hugo_command" -f -a convert -d "Convert the content to different formats" +complete -c hugo -n "__fish_hugo_using_command convert" -s h -l help -f -d "Help for convert" +complete -c hugo -n "__fish_hugo_using_command convert" -s o -l output -f -a "(__fish_complete_directories (commandline -ct) 'Output directory')" -d "Output directory" +complete -c hugo -n "__fish_hugo_using_command convert" -s s -l source -f -a "(__fish_complete_directories (commandline -ct) 'Source directory')" -d "Source directory" +complete -c hugo -n "__fish_hugo_using_command convert" -l unsafe -f -d "Enable less safe operations" + +# convert toJSON +complete -c hugo -n "__fish_hugo_using_command convert" -f -a toJSON -d "Convert front matter to JSON" +complete -c hugo -n "__fish_hugo_using_command convert toJSON" -s h -l help -f -d "Help for toJSON" + +# convert toTOML +complete -c hugo -n "__fish_hugo_using_command convert" -f -a toTOML -d "Convert front matter to TOML" +complete -c hugo -n "__fish_hugo_using_command convert toTOML" -s h -l help -f -d "Help for toTOML" + +# convert toYAML +complete -c hugo -n "__fish_hugo_using_command convert" -f -a toYAML -d "Convert front matter to YAML" +complete -c hugo -n "__fish_hugo_using_command convert toYAML" -s h -l help -f -d "Help for toYAML" + +# env +complete -c hugo -n "not __fish_hugo_command" -f -a env -d "Print Hugo version and environment info" +complete -c hugo -n "__fish_hugo_using_command env" -s h -l help -f -d "Help for env" + +# gen +complete -c hugo -n "not __fish_hugo_command" -f -a gen -d "Collection of several useful generators" +complete -c hugo -n "__fish_hugo_using_command gen" -s h -l help -f -d "Help for gen" + +# gen autocomplete +complete -c hugo -n "__fish_hugo_using_command gen" -f -a autocomplete -d "Generate shell autocompletion script for Hugo" +complete -c hugo -n "__fish_hugo_using_command gen autocomplete" -l completionfile -r -d "Autocompletion file" +complete -c hugo -n "__fish_hugo_using_command gen autocomplete" -s h -l help -f -d "Help for autocomplete" +complete -c hugo -n "__fish_hugo_using_command gen autocomplete" -l type -f -a bash -d "Autocompletion type" + +# gen chromastyles +complete -c hugo -n "__fish_hugo_using_command gen" -f -a chromastyles -d "Generate CSS stylesheet for the Chroma code highlighter" +complete -c hugo -n "__fish_hugo_using_command gen chromastyles" -s h -l help -f -d "Help for chromastyles" +complete -c hugo -n "__fish_hugo_using_command gen chromastyles" -l highlightStyle -r -d "Style used for highlighting lines" +complete -c hugo -n "__fish_hugo_using_command gen chromastyles" -l lineStyle -r -d "Style used for line numbers" +complete -c hugo -n "__fish_hugo_using_command gen chromastyles" -l style -r -d "Highlighter style" + +# gen doc +complete -c hugo -n "__fish_hugo_using_command gen" -f -a doc -d "Generate Markdown documentation for the Hugo CLI" +complete -c hugo -n "__fish_hugo_using_command gen doc" -l dir -f -a "(__fish_complete_directories (commandline -ct) 'Doc directory')" -d "Doc directory" +complete -c hugo -n "__fish_hugo_using_command gen doc" -s h -l help -f -d "Help for doc" + +# gen man +complete -c hugo -n "__fish_hugo_using_command gen" -f -a man -d "Generate man pages for the Hugo CLI" +complete -c hugo -n "__fish_hugo_using_command gen man" -l dir -f -a "(__fish_complete_directories (commandline -ct) 'Man pages directory')" -d "Man pages directory" +complete -c hugo -n "__fish_hugo_using_command gen man" -s h -l help -f -d "Help for man" + +# import +complete -c hugo -n "not __fish_hugo_command" -f -a import -d "Import your site from others" +complete -c hugo -n "__fish_hugo_using_command import" -s h -l help -f -d "Help for import" + +# import jekyll +complete -c hugo -n "__fish_hugo_using_command import" -f -a jekyll -d "Import from Jekyll" +complete -c hugo -n "__fish_hugo_using_command import jekyll" -l force -f -d "Allow import into non-empty target directory" +complete -c hugo -n "__fish_hugo_using_command import jekyll" -s h -l help -f -d "Help for jekyll" + +# list +complete -c hugo -n "not __fish_hugo_command" -f -a list -d "List various types of content" +complete -c hugo -n "__fish_hugo_using_command list" -s h -l help -f -d "Help for list" +complete -c hugo -n "__fish_hugo_using_command list" -s s -l source -f -a "(__fish_complete_directories (commandline -ct) 'Source directory')" -d "Source directory" + +# list drafts +complete -c hugo -n "__fish_hugo_using_command list" -f -a drafts -d "List all drafts" +complete -c hugo -n "__fish_hugo_using_command list drafts" -s h -l help -f -d "Help for drafts" + +# list expired +complete -c hugo -n "__fish_hugo_using_command list" -f -a expired -d "List all expired posts" +complete -c hugo -n "__fish_hugo_using_command list expired" -s h -l help -f -d "Help for expired" + +# list future +complete -c hugo -n "__fish_hugo_using_command list" -f -a future -d "List all posts dated in the future" +complete -c hugo -n "__fish_hugo_using_command list future" -s h -l help -f -d "Help for future" + +# new +complete -c hugo -n "not __fish_hugo_command" -f -a new -d "Create new content" +complete -c hugo -n "__fish_hugo_using_command new" -l editor -r -d "Editor to use" +complete -c hugo -n "__fish_hugo_using_command new" -s h -l help -f -d "Help for new" +complete -c hugo -n "__fish_hugo_using_command new" -s k -l kind -r -d "Content type to create" +complete -c hugo -n "__fish_hugo_using_command new" -s s -l source -f -a "(__fish_complete_directories (commandline -ct) 'Source directory')" -d "Source directory" + +# new site +complete -c hugo -n "__fish_hugo_using_command new" -f -a site -d "Create a new site" +complete -c hugo -n "__fish_hugo_using_command new site" -l force -f -d "Create site inside non-empty directory" +complete -c hugo -n "__fish_hugo_using_command new site" -s f -l format -r -d "Config and front matter format" +complete -c hugo -n "__fish_hugo_using_command new site" -s h -l help -f -d "Help for site" + +# new theme +complete -c hugo -n "__fish_hugo_using_command new" -f -a theme -d "Create a new theme" +complete -c hugo -n "__fish_hugo_using_command new theme" -s h -l help -f -d "Help for theme" + +# server +complete -c hugo -n "not __fish_hugo_command" -f -a server -d "Start high performance web server" +complete -c hugo -n "__fish_hugo_using_command server" -l appendPort -f -d "Append port to baseurl" +complete -c hugo -n "__fish_hugo_using_command server" -l bind -r -d "Interface to which the server will bind" +complete -c hugo -n "__fish_hugo_using_command server" -l disableFastRender -f -d "Enable full re-renders on changes" +complete -c hugo -n "__fish_hugo_using_command server" -l disableLiveReload -f -d "Watch without enabling live browser reload on rebuild" +complete -c hugo -n "__fish_hugo_using_command server" -s h -l help -f -d "Help for server" +complete -c hugo -n "__fish_hugo_using_command server" -l liveReloadPort -r -d "Port for live reloading" +complete -c hugo -n "__fish_hugo_using_command server" -l meminterval -f -d "Interval to poll memory usage" +complete -c hugo -n "__fish_hugo_using_command server" -l memstats -f -d "Memory usage log file" +complete -c hugo -n "__fish_hugo_using_command server" -l navigateToChanged -f -d "Navigate to changed content file on live browser reload" +complete -c hugo -n "__fish_hugo_using_command server" -l noHTTPCache -f -d "Prevent HTTP caching" +complete -c hugo -n "__fish_hugo_using_command server" -s p -l port -r -d "Port on which the server will listen" +complete -c hugo -n "__fish_hugo_using_command server" -l renderToDisk -r -d "Render to destination directory" + +# undraft +complete -c hugo -n "not __fish_hugo_command" -f -a undraft -d "Reset the content draft status" +complete -c hugo -n "__fish_hugo_using_command undraft" -s h -l help -f -d "Help for undraft" + +# version +complete -c hugo -n "not __fish_hugo_command" -f -a version -d "Print the version number of Hugo" +complete -c hugo -n "__fish_hugo_using_command version" -s h -l help -f -d "Help for version"