alexskrypnyk / shellvar
用于处理shell变量的实用工具。
1.0.0
2024-04-29 01:29 UTC
Requires
- php: >=8.2
- alexskrypnyk/csvtable: ^0.3
- symfony/console: ^7
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8.2
- dealerdirect/phpcodesniffer-composer-installer: ^1
- drupal/coder: ^8.3
- mikey179/vfsstream: ^1.6
- opis/closure: ^3.6
- phpmd/phpmd: ^2.15
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
- rector/rector: ^1
Replaces
README
用于处理shell变量的实用工具
特性
- 检查变量
- 报告非
${VAR}
格式的shell变量。 - 修复非
${VAR}
格式的shell变量。
- 报告非
- 提取变量
- 扫描包含shell脚本的文件或目录,并使用 高级插值支持 提取找到的变量以及注释和分配的值。
- 过滤变量:排除局部变量,按前缀排除,从文件列表中排除。
- 将输出格式化为 CSV、Markdown表格 或 Markdown块(在模板中定义)。
- 使用自定义类扩展过滤器和格式化。
安装
从 发布页面 下载最新版本的 shellvar
并在主机上运行
./shellvar [command] [options] path/to/script.sh
或作为Docker容器运行
docker run -v $(pwd):/app drevops/shellvar [command] [options] path/to/script.sh
使用 - 检查
- 报告非
${VAR}
格式的shell变量。 - 修复非
${VAR}
格式的shell变量。
检查文件或目录
./shellvar lint path/to/script.sh ./shellvar lint path/to/dir ./shellvar lint --extension=sh --extension=bash --extension=bats path/to/dir
示例
./shellvar lint tests/phpunit/Fixtures/unwrapped.sh ./shellvar lint tests/phpunit/Fixtures ./shellvar lint --extension=sh --extension=bash --extension=bats tests/phpunit/Fixtures
修复文件或目录
./shellvar lint --fix path/to/script.sh ./shellvar lint --fix path/to/dir ./shellvar lint --fix --extension=sh --extension=bash --extension=bats path/to/dir
示例
./shellvar lint --fix tests/phpunit/Fixtures/unwrapped.sh ./shellvar lint --fix tests/phpunit/Fixtures ./shellvar lint --fix --extension=sh --extension=bash --extension=bats tests/phpunit/Fixtures
使用 - 提取
默认情况下,变量名、描述(从注释中获取)及其值以 CSV 格式打印到标准输出。您还可以更改输出格式为 Markdown表格 或 Markdown块。
以下是一个shell脚本示例(请参阅在测试中使用的 扩展示例)
# Assignment to scalar value. VAR1=val1 # Assignment to another variable. VAR2="${VAR1}" # Parameter expansion. VAR3=${val3:-abc} # Parameter expansion with a default value using # another variable $VAR3. # # Continuation of the multi-line comment. VAR4=${val4:-$VAR3}
CSV(默认)
./shellvar extract path/to/script.sh
Name;"Default value";Description
VAR1;val1;"Assignment to scalar value."
VAR2;${VAR1};"Assignment to another variable."
VAR3;abc;"Parameter expansion."
VAR4;${VAR3};"Parameter expansion with a default value using another variable $VAR3.
Continuation of the multi-line comment."
Markdown表格
./shellvar extract --format=md-table path/to/script.sh
点击查看输出
| Name | Default value | Description | |--------|---------------|----------------------------------------------------------------------------------------------------------------------------------| | `VAR1` | `val1` | Assignment to scalar value. | | `VAR2` | `${VAR1}` | Assignment to another variable. | | `VAR3` | `abc` | Parameter expansion. | | `VAR4` | `${VAR3}` | Parameter expansion with a default value using<br />another variable `$VAR3`.<br /><br />Continuation of the multi-line comment. |
如下所示
Markdown块
./shellvar extract --format=md-blocks path/to/script.sh
点击查看输出
### `VAR1` Assignment to scalar value. Default value: `val1` ### `VAR2` Assignment to another variable. Default value: `${VAR1}` ### `VAR3` Parameter expansion. Default value: `abc` ### `VAR4` Parameter expansion with a default value using<br />another variable `$VAR3`. Continuation of the multi-line comment. Default value: `${VAR3}`
如下所示
高级:带有链接和自定义模板的Markdown块
./shellvar extract --format=md-blocks --md-link-vars --md-block-template-file=path/to/template.md path/to/script.sh
点击查看输出
### `VAR1` Assignment to scalar value. Default value: `val1` Path: `1.sh` Paths: `1.sh` ### `VAR2` Assignment to another variable. Default value: `${VAR1}` Path: `1.sh` Paths: `1.sh` ### `VAR3` Parameter expansion. Default value: `abc` Path: `1.sh` Paths: `1.sh` ### `VAR4` Parameter expansion with a default value using<br />another variable [`$VAR3`](#VAR3). Continuation of the multi-line comment. Default value: `${VAR3}` Path: `1.sh` Paths: `1.sh`
如下所示
选项
有不同的选项:提取、过滤和格式化。
“允许多个值”意味着您可以多次指定选项,如下所示: --exclude-prefix=VAR1 --exclude-prefix=VAR2
等。
提取
过滤
格式化
维护
composer install
composer lint
composer lint:fix
composer test
composer build
Docker发布
Shellvar作为 Docker镜像 发布,以下标签
XX.YY.ZZ
标签 - 当GitHub上发布发布标签时。latest
- 当GitHub上发布发布标签时。canary
- 每次向main
分支推送时
使用 https://getscaffold.dev/ 项目模板创建存储库