Add completion subcommand (#1968)
* Add completion subcommand * Remove old completion scripts * Move completion logic
This commit is contained in:
parent
567f103ee3
commit
74c090a637
|
@ -13,8 +13,6 @@ keywords = ["static", "site", "generator", "blog"]
|
||||||
include = ["src/**/*", "LICENSE", "README.md"]
|
include = ["src/**/*", "LICENSE", "README.md"]
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
clap = "3"
|
|
||||||
clap_complete = "3"
|
|
||||||
winres = "0.1"
|
winres = "0.1"
|
||||||
time = "0.3"
|
time = "0.3"
|
||||||
|
|
||||||
|
@ -23,6 +21,7 @@ name = "zola"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = { version = "3", features = ["derive"] }
|
clap = { version = "3", features = ["derive"] }
|
||||||
|
clap_complete = "3"
|
||||||
# Below is for the serve cmd
|
# Below is for the serve cmd
|
||||||
hyper = { version = "0.14.1", default-features = false, features = ["runtime", "server", "http2", "http1"] }
|
hyper = { version = "0.14.1", default-features = false, features = ["runtime", "server", "http2", "http1"] }
|
||||||
tokio = { version = "1.0.1", default-features = false, features = ["rt", "fs", "time"] }
|
tokio = { version = "1.0.1", default-features = false, features = ["rt", "fs", "time"] }
|
||||||
|
|
10
build.rs
10
build.rs
|
@ -1,7 +1,3 @@
|
||||||
// use clap::Shell;
|
|
||||||
|
|
||||||
include!("src/cli.rs");
|
|
||||||
|
|
||||||
fn generate_pe_header() {
|
fn generate_pe_header() {
|
||||||
use time::OffsetDateTime;
|
use time::OffsetDateTime;
|
||||||
|
|
||||||
|
@ -18,12 +14,6 @@ fn generate_pe_header() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// disabled below as it fails in CI
|
|
||||||
// let mut app = build_cli();
|
|
||||||
// app.gen_completions("zola", Shell::Bash, "completions/");
|
|
||||||
// app.gen_completions("zola", Shell::Fish, "completions/");
|
|
||||||
// app.gen_completions("zola", Shell::Zsh, "completions/");
|
|
||||||
// app.gen_completions("zola", Shell::PowerShell, "completions/");
|
|
||||||
if std::env::var("CARGO_CFG_TARGET_OS").unwrap() != "windows"
|
if std::env::var("CARGO_CFG_TARGET_OS").unwrap() != "windows"
|
||||||
&& std::env::var("PROFILE").unwrap() != "release"
|
&& std::env::var("PROFILE").unwrap() != "release"
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,144 +0,0 @@
|
||||||
#compdef zola
|
|
||||||
|
|
||||||
autoload -U is-at-least
|
|
||||||
|
|
||||||
_zola() {
|
|
||||||
typeset -A opt_args
|
|
||||||
typeset -a _arguments_options
|
|
||||||
local ret=1
|
|
||||||
|
|
||||||
if is-at-least 5.2; then
|
|
||||||
_arguments_options=(-s -S -C)
|
|
||||||
else
|
|
||||||
_arguments_options=(-s -C)
|
|
||||||
fi
|
|
||||||
|
|
||||||
local context curcontext="$curcontext" state line
|
|
||||||
_arguments "${_arguments_options[@]}" \
|
|
||||||
'-c+[Path to a config file other than config.toml]' \
|
|
||||||
'--config=[Path to a config file other than config.toml]' \
|
|
||||||
'-h[Prints help information]' \
|
|
||||||
'--help[Prints help information]' \
|
|
||||||
'-V[Prints version information]' \
|
|
||||||
'--version[Prints version information]' \
|
|
||||||
":: :_zola_commands" \
|
|
||||||
"*::: :->zola" \
|
|
||||||
&& ret=0
|
|
||||||
case $state in
|
|
||||||
(zola)
|
|
||||||
words=($line[1] "${words[@]}")
|
|
||||||
(( CURRENT += 1 ))
|
|
||||||
curcontext="${curcontext%:*:*}:zola-command-$line[1]:"
|
|
||||||
case $line[1] in
|
|
||||||
(init)
|
|
||||||
_arguments "${_arguments_options[@]}" \
|
|
||||||
'-h[Prints help information]' \
|
|
||||||
'--help[Prints help information]' \
|
|
||||||
'-V[Prints version information]' \
|
|
||||||
'--version[Prints version information]' \
|
|
||||||
'::name -- Name of the project. Will create a new directory with that name in the current directory:_files' \
|
|
||||||
&& ret=0
|
|
||||||
;;
|
|
||||||
(build)
|
|
||||||
_arguments "${_arguments_options[@]}" \
|
|
||||||
'-u+[Force the base URL to be that value (default to the one in config.toml)]' \
|
|
||||||
'--base-url=[Force the base URL to be that value (default to the one in config.toml)]' \
|
|
||||||
'-o+[Outputs the generated site in the given path]' \
|
|
||||||
'--output-dir=[Outputs the generated site in the given path]' \
|
|
||||||
'--drafts[Include drafts when loading the site]' \
|
|
||||||
'-h[Prints help information]' \
|
|
||||||
'--help[Prints help information]' \
|
|
||||||
'-V[Prints version information]' \
|
|
||||||
'--version[Prints version information]' \
|
|
||||||
&& ret=0
|
|
||||||
;;
|
|
||||||
(serve)
|
|
||||||
_arguments "${_arguments_options[@]}" \
|
|
||||||
'-i+[Interface to bind on]' \
|
|
||||||
'--interface=[Interface to bind on]' \
|
|
||||||
'-p+[Which port to use]' \
|
|
||||||
'--port=[Which port to use]' \
|
|
||||||
'-o+[Outputs the generated site in the given path]' \
|
|
||||||
'--output-dir=[Outputs the generated site in the given path]' \
|
|
||||||
'-u+[Changes the base_url]' \
|
|
||||||
'--base-url=[Changes the base_url]' \
|
|
||||||
'--watch-only[Do not start a server, just re-build project on changes]' \
|
|
||||||
'--drafts[Include drafts when loading the site]' \
|
|
||||||
'-O[Open site in the default browser]' \
|
|
||||||
'--open[Open site in the default browser]' \
|
|
||||||
'-h[Prints help information]' \
|
|
||||||
'--help[Prints help information]' \
|
|
||||||
'-V[Prints version information]' \
|
|
||||||
'--version[Prints version information]' \
|
|
||||||
&& ret=0
|
|
||||||
;;
|
|
||||||
(check)
|
|
||||||
_arguments "${_arguments_options[@]}" \
|
|
||||||
'--drafts[Include drafts when loading the site]' \
|
|
||||||
'-h[Prints help information]' \
|
|
||||||
'--help[Prints help information]' \
|
|
||||||
'-V[Prints version information]' \
|
|
||||||
'--version[Prints version information]' \
|
|
||||||
&& ret=0
|
|
||||||
;;
|
|
||||||
(help)
|
|
||||||
_arguments "${_arguments_options[@]}" \
|
|
||||||
'-h[Prints help information]' \
|
|
||||||
'--help[Prints help information]' \
|
|
||||||
'-V[Prints version information]' \
|
|
||||||
'--version[Prints version information]' \
|
|
||||||
&& ret=0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
(( $+functions[_zola_commands] )) ||
|
|
||||||
_zola_commands() {
|
|
||||||
local commands; commands=(
|
|
||||||
"init:Create a new Zola project" \
|
|
||||||
"build:Deletes the output directory if there is one and builds the site" \
|
|
||||||
"serve:Serve the site. Rebuild and reload on change automatically" \
|
|
||||||
"check:Try building the project without rendering it. Checks links" \
|
|
||||||
"help:Prints this message or the help of the given subcommand(s)" \
|
|
||||||
)
|
|
||||||
_describe -t commands 'zola commands' commands "$@"
|
|
||||||
}
|
|
||||||
(( $+functions[_zola__build_commands] )) ||
|
|
||||||
_zola__build_commands() {
|
|
||||||
local commands; commands=(
|
|
||||||
|
|
||||||
)
|
|
||||||
_describe -t commands 'zola build commands' commands "$@"
|
|
||||||
}
|
|
||||||
(( $+functions[_zola__check_commands] )) ||
|
|
||||||
_zola__check_commands() {
|
|
||||||
local commands; commands=(
|
|
||||||
|
|
||||||
)
|
|
||||||
_describe -t commands 'zola check commands' commands "$@"
|
|
||||||
}
|
|
||||||
(( $+functions[_zola__help_commands] )) ||
|
|
||||||
_zola__help_commands() {
|
|
||||||
local commands; commands=(
|
|
||||||
|
|
||||||
)
|
|
||||||
_describe -t commands 'zola help commands' commands "$@"
|
|
||||||
}
|
|
||||||
(( $+functions[_zola__init_commands] )) ||
|
|
||||||
_zola__init_commands() {
|
|
||||||
local commands; commands=(
|
|
||||||
|
|
||||||
)
|
|
||||||
_describe -t commands 'zola init commands' commands "$@"
|
|
||||||
}
|
|
||||||
(( $+functions[_zola__serve_commands] )) ||
|
|
||||||
_zola__serve_commands() {
|
|
||||||
local commands; commands=(
|
|
||||||
|
|
||||||
)
|
|
||||||
_describe -t commands 'zola serve commands' commands "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
_zola "$@"
|
|
|
@ -1,93 +0,0 @@
|
||||||
|
|
||||||
using namespace System.Management.Automation
|
|
||||||
using namespace System.Management.Automation.Language
|
|
||||||
|
|
||||||
Register-ArgumentCompleter -Native -CommandName 'zola' -ScriptBlock {
|
|
||||||
param($wordToComplete, $commandAst, $cursorPosition)
|
|
||||||
|
|
||||||
$commandElements = $commandAst.CommandElements
|
|
||||||
$command = @(
|
|
||||||
'zola'
|
|
||||||
for ($i = 1; $i -lt $commandElements.Count; $i++) {
|
|
||||||
$element = $commandElements[$i]
|
|
||||||
if ($element -isnot [StringConstantExpressionAst] -or
|
|
||||||
$element.StringConstantType -ne [StringConstantType]::BareWord -or
|
|
||||||
$element.Value.StartsWith('-')) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
$element.Value
|
|
||||||
}) -join ';'
|
|
||||||
|
|
||||||
$completions = @(switch ($command) {
|
|
||||||
'zola' {
|
|
||||||
[CompletionResult]::new('-c', 'c', [CompletionResultType]::ParameterName, 'Path to a config file other than config.toml in the root of project')
|
|
||||||
[CompletionResult]::new('--config', 'config', [CompletionResultType]::ParameterName, 'Path to a config file other than config.toml in the root of project')
|
|
||||||
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
[CompletionResult]::new('init', 'init', [CompletionResultType]::ParameterValue, 'Create a new Zola project')
|
|
||||||
[CompletionResult]::new('build', 'build', [CompletionResultType]::ParameterValue, 'Deletes the output directory if there is one and builds the site')
|
|
||||||
[CompletionResult]::new('serve', 'serve', [CompletionResultType]::ParameterValue, 'Serve the site. Rebuild and reload on change automatically')
|
|
||||||
[CompletionResult]::new('check', 'check', [CompletionResultType]::ParameterValue, 'Try building the project without rendering it. Checks links')
|
|
||||||
[CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Prints this message or the help of the given subcommand(s)')
|
|
||||||
break
|
|
||||||
}
|
|
||||||
'zola;init' {
|
|
||||||
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
break
|
|
||||||
}
|
|
||||||
'zola;build' {
|
|
||||||
[CompletionResult]::new('-u', 'u', [CompletionResultType]::ParameterName, 'Force the base URL to be that value (default to the one in config.toml)')
|
|
||||||
[CompletionResult]::new('--base-url', 'base-url', [CompletionResultType]::ParameterName, 'Force the base URL to be that value (default to the one in config.toml)')
|
|
||||||
[CompletionResult]::new('-o', 'o', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path')
|
|
||||||
[CompletionResult]::new('--output-dir', 'output-dir', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path')
|
|
||||||
[CompletionResult]::new('--drafts', 'drafts', [CompletionResultType]::ParameterName, 'Include drafts when loading the site')
|
|
||||||
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
break
|
|
||||||
}
|
|
||||||
'zola;serve' {
|
|
||||||
[CompletionResult]::new('-i', 'i', [CompletionResultType]::ParameterName, 'Interface to bind on')
|
|
||||||
[CompletionResult]::new('--interface', 'interface', [CompletionResultType]::ParameterName, 'Interface to bind on')
|
|
||||||
[CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Which port to use')
|
|
||||||
[CompletionResult]::new('--port', 'port', [CompletionResultType]::ParameterName, 'Which port to use')
|
|
||||||
[CompletionResult]::new('-o', 'o', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path')
|
|
||||||
[CompletionResult]::new('--output-dir', 'output-dir', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path')
|
|
||||||
[CompletionResult]::new('-u', 'u', [CompletionResultType]::ParameterName, 'Changes the base_url')
|
|
||||||
[CompletionResult]::new('--base-url', 'base-url', [CompletionResultType]::ParameterName, 'Changes the base_url')
|
|
||||||
[CompletionResult]::new('--watch-only', 'watch-only', [CompletionResultType]::ParameterName, 'Do not start a server, just re-build project on changes')
|
|
||||||
[CompletionResult]::new('--drafts', 'drafts', [CompletionResultType]::ParameterName, 'Include drafts when loading the site')
|
|
||||||
[CompletionResult]::new('-O', 'O', [CompletionResultType]::ParameterName, 'Open site in the default browser')
|
|
||||||
[CompletionResult]::new('--open', 'open', [CompletionResultType]::ParameterName, 'Open site in the default browser')
|
|
||||||
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
break
|
|
||||||
}
|
|
||||||
'zola;check' {
|
|
||||||
[CompletionResult]::new('--drafts', 'drafts', [CompletionResultType]::ParameterName, 'Include drafts when loading the site')
|
|
||||||
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
break
|
|
||||||
}
|
|
||||||
'zola;help' {
|
|
||||||
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
|
||||||
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
|
||||||
break
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
$completions.Where{ $_.CompletionText -like "$wordToComplete*" } |
|
|
||||||
Sort-Object -Property ListItemText
|
|
||||||
}
|
|
|
@ -1,187 +0,0 @@
|
||||||
_zola() {
|
|
||||||
local i cur prev opts cmds
|
|
||||||
COMPREPLY=()
|
|
||||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
||||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
||||||
cmd=""
|
|
||||||
opts=""
|
|
||||||
|
|
||||||
for i in ${COMP_WORDS[@]}
|
|
||||||
do
|
|
||||||
case "${i}" in
|
|
||||||
zola)
|
|
||||||
cmd="zola"
|
|
||||||
;;
|
|
||||||
|
|
||||||
build)
|
|
||||||
cmd+="__build"
|
|
||||||
;;
|
|
||||||
check)
|
|
||||||
cmd+="__check"
|
|
||||||
;;
|
|
||||||
help)
|
|
||||||
cmd+="__help"
|
|
||||||
;;
|
|
||||||
init)
|
|
||||||
cmd+="__init"
|
|
||||||
;;
|
|
||||||
serve)
|
|
||||||
cmd+="__serve"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
case "${cmd}" in
|
|
||||||
zola)
|
|
||||||
opts=" -h -V -c --help --version --config init build serve check help"
|
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
case "${prev}" in
|
|
||||||
|
|
||||||
--config)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
-c)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
COMPREPLY=()
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
|
|
||||||
zola__build)
|
|
||||||
opts=" -h -V -u -o --drafts --help --version --base-url --output-dir "
|
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
case "${prev}" in
|
|
||||||
|
|
||||||
--base-url)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
-u)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
--output-dir)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
-o)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
COMPREPLY=()
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
zola__check)
|
|
||||||
opts=" -h -V --drafts --help --version "
|
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
case "${prev}" in
|
|
||||||
|
|
||||||
*)
|
|
||||||
COMPREPLY=()
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
zola__help)
|
|
||||||
opts=" -h -V --help --version "
|
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
case "${prev}" in
|
|
||||||
|
|
||||||
*)
|
|
||||||
COMPREPLY=()
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
zola__init)
|
|
||||||
opts=" -h -V --help --version <name> "
|
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
case "${prev}" in
|
|
||||||
|
|
||||||
*)
|
|
||||||
COMPREPLY=()
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
zola__serve)
|
|
||||||
opts=" -O -h -V -i -p -o -u --watch-only --drafts --open --help --version --interface --port --output-dir --base-url "
|
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
case "${prev}" in
|
|
||||||
|
|
||||||
--interface)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
-i)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
--port)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
-p)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
--output-dir)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
-o)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
--base-url)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
-u)
|
|
||||||
COMPREPLY=($(compgen -f "${cur}"))
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
COMPREPLY=()
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
complete -F _zola -o bashdefault -o default zola
|
|
|
@ -1,29 +0,0 @@
|
||||||
complete -c zola -n "__fish_use_subcommand" -s c -l config -d 'Path to a config file other than config.toml in the root of project'
|
|
||||||
complete -c zola -n "__fish_use_subcommand" -s h -l help -d 'Prints help information'
|
|
||||||
complete -c zola -n "__fish_use_subcommand" -s V -l version -d 'Prints version information'
|
|
||||||
complete -c zola -n "__fish_use_subcommand" -f -a "init" -d 'Create a new Zola project'
|
|
||||||
complete -c zola -n "__fish_use_subcommand" -f -a "build" -d 'Deletes the output directory if there is one and builds the site'
|
|
||||||
complete -c zola -n "__fish_use_subcommand" -f -a "serve" -d 'Serve the site. Rebuild and reload on change automatically'
|
|
||||||
complete -c zola -n "__fish_use_subcommand" -f -a "check" -d 'Try building the project without rendering it. Checks links'
|
|
||||||
complete -c zola -n "__fish_use_subcommand" -f -a "help" -d 'Prints this message or the help of the given subcommand(s)'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from init" -s h -l help -d 'Prints help information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from init" -s V -l version -d 'Prints version information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from build" -s u -l base-url -d 'Force the base URL to be that value (default to the one in config.toml)'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from build" -s o -l output-dir -d 'Outputs the generated site in the given path'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from build" -l drafts -d 'Include drafts when loading the site'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from build" -s h -l help -d 'Prints help information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from build" -s V -l version -d 'Prints version information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -s i -l interface -d 'Interface to bind on'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -s p -l port -d 'Which port to use'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -s o -l output-dir -d 'Outputs the generated site in the given path'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -s u -l base-url -d 'Changes the base_url'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -l watch-only -d 'Do not start a server, just re-build project on changes'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -l drafts -d 'Include drafts when loading the site'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -s O -l open -d 'Open site in the default browser'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -s h -l help -d 'Prints help information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from serve" -s V -l version -d 'Prints version information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from check" -l drafts -d 'Include drafts when loading the site'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from check" -s h -l help -d 'Prints help information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from check" -s V -l version -d 'Prints version information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from help" -s h -l help -d 'Prints help information'
|
|
||||||
complete -c zola -n "__fish_seen_subcommand_from help" -s V -l version -d 'Prints version information'
|
|
|
@ -1,6 +1,7 @@
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use clap::{Parser, Subcommand};
|
use clap::{Parser, Subcommand};
|
||||||
|
use clap_complete::Shell;
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[clap(version, author, about)]
|
#[clap(version, author, about)]
|
||||||
|
@ -83,4 +84,11 @@ pub enum Command {
|
||||||
#[clap(long)]
|
#[clap(long)]
|
||||||
drafts: bool,
|
drafts: bool,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/// Generate shell completion
|
||||||
|
Completion {
|
||||||
|
/// Shell to generate completion for
|
||||||
|
#[clap(arg_enum)]
|
||||||
|
shell: Shell,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ use std::time::Instant;
|
||||||
use cli::{Cli, Command};
|
use cli::{Cli, Command};
|
||||||
use utils::net::{get_available_port, port_is_available};
|
use utils::net::{get_available_port, port_is_available};
|
||||||
|
|
||||||
use clap::Parser;
|
use clap::{CommandFactory, Parser};
|
||||||
use time::UtcOffset;
|
use time::UtcOffset;
|
||||||
|
|
||||||
mod cli;
|
mod cli;
|
||||||
|
@ -100,5 +100,9 @@ fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Command::Completion { shell } => {
|
||||||
|
let cmd = &mut Cli::command();
|
||||||
|
clap_complete::generate(shell, cmd, cmd.get_name().to_string(), &mut std::io::stdout());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue