8 个版本

0.1.3 2024 年 8 月 21 日
0.1.1 2023 年 12 月 14 日
0.1.0 2023 年 3 月 20 日
0.0.4 2022 年 12 月 21 日
0.0.1 2022 年 6 月 3 日

56命令行工具 中排名

Download history 123/week @ 2024-08-15

每月 124 次下载

MIT 许可证

270KB
6K SLoC

用于管理 Pact 插件的 CLI

该项目提供了一个命令行界面来管理和安装 Pact 插件。它是一个单个的可执行二进制文件。

命令行界面

在不提供任何选项的情况下运行 pact-plugin-cli 将显示标准帮助信息。

$ pact-plugin-cli
CLI utility for Pact plugins

Usage: pact-plugin-cli [OPTIONS] <COMMAND>

Commands:
  list     List installed plugins
  env      Print out the Pact plugin environment config
  install  Install a plugin
  remove   Remove a plugin
  enable   Enable a plugin version
  disable  Disable a plugin version
  help     Print this message or the help of the given subcommand(s)

Options:
  -y, --yes      Automatically answer Yes for all prompts
  -d, --debug    Enable debug level logs
  -t, --trace    Enable trace level logs
  -v, --version  Print CLI version
  -h, --help     Print help

显示环境配置

env 命令将显示正在使用的任何环境配置。

$ pact-plugin-cli env
┌──────────────────┬─────────────────────┬────────────────────────────┐
 Configuration    ┆ Source              ┆ Value                      │
╞══════════════════╪═════════════════════╪════════════════════════════╡
 Plugin Directory ┆ $HOME/.pact/plugins ┆ /home/ronald/.pact/plugins │
└──────────────────┴─────────────────────┴────────────────────────────┘

列出已安装的插件

运行 list 命令将列出已安装的插件。

$ pact-plugin-cli list
┌──────────┬─────────┬───────────────────┬───────────────────────────────────────────┬─────────┐
 Name     ┆ Version ┆ Interface Version ┆ Directory                                 ┆ Status  │
╞══════════╪═════════╪═══════════════════╪═══════════════════════════════════════════╪═════════╡
 csv      ┆ 0.0.1   ┆ 1                 ┆ /home/ronald/.pact/plugins/csv-0.0.1      ┆ enabled │
├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
 protobuf ┆ 0.1.7   ┆ 1                 ┆ /home/ronald/.pact/plugins/protobuf-0.1.7 ┆ enabled │
└──────────┴─────────┴───────────────────┴───────────────────────────────────────────┴─────────┘

启用和禁用插件版本

disable 命令将禁用插件的一个版本,而 enable 命令将再次启用它。

$ pact-plugin-cli enable --help
Enable a plugin version

Usage: pact-plugin-cli enable <NAME> [VERSION]

Arguments:
  <NAME>     Plugin name
  [VERSION]  Plugin version. Not required if there is only one plugin version

Options:
  -h, --help  Print help

它需要插件名称和版本。如果只有一个版本,则可以省略版本值。

删除插件版本

可以使用 remove 命令删除特定版本的插件。它需要插件名称和版本。如果只有一个版本,则可以省略版本值。

$ pact-plugin-cli remove --help
Remove a plugin

Usage: pact-plugin-cli remove [OPTIONS] <NAME> [VERSION]

Arguments:
  <NAME>     Plugin name
  [VERSION]  Plugin version. Not required if there is only one plugin version

Options:
  -y, --yes   Automatically answer Yes for all prompts
  -h, --help  Print help

这将提示确认删除插件,但可以使用 -y, -yes 选项来覆盖。

$ pact-plugin-cli -y remove csv
Removed plugin with name 'csv' and version '0.0.1'

安装插件

install 命令可以从 GitHub 发布页面下载并安装插件。它将确定所需的正确操作系统和架构。如果下载文件有 SHA256 校验和,它还会将校验和与下载的文件进行比较。

$ pact-plugin-cli install --help
Install a plugin

A plugin can be either installed from a URL, or for a known plugin, by name (and optionally version).

Usage: pact-plugin-cli install [OPTIONS] <SOURCE>

Arguments:
  <SOURCE>
          Where to fetch the plugin files from. This should be a URL or the name of a known plugin

Options:
  -t, --source-type <SOURCE_TYPE>
          The type of source to fetch the plugin files from. Will default to Github releases.
          
          Valid values: github

  -y, --yes
          Automatically answer Yes for all prompts

  -s, --skip-if-installed
          Skip installing the plugin if the same version is already installed

  -v, --version <VERSION>
          The version to install. This is only used for known plugins

      --skip-load
          Skip auto-loading of plugin
          
          [env: PACT_PLUGIN_CLI_SKIP_LOAD=]

  -h, --help
          Print help (see a summary with '-h')

您可以指定发布版本,或者使用最新链接下载最新版本。例如,对于 Protobuf 插件,https://github.com/pactflow/pact-protobuf-plugin/releases/tag/v-0.1.7 将安装版本 0.1.7,而 https://github.com/pactflow/pact-protobuf-plugin/releases/latest 将安装最新版本。

如果插件版本已安装,它将提示先删除现有的版本。这可以用 -y, -yes 选项来覆盖。

如果插件版本已经安装,要跳过安装,请使用 -s, --skip-if-installed 选项。

安装 CSV 插件的示例

$ pact-plugin-cli -y install https://github.com/pact-foundation/pact-plugins/releases/tag/csv-plugin-0.0.1
Installing plugin csv version 0.0.1
Downloaded https://github.com/pact-foundation/pact-plugins/releases/download/csv-plugin-0.0.1/pact-csv-plugin-linux-x86_64.gz to /home/ronald/.pact/plugins/csv-0.0.1/pact-csv-plugin-linux-x86_64.gz
  [00:00:03] [#######################################################################################################################################################################] 3.43MiB/3.43MiB (973.64KiB/s, 0s)
Downloaded https://github.com/pact-foundation/pact-plugins/releases/download/csv-plugin-0.0.1/pact-csv-plugin-linux-x86_64.gz.sha256 to /home/ronald/.pact/plugins/csv-0.0.1/pact-csv-plugin-linux-x86_64.gz.sha256
  [00:00:00] [#############################################################################################################################################################################] 115B/115B (185.98KiB/s, 0s)
Installed plugin csv version 0.0.1 OK

安装

CLI 可执行文件可以从 GitHub 发布页面下载(例如,https://github.com/pact-foundation/pact-plugins/releases/tag/pact-plugin-cli-v0.0.0)。每个主要操作系统和架构将有一个文件。只需解压(使用 gunzip)并在 Unix 上使其可执行即可。

 wget https://github.com/pact-foundation/pact-plugins/releases/download/pact-plugin-cli-v0.0.0/pact-plugin-cli-linux-x86_64.gz
--2022-06-03 13:45:17--  https://github.com/pact-foundation/pact-plugins/releases/download/pact-plugin-cli-v0.0.0/pact-plugin-cli-linux-x86_64.gz
Resolving github.com (github.com)... 52.64.108.95
Connecting to github.com (github.com)|52.64.108.95|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/388319964/c0202f1f-b189-4e75-b45b-9d43acf1c632?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220603%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220603T034441Z&X-Amz-Expires=300&X-Amz-Signature=3a5c7f7a54288897a0f89c2c186e16da08cfcc6969c90f4f5535d4fc2dd0f68a&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=388319964&response-content-disposition=attachment%3B%20filename%3Dpact-plugin-cli-linux-x86_64.gz&response-content-type=application%2Foctet-stream [following]
--2022-06-03 13:45:17--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/388319964/c0202f1f-b189-4e75-b45b-9d43acf1c632?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220603%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220603T034441Z&X-Amz-Expires=300&X-Amz-Signature=3a5c7f7a54288897a0f89c2c186e16da08cfcc6969c90f4f5535d4fc2dd0f68a&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=388319964&response-content-disposition=attachment%3B%20filename%3Dpact-plugin-cli-linux-x86_64.gz&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6186448 (5.9M) [application/octet-stream]
Saving to: ‘pact-plugin-cli-linux-x86_64.gz’

pact-plugin-cli-linux-x86_64.gz                            100%[=======================================================================================================================================>]   5.90M  3.89MB/s    in 1.5s    

2022-06-03 13:45:19 (3.89 MB/s) - ‘pact-plugin-cli-linux-x86_64.gz’ saved [6186448/6186448]

 gunzip pact-plugin-cli-linux-x86_64.gz
 chmod +x pact-plugin-cli-linux-x86_64  
 ./pact-plugin-cli-linux-x86_64 
pact-plugin-cli 0.0.0
CLI utility for Pact plugins

USAGE:
    pact-plugin-cli-linux-x86_64 [OPTIONS] <SUBCOMMAND>

OPTIONS:
    -d, --debug      Enable debug level logs
    -h, --help       Print help information
    -V, --version    Print version information
    -y, --yes        Automatically answer Yes for all prompts

SUBCOMMANDS:
    disable    Disable a plugin version
    enable     Enable a plugin version
    env        Print out the Pact plugin environment config
    help       Print this message or the help of the given subcommand(s)
    install    Install a plugin
    list       List installed plugins
    remove     Remove a plugin

使用 cargo 安装

也可以使用 Rust Cargo 命令安装可执行文件。

 cargo install pact-plugin-cli

构建

可执行文件使用 cargo 构建。

要求

需要 Rust 1.61 或更高版本。

兼容性

支持的平台
操作系统 架构 支持 Pact 插件 CLI 版本
OSX x86_64 所有
Linux x86_64 所有
Windows x86_64 所有
OSX arm64 所有
Linux arm64 >=0.0.4
Windows arm64 >=0.1.2
Alpine x86_64 >=0.1.2
Alpine arm64 >=0.1.2

注意: 从 v0.1.2 开始,Linux 可执行文件使用 musl 静态构建,并设计为与基于 glibc(例如,Debian)和 musl(例如,Alpine)的发行版兼容。

依赖项

~32–69MB
~1M SLoC