767 lines
24 KiB
Bash
767 lines
24 KiB
Bash
#compdef conan
|
|
# ------------------------------------------------------------------------------
|
|
# Copyright (c) 2010-2017 Github zsh-users - https://github.com/zsh-users
|
|
# All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
# * Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# * Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
# * Neither the name of the zsh-users nor the
|
|
# names of its contributors may be used to endorse or promote products
|
|
# derived from this software without specific prior written permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
|
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
# ------------------------------------------------------------------------------
|
|
# Description
|
|
# -----------
|
|
#
|
|
# Completion script for conan 2.0.0 (https://conan.io).
|
|
#
|
|
# ------------------------------------------------------------------------------
|
|
# Authors
|
|
# -------
|
|
#
|
|
# * Julien Nicoulaud <julien.nicoulaud@gmail.com>
|
|
# * Shohei Yoshida <https://github.com/syohex>
|
|
#
|
|
# ------------------------------------------------------------------------------
|
|
|
|
_conan_common_options=(
|
|
'(- *)'{-h,--help}'[show help message and exit]'
|
|
'-v[verbose output]'
|
|
'-vquiet[verbose level quiet]'
|
|
'-verror[verbose level error]'
|
|
'-vwarning[verbose level warning]'
|
|
'-vnotice[verbose level notice]'
|
|
'-vstatus[verbose level status]'
|
|
'-vverbose[verbose level verbose]'
|
|
'-vv[more verbose output]'
|
|
'-vdebug[verbose level debug]'
|
|
'-vvv[more and more verbose output]'
|
|
'-vtrace[verbose level trace]'
|
|
'--logger[show the output with log format, with time, type and message]'
|
|
)
|
|
|
|
_conan_package_options=(
|
|
'--name[Provide a package name if not specified in conanfile]:name'
|
|
'--version[Provide a package version if not specified in conanfile]:version'
|
|
'--user[Provide a user]:user'
|
|
'--channel[Provide a channel]:channel'
|
|
'--requires[directly provide requires instead of a conan file]:requires'
|
|
'--tool-requires[directly provide tool-requires instead of a conanfile]:tool_requires'
|
|
)
|
|
|
|
_conan_define_options=(
|
|
\*{-o,--options,'-o\:h','--options\:host'}'[define options of host machine]:option'
|
|
\*{'-o\:b','--options\:build'}'[define options of build machine]:option'
|
|
)
|
|
|
|
_conan_profile_options=(
|
|
'(-pr --profile -pr\:h --profile\:host)'{-pr,--profile,-pr:h,--profile:host}'[apply the specified profile to the host machine]: :_conan_profiles'
|
|
'(-pr\:b --profile\:build)'{-pr:b,--profile:build}'[apply the specified profile to the build machine]: :_conan_profiles'
|
|
)
|
|
|
|
_conan_setting_options=(
|
|
\*{-s,--settings,'-s\:h','--settings\:host'}'[overwrite the defaults of host machine to build]:setting'
|
|
\*{'-s\:b','--settings\:build'}'[overwrite the defaults of build machine to build]:setting'
|
|
)
|
|
|
|
_conan_configuration_options=(
|
|
\*{-c,--conf,'-c\:h','--conf\:host'}'[overwrite the defaults of host machine to configure]:config'
|
|
\*{'-c\:b','--conf\:build'}'[overwrite the defaults of build machine to configure]:config'
|
|
)
|
|
|
|
_conan_lockfile_options=(
|
|
'(-l --lockfile)'{-l,--lockfile}'[path to a lockfile]: :_files'
|
|
'--lockfile-partial[do not raise an error if some dependency is not found in lockfile]'
|
|
'--lockfile-out[filename of the updated lockfile]: :_files'
|
|
'--lockfile-packages[lock package-id and package-revision information]'
|
|
'--lockfile-clean[remove unused entries from the lockfile]'
|
|
)
|
|
|
|
_conan_remote_options=(
|
|
'(-r --remote -nr --no-remote)'{-r,--remote}'[look in the specified remote server]:remote'
|
|
'(-r --remote -nr --no-remote)'{-nr,--no-remote}'[do not use remote, resolve exclusively in the cache]'
|
|
)
|
|
|
|
_conan() {
|
|
local context state state_descr line
|
|
typeset -A opt_args
|
|
|
|
_arguments -C \
|
|
'(- : *)'{-h,--help}'[display help information]' \
|
|
'(- : *)'{-v,--version}'[display version information]' \
|
|
'(-h --help)1: :_conan_commands' \
|
|
'(-h --help)*:: :->command_args'
|
|
|
|
case $state in
|
|
command_args)
|
|
(( $+functions[_conan_${words[1]}] )) && _conan_${words[1]}
|
|
;;
|
|
esac
|
|
}
|
|
|
|
(( $+functions[_conan_commands] )) ||
|
|
_conan_commands() {
|
|
local -a commands=(
|
|
# consumer commands
|
|
'cache:perform file operations in the local cache'
|
|
'config:manages conan configuration information'
|
|
'graph:obtain information about the dependency graph without fetching binaries'
|
|
'inspect:inspect a conanfile.py to return its public fields'
|
|
'install:installs the requirements specified in a "conanfile.py" or "conanfile.txt"'
|
|
'list:list recipes, revisions or packages in the cache or the remotes'
|
|
'lock:create or manage lockfiles'
|
|
'profile:manage profiles'
|
|
'remote:manage the remote list and the users authenticated on them'
|
|
'remove:remove recipes or packages from local cache or a remote'
|
|
'search:search for package recipes in all the remotes or a remote'
|
|
|
|
# create commands
|
|
'build:install dependencies and call the build() method'
|
|
'create:create a package'
|
|
'download:download(without installing) a single conan package from a remote server'
|
|
'editable:allow working with a package that resides in user folder'
|
|
'export:export a recipe to the Conan package cache'
|
|
'export-pkg:create a package directly from pre-compiled binaries'
|
|
'new:create a new example recipe and source files from a template'
|
|
'source:call the source() method'
|
|
'test:test a package from a test_package folder'
|
|
'upload:upload packages to a remote'
|
|
)
|
|
|
|
_describe -t 'subcommands' 'subcommands' commands
|
|
}
|
|
|
|
(( $+functions[_conan_cache] )) ||
|
|
_conan_cache() {
|
|
local ret=1
|
|
|
|
_arguments -C \
|
|
'(- *)'{-h,--help}'[show help message and exit]' \
|
|
'1: :(clean path)' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
(args)
|
|
local -a opts=($_conan_common_options[@])
|
|
case $words[1] in
|
|
(clean)
|
|
opts+=(
|
|
'(-s --source)'{-s,--source}'[clean source folders]'
|
|
'(-b --build)'{-b,--build}'[clean build folders]'
|
|
'(-d --download)'{-d,--download}'[clean download folders]'
|
|
\*{-p,--package-query}'[remove only the packages matching a specific query]:query'
|
|
'1:pattern'
|
|
)
|
|
;;
|
|
(path)
|
|
opts+=(
|
|
'--folder[path to show]::type:(export_source source build)' \
|
|
'1:recipe_or_package_reference:_files'
|
|
)
|
|
;;
|
|
esac
|
|
|
|
_arguments "$opts[@]"
|
|
;;
|
|
esac
|
|
|
|
return $ret
|
|
}
|
|
|
|
(( $+functions[_conan_config] )) ||
|
|
_conan_config() {
|
|
_arguments -C \
|
|
'(- : *)'{-h,--help}'[display help information]' \
|
|
'1: :_conan_config_commands' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
(args)
|
|
local -a opts=($_conan_common_options[@])
|
|
case $words[1] in
|
|
(install)
|
|
opts+=(
|
|
'--verify-ssl[Verify SSL connection when downloading file]: :(True False)'
|
|
'(-t --type)'{-t,--type}'[Type of remote config]: :(git dir file url)'
|
|
\*{-a,--args}'[String with extra arguments for "git clone"]:arg'
|
|
\*{-sf,--source-folder}'[Install files only from a source subfolder from specified origin]: :_files -/'
|
|
'(-tf --target-folder)'{-tf,--target-folder}'[Install to that path in the conan cache]: :_files -/'
|
|
)
|
|
;;
|
|
(list)
|
|
opts+=(
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json)'
|
|
)
|
|
;;
|
|
esac
|
|
|
|
_arguments "$opts[@]"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
(( $+functions[_conan_config_commands] )) ||
|
|
_conan_config_commands() {
|
|
local -a commands=(
|
|
'home:show the Conan home folder'
|
|
'install:install the configuration into the Conan home folder'
|
|
'list:show all the Conan available configurations:'
|
|
)
|
|
_describe -t 'commands' "command" commands
|
|
}
|
|
|
|
(( $+functions[_conan_graph] )) ||
|
|
_conan_graph() {
|
|
_arguments -C \
|
|
'(- : *)'{-h,--help}'[display help information]' \
|
|
'1: :_conan_graph_commands' \
|
|
'*:: :->args'
|
|
|
|
local -a common_opts=(
|
|
$_conan_package_options[@]
|
|
\*{-b,--build}'[optional, specify which packages to build from source]:build'
|
|
$_conan_remote_options[@]
|
|
'(-u --update)'{-u,--update}'[will check the remote and in case a newer version]'
|
|
$_conan_define_options[@]
|
|
$_conan_profile_options[@]
|
|
$_conan_setting_options[@]
|
|
$_conan_configuration_options[@]
|
|
$_conan_lockfile_options[@]
|
|
)
|
|
|
|
case $state in
|
|
(args)
|
|
local -a opts=($_conan_common_options[@])
|
|
case $words[1] in
|
|
(build-order)
|
|
opts+=(
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json)'
|
|
$common_opts[@]
|
|
)
|
|
;;
|
|
(build-order-merge)
|
|
opts+=(
|
|
'--file[files to be merged]:file:_files'
|
|
)
|
|
;;
|
|
(info)
|
|
opts+=(
|
|
$common_opts[@]
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(html json dot)'
|
|
'--check-updates[check if there are recipe updates]'
|
|
'*--filter[show only the specified fields]:filter'
|
|
'*--package-filter[print information only for packages that match the patterns]:package_filter'
|
|
'--deploy[deploy using the provided deployer to the output folder]:deployer'
|
|
)
|
|
;;
|
|
esac
|
|
|
|
_arguments "$opts[@]"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
(( $+functions[_conan_graph_commands] )) ||
|
|
_conan_graph_commands() {
|
|
local -a commands=(
|
|
'build-order:compute the build order of a dependency graph'
|
|
'build-order-merge:merge more than 1 build-order file'
|
|
'info:compute the dependency graph and shows information about it'
|
|
)
|
|
_describe -t 'commands' "command" commands
|
|
}
|
|
|
|
(( $+functions[_conan_inspect] )) ||
|
|
_conan_inspect() {
|
|
_arguments \
|
|
"$_conan_common_options[@]" \
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json)' \
|
|
'*:recipe_folder:_files -/'
|
|
}
|
|
|
|
(( $+functions[_conan_install] )) ||
|
|
_conan_install() {
|
|
local -a generators=(
|
|
cmake cmake_multi cmake_paths cmake_find_package cmake_find_package_multi
|
|
msbuild visual_studio visual_studio_multi visual_studio_legacy xcode compiler_args gcc
|
|
boost-build b2 qbs qmake scons pkg_config virtualenv virtualenv_python virtualbuildenv
|
|
virtualrunenv youcompleteme txt json premake make markdown deploy
|
|
)
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json)'
|
|
\*{-b,--build}'[optional, specify which packages to build from source]:build'
|
|
$_conan_remote_options[@]
|
|
'(-u --update)'{-u,--update}'[will check the remote and in case a newer version]'
|
|
$_conan_define_options[@]
|
|
$_conan_profile_options[@]
|
|
$_conan_setting_options[@]
|
|
$_conan_configuration_options[@]
|
|
$_conan_lockfile_options[@]
|
|
'(-g --generator)'{-g,--generator}"[generators to use]:generator:($generators)"
|
|
'(-of --output)'{-of,--output-folder}'[the root output folder for generated and build files]:dir:_files -/'
|
|
'--deploy[deploy using the provided deployer to the output folder]:deployer'
|
|
'1:recipe_dir_or_conanfile:_files'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_list] )) ||
|
|
_conan_list() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json html)'
|
|
\*{-p,--package-query}'[remove only the packages matching a specific query]:query'
|
|
'(-r --remote)'{-r,--remote}'[remote names]:remote'
|
|
'(-c --cache)'{-c,--cache}'[search in the local cache]'
|
|
'1:recipe_or_package_reference:_files'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_lock] )) ||
|
|
_conan_lock() {
|
|
_arguments -C \
|
|
'(- : *)'{-h,--help}'[display help information]' \
|
|
'1: :_conan_lock_commands' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
(args)
|
|
local -a opts=($_conan_common_options)
|
|
case $words[1] in
|
|
(add)
|
|
opts+=(
|
|
'*--requires[add references to lockfile]:requires'
|
|
'*--build-requires[add build-requires to lockfile]:build_requires'
|
|
'*--python-requires[add python-requires to lockfile]'
|
|
'--lockfile-out[file name of the created lockfile]:filename:_files'
|
|
'--lockfile[file name of the input lockfile]:filename:_files'
|
|
)
|
|
;;
|
|
(create)
|
|
opts+=(
|
|
\*{-b,--build}'[optional, specify which packages to build from source]:build'
|
|
$_conan_remote_options[@]
|
|
'(-u --update)'{-u,--update}'[will check the remote and in case a newer version]'
|
|
$_conan_define_options[@]
|
|
$_conan_profile_options[@]
|
|
$_conan_setting_options[@]
|
|
$_conan_configuration_options[@]
|
|
$_conan_lockfile_options[@]
|
|
'1: :_files'
|
|
)
|
|
;;
|
|
(merge)
|
|
opts+=(
|
|
'--lockfile-out[file name of the created lockfile]:filename:_files'
|
|
'--lockfile[file name of the input lockfile]:filename:_files'
|
|
)
|
|
;;
|
|
esac
|
|
|
|
_arguments "$opts[@]"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
(( $+functions[_conan_lock_commands] )) ||
|
|
_conan_lock_commands() {
|
|
local -a commands=(
|
|
'add:add requires, build-requires or python requires to an existing or new lockfile'
|
|
'create:create a lockfile from a conanfile or a reference'
|
|
'merge:merge 2 or more lockfiles'
|
|
)
|
|
_describe -t 'commands' "command" commands
|
|
}
|
|
|
|
(( $+functions[_conan_profile] )) ||
|
|
_conan_profile() {
|
|
_arguments -C \
|
|
'(- : *)'{-h,--help}'[display help information]' \
|
|
'1: :_conan_profile_commands' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
(args)
|
|
local opts=($_conan_common_options[@])
|
|
case $words[1] in
|
|
(detect)
|
|
opts+=(
|
|
'--name[profile name, "default" if not specified]::name'
|
|
'(-f --force)'{-f,--force}'[overwrite if exists]'
|
|
)
|
|
;;
|
|
(list)
|
|
opts+=(
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json)'
|
|
)
|
|
;;
|
|
(path|show)
|
|
opts+=(
|
|
$_conan_define_options[@]
|
|
$_conan_profile_options[@]
|
|
$_conan_setting_options[@]
|
|
$_conan_configuration_options[@]
|
|
)
|
|
;;
|
|
esac
|
|
|
|
_arguments "$opts[@]"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
(( $+functions[_conan_profile_commands] )) ||
|
|
_conan_profile_commands() {
|
|
local -a commands=(
|
|
'detect:generate a profile using auto-detected values'
|
|
'list:list all profiles in the cache'
|
|
'path:show profile path location'
|
|
'show:show aggregated profiles from the passed arguments'
|
|
)
|
|
_describe -t 'commands' "command" commands
|
|
}
|
|
|
|
(( $+functions[_conan_remote] )) ||
|
|
_conan_remote() {
|
|
_arguments -C \
|
|
'(- : *)'{-h,--help}'[display help information]' \
|
|
'1: :_conan_remote_commands' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
(args)
|
|
local -a opts=($_conan_common_options[@])
|
|
case $words[1] in
|
|
(add)
|
|
opts+=(
|
|
'--insecure[allow insecure server connections when using SSL]'
|
|
'--index[insert the remote at a specific position in the remote list]:index'
|
|
'(-f --force)'{-f,--force}'[force the definition of the remote even if duplicated]'
|
|
'1:name'
|
|
'2:url'
|
|
)
|
|
;;
|
|
(auth)
|
|
opts+=(
|
|
'--with-user[only try to auth in those remotes that already have a user name]'
|
|
'1:remote:_conan_remotes'
|
|
)
|
|
;;
|
|
(list|list-users)
|
|
opts+=('(-f --format)'{-f,--format}'[select the output format]:format:(json)')
|
|
;;
|
|
(login)
|
|
opts+=(
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json)'
|
|
'(-p --password)'{-p,--password}'[user password]:password'
|
|
'1:remote:_conan_remotes'
|
|
'2:username:'
|
|
)
|
|
;;
|
|
(logout)
|
|
opts+=(
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json)'
|
|
'1:remote:_conan_remotes'
|
|
)
|
|
;;
|
|
(remove)
|
|
opts+=('1:remote:_conan_remotes')
|
|
;;
|
|
(rename)
|
|
opts+=(
|
|
'1:remote:_conan_remotes'
|
|
'2:new_name'
|
|
)
|
|
;;
|
|
(set-user)
|
|
opts+=(
|
|
'(-f --format)'{-f,--format}'[select the output format]:format:(json)'
|
|
'1:remote:_conan_remotes'
|
|
'2:user_name'
|
|
)
|
|
;;
|
|
(update)
|
|
opts+=(
|
|
'--url[new url for the remote]'
|
|
'--secure[do not allow insecure server connections when using SSL]'
|
|
'--insecure[allow insecure server connections when using SSL]'
|
|
'--index[insert the remote at a specific position in the remote list]:index'
|
|
'1:remote:_conan_remotes'
|
|
)
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
}
|
|
|
|
(( $+functions[_conan_remote_commands] )) ||
|
|
_conan_remote_commands() {
|
|
local -a commands=(
|
|
'add:add a remote'
|
|
'auth:authenticate in the defined remotes'
|
|
'disable:disable all the remotes matching a pattern'
|
|
'enable:enable all the remotes matching a pattern'
|
|
'list:list current remotes'
|
|
'list-users:list the users logged into all the remotes'
|
|
'login:login into the specified remotes matching a pattern'
|
|
'logout:clear the existing credentials for the specified remotes matching a pattern'
|
|
'remove:remove a remote'
|
|
'rename:rename a remote'
|
|
'set-user:associate a username with a remote matching pattern without performing the authentication'
|
|
'update:update a remote'
|
|
)
|
|
_describe -t 'commands' "command" commands
|
|
}
|
|
|
|
(( $+functions[_conan_remove] )) ||
|
|
_conan_remove() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
'(-c --confirm)'{-c,--confirm}'[remove without requesting a confirmation]'
|
|
\*{-p,--package-query}'[remove only the packages matching a specific query]:query'
|
|
\*{-r,--remote}'[will remove from the specified remote]:remote'
|
|
'*:recipe_or_package_reference:_files'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_search] )) ||
|
|
_conan_search() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
\*{-r,--remote}'[will remove from the specified remote]:remote'
|
|
'*:recipe_reference:_files'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_build] )) ||
|
|
_conan_build() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
$_conan_package_options[@]
|
|
\*{-b,--build}'[optional, specify which packages to build from source]:build'
|
|
$_conan_remote_options[@]
|
|
'(-u --update)'{-u,--update}'[will check the remote and in case a newer version]'
|
|
$_conan_define_options[@]
|
|
$_conan_profile_options[@]
|
|
$_conan_setting_options[@]
|
|
$_conan_configuration_options[@]
|
|
$_conan_lockfile_options[@]
|
|
'*: :_files'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_create] )) ||
|
|
_conan_create() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
$_conan_package_options[@]
|
|
\*{-b,--build}'[optional, specify which packages to build from source]:build'
|
|
$_conan_remote_options[@]
|
|
'(-u --update)'{-u,--update}'[will check the remote and in case a newer version]'
|
|
$_conan_define_options[@]
|
|
$_conan_profile_options[@]
|
|
$_conan_setting_options[@]
|
|
$_conan_configuration_options[@]
|
|
$_conan_lockfile_options[@]
|
|
'--build-require[whether the provided reference is a build-require]'
|
|
'(-tf --test-folder)'{-tf,--test-folder}'[alternative test folder name]:folder:_files -/'
|
|
'*: :_files -/'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_download] )) ||
|
|
_conan_download() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
'--only-recipe[download only the recipe, not the binary packages]'
|
|
\*{-p,--package-query}'[only download packages matching a specific query]:query'
|
|
'(-r --remote)'{-r,--remote}'[download from the specific remote]:remote:_conan_remotes'
|
|
'*:recipe_or_package_reference:_files'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_editable] )) ||
|
|
_conan_editable() {
|
|
_arguments -C \
|
|
'(- : *)'{-h,--help}'[display help information]' \
|
|
'1: :_conan_editable_commands' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
(args)
|
|
local opts=($_conan_common_options[@])
|
|
case $words[1] in
|
|
(add)
|
|
opts+=(
|
|
$_conan_package_options[@]
|
|
'(-of --output-folder)'{-of,--output-folder}'[the root output folder]:folder:_files -/'
|
|
)
|
|
;;
|
|
(list)
|
|
opts+=('(-f --format)'{-f,--format}'[select the output format]:format:(json)')
|
|
;;
|
|
(remove)
|
|
opts+=('(-r --refs)'{-r,--refs}'[directly provide reference patterns]:refs')
|
|
;;
|
|
esac
|
|
|
|
_arguments "$opts[@]"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
(( $+functions[_conan_editable_commands] )) ||
|
|
_conan_editable_commands() {
|
|
local -a commands=(
|
|
'add:define the given path location as the package reference'
|
|
'list:list all the packages in editable mode'
|
|
'remove:remove the editable mode for this reference'
|
|
)
|
|
_describe -t 'commands' "command" commands
|
|
}
|
|
|
|
(( $+functions[_conan_export] )) ||
|
|
_conan_export() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
$_conan_package_options[@]
|
|
$_conan_remote_options[@]
|
|
$_conan_lockfile_options[@]
|
|
'--build-require[whether the provided reference is a build-require]'
|
|
'*: :_files -/'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_export-pkg] )) ||
|
|
_conan_export-pkg() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
$_conan_package_options[@]
|
|
$_conan_remote_options[@]
|
|
$_conan_lockfile_options[@]
|
|
$_conan_define_options[@]
|
|
$_conan_profile_options[@]
|
|
$_conan_setting_options[@]
|
|
$_conan_configuration_options[@]
|
|
'*: :_files -/'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_new] )) ||
|
|
_conan_new() {
|
|
local -a templates=(
|
|
basic cmake_lib cmake_exe meson_lib meson_exe msbuild_lib msbuild_exe
|
|
bezel_lib bezel_exe autotools_lib autotools_exe
|
|
)
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
\*{-d,--define}'[define a template argument as key=value]:key_value'
|
|
'(-f --force)'{-f,--force}'[overwrite file if it already exists]'
|
|
"1:template:($templates)"
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_source] )) ||
|
|
_conan_source() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
$_conan_package_options[@]
|
|
'1: :_files'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_test] )) ||
|
|
_conan_test() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
$_conan_package_options[@]
|
|
\*{-b,--build}'[optional, specify which packages to build from source]:build'
|
|
$_conan_remote_options[@]
|
|
'(-u --update)'{-u,--update}'[will check the remote and in case a newer version]'
|
|
$_conan_define_options[@]
|
|
$_conan_profile_options[@]
|
|
$_conan_setting_options[@]
|
|
$_conan_configuration_options[@]
|
|
$_conan_lockfile_options[@]
|
|
'1:path:_files -/'
|
|
'2:reference'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_upload] )) ||
|
|
_conan_upload() {
|
|
local -a opts=(
|
|
$_conan_common_options[@]
|
|
\*{-p,--package-query}'[only upload packages matching a specific query]:query'
|
|
'(-r --remote)'{-r,--remote}'[upload to this specific remote]:remote:_conan_remotes'
|
|
'--only-recipe[upload only the recipe, not the binary packages]'
|
|
'--force[force the upload of the artifacts]'
|
|
'--check[perform an integrity check before upload]'
|
|
'(-c --confirm)'{-c,--confirm}'[upload all matching recipes without confirmation]'
|
|
'1::reference'
|
|
)
|
|
|
|
_arguments "$opts[@]"
|
|
}
|
|
|
|
(( $+functions[_conan_remotes] )) ||
|
|
_conan_remotes() {
|
|
local -a remotes=(${(f)"$(_call_program remotes $service remote list)"})
|
|
_describe -t remotes 'remote' remotes "$@"
|
|
}
|
|
|
|
(( $+functions[_conan_profiles] )) ||
|
|
_conan_profiles() {
|
|
local -a profiles=(${(f)"$(_call_program profiles $service profile list 2>/dev/null)"})
|
|
_describe -t profiles 'profile' profiles "$@"
|
|
}
|
|
|
|
_conan "$@"
|
|
|
|
# Local Variables:
|
|
# mode: Shell-Script
|
|
# sh-indentation: 2
|
|
# indent-tabs-mode: nil
|
|
# sh-basic-offset: 2
|
|
# End:
|
|
# vim: ft=zsh sw=2 ts=2 et
|