mirror of
https://github.com/reactos/ninja.git
synced 2024-11-26 21:20:23 +00:00
957d1990b6
The described way of installation makes zsh fail with `_arguments:comparguments:325: can only be called from completion function`. Per [zsh documentation](https://github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org#telling-zsh-which-function-to-use-for-completing-a-command) the correct way is to use `$fpath`.
73 lines
2.2 KiB
Plaintext
73 lines
2.2 KiB
Plaintext
#compdef ninja
|
|
# Copyright 2011 Google Inc. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# Add the following to your .zshrc to tab-complete ninja targets
|
|
# fpath=(path/to/ninja/misc/zsh-completion $fpath)
|
|
|
|
__get_targets() {
|
|
dir="."
|
|
if [ -n "${opt_args[-C]}" ];
|
|
then
|
|
eval dir="${opt_args[-C]}"
|
|
fi
|
|
file="build.ninja"
|
|
if [ -n "${opt_args[-f]}" ];
|
|
then
|
|
eval file="${opt_args[-f]}"
|
|
fi
|
|
targets_command="ninja -f \"${file}\" -C \"${dir}\" -t targets all"
|
|
eval ${targets_command} 2>/dev/null | cut -d: -f1
|
|
}
|
|
|
|
__get_tools() {
|
|
ninja -t list 2>/dev/null | while read -r a b; do echo $a; done | tail -n +2
|
|
}
|
|
|
|
__get_modes() {
|
|
ninja -d list 2>/dev/null | while read -r a b; do echo $a; done | tail -n +2 | sed '$d'
|
|
}
|
|
|
|
__modes() {
|
|
local -a modes
|
|
modes=(${(fo)"$(__get_modes)"})
|
|
_describe 'modes' modes
|
|
}
|
|
|
|
__tools() {
|
|
local -a tools
|
|
tools=(${(fo)"$(__get_tools)"})
|
|
_describe 'tools' tools
|
|
}
|
|
|
|
__targets() {
|
|
local -a targets
|
|
targets=(${(fo)"$(__get_targets)"})
|
|
_describe 'targets' targets
|
|
}
|
|
|
|
_arguments \
|
|
{-h,--help}'[Show help]' \
|
|
'--version[Print ninja version]' \
|
|
'-C+[Change to directory before doing anything else]:directories:_directories' \
|
|
'-f+[Specify input build file (default=build.ninja)]:files:_files' \
|
|
'-j+[Run N jobs in parallel (default=number of CPUs available)]:number of jobs' \
|
|
'-l+[Do not start new jobs if the load average is greater than N]:number of jobs' \
|
|
'-k+[Keep going until N jobs fail (default=1)]:number of jobs' \
|
|
'-n[Dry run (do not run commands but act like they succeeded)]' \
|
|
'-v[Show all command lines while building]' \
|
|
'-d+[Enable debugging (use -d list to list modes)]:modes:__modes' \
|
|
'-t+[Run a subtool (use -t list to list subtools)]:tools:__tools' \
|
|
'*::targets:__targets'
|