自动响应 npm/npx 命令行安装中的提示
Automate responses to prompts in an npm/npx command line install
我想通过命令行自动安装 Redocly(API 文档生成器)。 Redocly 项目是使用 npx (npx create-openapi-repo
) 生成的。安装过程会触发四个提示(用引号显示;后面是我需要输入的答案)。有些中间有处理。
"Do you already have an OpenAPI/Swagger 3.0 definition for your API? (y/N)" y
"Please specify the path to the OpenAPI definition (local file):" test.yml
"API Name:" My API
"The following folders will be created: openapi and docs. You can change them by running create-openapi-repo Proceed? (Y/n)" Y
问题是似乎启用脚本文件自动完成的命令并没有通过 Redocly npx 安装启用它,至少通过我的尝试是这样。
失败的尝试,除此之外,包括以下内容(一个在 Windows 命令提示符中,其余在 Bash 中)。有些只回答了四个提示中的三个,因为我很少能通过第二个提示。
尝试
cmd.cmd:
npx create-openapi-repo
命令提示符(Windows命令提示符):
C:\Source\api-docs>(echo y && echo test.yml) | cmd.cmd
命令提示符结果:
C:\Source\api-docs>npx create-openapi-repo
Welcome to the OpenAPI-Repo generator!
? Do you already have an OpenAPI/Swagger 3.0 definition for your API? Yes
test.yml
? Please specify the path to the OpenAPI definition (local file):
<ends>
尝试
cmd.sh:
read -n 1 -p "Do you already have an OpenAPI/Swagger 3.0 definition for your API? (y/N)" Y
read -n 1 -p "Please specify the path to the OpenAPI definition (local file):" test.yml
read -n 1 -p "API Name:" My API
命令提示符(Bash):
$ ./cmd.sh
命令提示符结果:
Welcome to the OpenAPI-Repo generator!
? Do you already have an OpenAPI/Swagger 3.0 definition for your API? Yes
? Please specify the path to the OpenAPI definition (local file):
尝试
命令提示符(Bash)
printf 'y\test.yml\My API' | npx create-openapi-repo
结果同上
尝试
printf '%s\n' y test.yml 'My API' | npx create-openapi-repo
结果同上
尝试
cmd.txt:
y
test.yml
My API
命令提示符(Bash):
npx create-openapi-repo < cmd.txt
结果同上
有谁知道如何做到这一点?如果重要的话,目标是在 Azure DevOps 管道中执行 Redocly 的部署。该管道提供了在 Bash、Windows 命令提示符或 PowerShell 中执行 运行 命令的能力。
第一个选项是按照 Shawn 的建议使用 expect
。
如果您确定两次提示之间的时间间隔(例如,小于 10 秒),您可以尝试以下操作:
#!/usr/bin/env bash
{
echo y
sleep 10
echo test.yml
sleep 10
echo My API
} | npx create-openapi-repo
我想通过命令行自动安装 Redocly(API 文档生成器)。 Redocly 项目是使用 npx (npx create-openapi-repo
) 生成的。安装过程会触发四个提示(用引号显示;后面是我需要输入的答案)。有些中间有处理。
"Do you already have an OpenAPI/Swagger 3.0 definition for your API? (y/N)" y
"Please specify the path to the OpenAPI definition (local file):" test.yml
"API Name:" My API
"The following folders will be created: openapi and docs. You can change them by running create-openapi-repo Proceed? (Y/n)" Y
问题是似乎启用脚本文件自动完成的命令并没有通过 Redocly npx 安装启用它,至少通过我的尝试是这样。
失败的尝试,除此之外,包括以下内容(一个在 Windows 命令提示符中,其余在 Bash 中)。有些只回答了四个提示中的三个,因为我很少能通过第二个提示。
尝试
cmd.cmd:
npx create-openapi-repo
命令提示符(Windows命令提示符):
C:\Source\api-docs>(echo y && echo test.yml) | cmd.cmd
命令提示符结果:
C:\Source\api-docs>npx create-openapi-repo
Welcome to the OpenAPI-Repo generator!
? Do you already have an OpenAPI/Swagger 3.0 definition for your API? Yes
test.yml
? Please specify the path to the OpenAPI definition (local file):
<ends>
尝试
cmd.sh:
read -n 1 -p "Do you already have an OpenAPI/Swagger 3.0 definition for your API? (y/N)" Y
read -n 1 -p "Please specify the path to the OpenAPI definition (local file):" test.yml
read -n 1 -p "API Name:" My API
命令提示符(Bash):
$ ./cmd.sh
命令提示符结果:
Welcome to the OpenAPI-Repo generator!
? Do you already have an OpenAPI/Swagger 3.0 definition for your API? Yes
? Please specify the path to the OpenAPI definition (local file):
尝试
命令提示符(Bash)
printf 'y\test.yml\My API' | npx create-openapi-repo
结果同上
尝试
printf '%s\n' y test.yml 'My API' | npx create-openapi-repo
结果同上
尝试
cmd.txt:
y
test.yml
My API
命令提示符(Bash):
npx create-openapi-repo < cmd.txt
结果同上
有谁知道如何做到这一点?如果重要的话,目标是在 Azure DevOps 管道中执行 Redocly 的部署。该管道提供了在 Bash、Windows 命令提示符或 PowerShell 中执行 运行 命令的能力。
第一个选项是按照 Shawn 的建议使用 expect
。
如果您确定两次提示之间的时间间隔(例如,小于 10 秒),您可以尝试以下操作:
#!/usr/bin/env bash
{
echo y
sleep 10
echo test.yml
sleep 10
echo My API
} | npx create-openapi-repo