alexskrypnyk / shell-variables-extractor
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 格式打印到 STDOUT。您还可以将输出格式更改为 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. |
它渲染为
名称 | 默认值 | 描述 |
---|---|---|
VAR1 |
val1 |
赋值给标量值。 |
VAR2 |
${VAR1} |
赋值给另一个变量。 |
VAR3 |
abc |
参数扩展。 |
VAR4 |
${VAR3} |
使用另一个变量 $VAR3 进行参数扩展,并设置默认值。多行注释的延续。 Markdown 块 |
默认值: val1
./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
等。
提取
名称 | 描述 | 默认值 |
---|---|---|
路径 |
要扫描的文件或目录。多个文件用空格分隔。 | |
--skip-text=SKIP |
如果注释中指定了此文本,则跳过变量提取。 | @skip |
--skip-description-prefix=PREFIX |
跳过以提供的前缀开始的描述行。允许多个值。 |
过滤
名称 | 描述 | 默认值 |
---|---|---|
--exclude-local |
删除局部变量。 | |
--exclude-prefix=PREFIX |
排除以提供的前缀开始的变量。允许多个值。 | |
--exclude-from-file=FILE |
包含要排除的变量的文件路径。允许多个值。 |
格式
名称 | 描述 | 默认值 |
---|---|---|
--format=FORMAT |
输出格式:CSV(csv )、Markdown表格(md-table )、Markdown块(md-blocks )。 |
csv |
--sort |
按名称升序排序变量。 | |
--unset |
表示已定义但未设置值的变量的字符串。 | UNSET |
--fields=FIELDS |
分号分隔的字段列表。每个字段是一个键-标签对,格式为 "键=标签"。如果省略标签,则使用键作为标签。 | name=名称;default_value="默认值;description=描述 |
--path-strip-prefix=PREFIX |
从路径中移除提供的前缀。 | |
--csv-separator=SEPARATOR |
CSV输出格式的分隔符。 | ; |
--md-link-vars |
在Markdown输出格式中链接使用到的变量到它们的定义。 | |
--md-link-vars-anchor-case |
链接变量时锚点的格式。可以是 "preserve"、"lower" 或 "upper" 之一。 | preserve |
--md-no-inline-code-wrap-vars |
在Markdown输出格式中不将变量包裹以显示为内联代码。 | |
--md-no-inline-code-wrap-numbers |
在Markdown输出格式中不将数字包裹以显示为内联代码。 | |
--md-inline-code-extra-file=FILE |
包含要格式化为Markdown输出格式内联代码的额外字符串的文件路径。允许多个值。 | |
--md-block-template-file=FILE |
用于Markdown块(md-blocks)输出格式的Markdown模板文件路径。模板中可以使用 {{ name }} 、{{ description }} 、{{ default_value }} 和 {{ path }} 令牌。 |
维护
composer install
composer lint
composer lint:fix
composer test
composer build
Docker发布
Shellvar以以下标签发布为Docker镜像发布为Docker镜像:
XX.YY.ZZ
标签 - 当GitHub发布发布标签时。latest
- 当GitHub发布发布标签时。canary
- 在向main
分支推送时。
使用https://getscaffold.dev/ 项目模板创建的存储库