45 个版本 (23 个稳定版本)
新 1.20.1 | 2024 年 8 月 17 日 |
---|---|
1.19.0 | 2024 年 6 月 18 日 |
1.16.0 | 2024 年 3 月 26 日 |
1.14.0 | 2023 年 11 月 27 日 |
0.7.0 | 2022 年 3 月 14 日 |
#46 in 开发工具
每月 1,044 次下载
用于 runme
320KB
8K SLoC
Argc
Argc 是一个强大的 Bash 框架,简化了构建功能齐全的 CLI。它允许您通过注释定义 CLI,专注于核心逻辑,而无需处理参数解析、使用说明、错误消息和其他样板代码。
功能
- 轻松的参数解析
- 处理标志、选项、位置参数和子命令。
- 验证用户输入以实现健壮的错误处理。
- 生成信息丰富的使用说明。
- 将参数映射到相应的变量。
- 独立 Bash 脚本创建
- 构建一个包含所有功能的 bash 脚本,而不依赖于 Argc 本身。
- 跨 shell 自动完成
- 为各种 shell(bash、zsh、fish、powershell 等)生成自动完成脚本。
- 手册页生成
- 自动为您脚本创建全面的 man 页面文档。
- 环境变量集成
- 定义、验证并将环境变量绑定到选项和位置参数。
- 任务自动化
- 一个基于 Bash 的命令执行器,通过 Argcfile.sh 自动化任务。
- 跨平台兼容性
- 在 macOS、Linux、Windows 和 BSD 系统上无缝运行基于 Argc 的脚本。
安装
软件包管理器
- Rust 开发者:
cargo install argc
- Homebrew/Linuxbrew 用户:
brew install argc
- Pacman 用户:
yay -S argc
预构建二进制文件
或者,从 GitHub Releases 下载预构建的二进制文件,适用于 macOS、Linux 和 Windows,解压缩它,并将 argc
二进制文件添加到您的 $PATH
中。
您可以在 Linux、MacOS 或 Windows 上使用以下命令下载最新版本。
curl -fsSL https://raw.githubusercontent.com/sigoden/argc/main/install.sh | sh -s -- --to /usr/local/bin
GitHub Actions
install-binary 可用于在 GitHub Actions 工作流程中安装 argc。
- uses: sigoden/install-binary@v1
with:
repo: sigoden/argc
入门指南
使用 Argc 构建 CLI 程序非常简单。只需遵循以下两个步骤
1. 设计您的 CLI 接口
使用注释标签(稍后解释)描述选项、标志、位置参数和子命令。
2. 激活参数处理
在您的脚本中添加此行:eval "$(argc --argc-eval "$0" "$@")"
。这将在您的程序中集成 Argc 的解析魔法。
让我们用一个例子来说明
# @flag -F --foo Flag param
# @option --bar Option param
# @option --baz* Option param (multi-occurs)
# @arg val* Positional param
eval "$(argc --argc-eval "$0" "$@")"
echo foo: $argc_foo
echo bar: $argc_bar
echo baz: ${argc_baz[@]}
echo val: ${argc_val[@]}
使用一些示例参数运行脚本
./example.sh -F --bar=xyz --baz a --baz b v1 v2
Argc 解析这些参数并创建以 argc_
为前缀的变量
foo: 1
bar: xyz
baz: a b
val: v1 v2
只需运行 ./example.sh --help
,即可查看您的 CLI 自动生成的帮助信息
USAGE: example [OPTIONS] [VAL]...
ARGS:
[VAL]... Positional param
OPTIONS:
-F, --foo Flag param
--bar <BAR> Option param
--baz [BAZ]... Option param (multi-occurs)
-h, --help Print help
-V, --version Print version
通过这些简单的步骤,您就可以开始利用 Argc 并创建健壮的 CLI 程序了!
注释标签
注释标签是带有 @
和特定标签的标准的 Bash 注释。它们为 Argc 提供了配置脚本功能的说明。
标签 | 描述 |
---|---|
@describe |
为命令设置描述。 |
@cmd |
定义子命令。 |
@alias |
为子命令设置别名。 |
@arg |
定义位置参数。 |
@option |
定义选项参数。 |
@flag |
定义标志参数。 |
@env |
定义环境变量。 |
@meta |
添加元数据。 |
有关所有注释标签的语法和用法,请参阅 规范。
Argc-build
生成一个独立的 bash 脚本,其中包含当存在 argc
命令时通常可用的所有功能。
生成的脚本移除了 argc
依赖,增强了兼容性,并使部署到更广泛的环境中成为可能。
argc --argc-build <SCRIPT> [OUTPATH]
argc --argc-build ./example.sh build/
./build/example.sh -h # The script's functionality does not require the `argc` dependency
Argcscript
Argc 还是为那些喜欢 Bash 脚本的高效性和灵活性而构建的命令运行器。
类似于 Makefile 为 make
工具定义命令的方式,Argcscript 使用 Argcfile.sh
来存储您的命令,称为“配方”。
为什么为您的项目选择 Argc?
- 利用 Bash 技能:无需学习新语言,非常适合 Bash 爱好者。
- GNU 工具集集成:利用熟悉的工具,如 awk、sed、grep、find 等。
- 环境变量管理:轻松加载、文档化和验证环境变量。
- 强大的 Shell 自动完成:享受自动完成建议,提高生产力。
- 跨平台兼容性:在 Linux、macOS、Windows 和 BSD 系统上无缝运行。
有关详细信息,请参阅 命令运行器。
完成
Argc 自动为所有基于 argc 的脚本提供 shell 完成功能。
argc --argc-completions <SHELL> [CMDS]...
以下,我们以cmd1和cmd2为例,说明如何为各种shell添加完成脚本。
# bash (~/.bashrc)
source <(argc --argc-completions bash cmd1 cmd2)
# elvish (~/.config/elvish/rc.elv)
eval (argc --argc-completions elvish cmd1 cmd2 | slurp)
# fish (~/.config/fish/config.fish)
argc --argc-completions fish cmd1 cmd2 | source
# nushell (~/.config/nushell/config.nu)
argc --argc-completions nushell cmd1 cmd2 # update config.nu manually according to output
# powershell ($PROFILE)
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
argc --argc-completions powershell cmd1 cmd2 | Out-String | Invoke-Expression
# xonsh (~/.config/xonsh/rc.xsh)
exec($(argc --argc-completions xonsh cmd1 cmd2))
# zsh (~/.zshrc)
source <(argc --argc-completions zsh cmd1 cmd2)
# tcsh (~/.tcshrc)
eval `argc --argc-completions tcsh cmd1 cmd2`
所有完成脚本的核心都是调用argc --argc-compgen
以获取完成候选。
$ argc --argc-compgen bash ./example.sh example --
--foo (Flag param)
--bar (Option param)
--baz (Option param (multi-occurs))
--help (Print help)
--version (Print version)
因此,argc也是一个完成引擎,请参见argc-completions中的1000多个示例。
手册页
为基于argc的CLI生成手册页。
argc --argc-mangen <SCRIPT> [OUTDIR]
argc --argc-mangen ./example.sh man/
man man/example.1
Windows
argc
的唯一依赖项是Bash。由于大多数在Windows上工作的开发者都安装了Git,其中包含Git Bash,因此您可以在Windows环境中安全地使用argc
和GNU工具(如grep
、sed
、awk
等)。
argc
的唯一依赖项是Bash。由于大多数在Windows上工作的开发者都安装了Git,其中包含Git Bash,因此您可以在Windows环境中安全地使用argc
和GNU工具(如grep
、sed
、awk
等)。使.sh
文件可执行
要直接像.cmd
或.exe
文件一样执行.sh
脚本文件,请在PowerShell中执行以下代码。
# Add .sh to PATHEXT
[Environment]::SetEnvironmentVariable("PATHEXT", [Environment]::GetEnvironmentVariable("PATHEXT", "Machine") + ";.SH", "Machine")
# Associate the .sh file extension with Git Bash
New-Item -Path Registry::HKEY_CLASSES_ROOT\.sh
New-ItemProperty -LiteralPath Registry::HKEY_CLASSES_ROOT\.sh -Name "(Default)" -Value "sh_auto_file" -PropertyType String -Force
New-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Classes\sh_auto_file\shell\open\command' `
-Name '(default)' -Value '"C:\Program Files\Git\bin\bash.exe" "%1" %*' -PropertyType String -Force
许可证
版权所有(c)2023-2024 argc开发者。
argc根据您的选择,在MIT许可证或Apache许可证2.0的条款下提供。
有关许可证详细信息,请参阅LICENSE-APACHE和LICENSE-MIT文件。
依赖项
~3–16MB
~166K SLoC