alexskrypnyk/shell-variables-extractor

此软件包已被弃用,不再维护。作者建议使用 alexskrypnyk/shellvar 软件包。

用于处理 shell 变量的实用程序。

资助软件包维护!
Patreon

1.0.0 2024-04-29 01:29 UTC

This package is auto-updated.

Last update: 2024-06-26 00:59:01 UTC


README

Shellvar logo

用于处理 shell 变量的实用程序

GitHub Issues GitHub Pull Requests Test PHP codecov GitHub release (latest by date) LICENSE Renovate

Docker Pulls amd64

功能

  • 检查变量
    • 报告不符合 ${VAR} 格式的 shell 变量。
    • 修复不符合 ${VAR} 格式的 shell 变量。
  • 提取变量
    • 扫描包含 shell 脚本的文件或目录,并使用 高级插值支持 提取找到的变量及其注释和赋值。
    • 过滤变量:排除局部变量,通过前缀排除,从文件列表中排除。
    • CSVMarkdown 表格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}`

它渲染为

VAR1

赋值给标量值。

默认值: ${VAR1}

VAR2

赋值给另一个变量。

默认值: abc

VAR3

参数扩展。

默认值: ${VAR3}

VAR4

使用另一个变量 $VAR3 进行参数扩展,并设置默认值。
多行注释的延续。

Markdown 块

默认值: ${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`

它渲染为

VAR1

赋值给标量值。

默认值: ${VAR1}

路径: 1.sh

路径: 1.sh

VAR2

赋值给另一个变量。

默认值: abc

路径: 1.sh

路径: 1.sh

VAR3

参数扩展。

默认值: ${VAR3}

路径: 1.sh

路径: 1.sh

VAR4

使用另一个变量 $VAR3 进行参数扩展,并设置默认值。
另一个变量 $VAR3

Markdown 块

默认值: ${VAR3}

路径: 1.sh

路径: 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/ 项目模板创建的存储库