2017-07-15 04:24:31 +00:00
2018-03-16 18:11:08 +00:00
using namespace System . Management . Automation
using namespace System . Management . Automation . Language
2018-10-18 20:50:06 +00:00
Register-ArgumentCompleter -Native -CommandName 'zola' -ScriptBlock {
2018-03-16 18:11:08 +00:00
param ( $wordToComplete , $commandAst , $cursorPosition )
$commandElements = $commandAst . CommandElements
$command = @ (
2018-10-18 20:50:06 +00:00
'zola'
2018-03-16 18:11:08 +00:00
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 ) {
2018-10-18 20:50:06 +00:00
'zola' {
2018-03-16 18:11:08 +00:00
[ CompletionResult ] :: new ( '-c' , 'c' , [ CompletionResultType ] :: ParameterName , 'Path to a config file other than config.toml' )
[ CompletionResult ] :: new ( '--config' , 'config' , [ CompletionResultType ] :: ParameterName , 'Path to a config file other than config.toml' )
[ 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' )
2018-10-18 20:50:06 +00:00
[ CompletionResult ] :: new ( 'init' , 'init' , [ CompletionResultType ] :: ParameterValue , 'Create a new Zola project' )
2018-03-16 18:11:08 +00:00
[ CompletionResult ] :: new ( 'build' , 'build' , [ CompletionResultType ] :: ParameterValue , 'Builds the site' )
[ CompletionResult ] :: new ( 'serve' , 'serve' , [ CompletionResultType ] :: ParameterValue , 'Serve the site. Rebuild and reload on change automatically' )
[ CompletionResult ] :: new ( 'help' , 'help' , [ CompletionResultType ] :: ParameterValue , 'Prints this message or the help of the given subcommand(s)' )
break
}
2018-10-18 20:50:06 +00:00
'zola;init' {
2018-03-16 18:11:08 +00:00
[ 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
}
2018-10-18 20:50:06 +00:00
'zola;build' {
2018-03-16 18:11:08 +00:00
[ 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 ( '-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
}
2018-10-18 20:50:06 +00:00
'zola;serve' {
2018-03-16 18:11:08 +00:00
[ 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' )
2018-11-12 20:37:26 +00:00
[ CompletionResult ] :: new ( '--watch-only' , 'watch-only' , [ CompletionResultType ] :: ParameterName , 'Do not start a server, just re-build project on changes' )
2018-03-16 18:11:08 +00:00
[ 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
}
2018-10-18 20:50:06 +00:00
'zola;help' {
2018-03-16 18:11:08 +00:00
[ 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
2017-07-15 04:24:31 +00:00
}
2018-03-16 18:11:08 +00:00
} )
2017-07-15 04:24:31 +00:00
2018-03-16 18:11:08 +00:00
$completions . Where { $_ . CompletionText -like " $wordToComplete * " } |
Sort-Object -Property ListItemText
2017-07-15 04:24:31 +00:00
}