我知道至少有两个yq,我正在使用这个:https://github.com/mikefarah/yq。根据文档,我可以验证yaml这样的文件:
yq -v file.yaml
Run Code Online (Sandbox Code Playgroud)
问题:它输出大量调试信息,但是根据文档,它应该输出“如果[文件]有效,则不输出任何内容,否则它将打印错误”。据我所知,该文件看起来有效。
如果文件有效,我应该如何避免输出?
文件:
name: Copywrite
on:
push:
tags:
- v*
branches:
- main
pull_request:
workflow_dispatch:
jobs:
copywrite:
name: Run Header Copyright
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@93ea575cc8 # v3.1.0
- name: Install Copywrite
id: install
uses: hashicorp/setup-copywrite@v1.0.0
- name: Output Installed Copywrite Version
run: echo "Installed Copywrite CLI ${{steps.install.outputs.version}}"
- name: Run Copywrite Header Compliance
run: copywrite headers --plan
Run Code Online (Sandbox Code Playgroud)
输出:
yq -v ./file.yml
16:52:54 processArgs [DEBU] processed args: [./file.yml]
16:52:54 maybeFile [DEBU] checking './file.yml' is a file
16:52:54 maybeFile [DEBU] error: <nil>, dir: false
16:52:54 maybeFile [DEBU] result: true
16:52:54 FormatFromFilename [DEBU] checking file extension './file.yml' for auto format detection
16:52:54 FormatFromFilename [DEBU] detected format 'yml'
16:52:54 initCommand [DEBU] Using input format yml
16:52:54 initCommand [DEBU] Using output format yml
16:52:54 ParseExpression [DEBU] Parsing expression: []
16:52:54 ConvertToPostfix [DEBU] postfix processing currentToken )
16:52:54 ConvertToPostfix [DEBU] opstackLen: 0
16:52:54 ConvertToPostfix [DEBU] PostFix Result:
16:52:54 GetMatchingNodes [DEBU] getMatchingNodes - nothing to do
16:52:54 PrintResults [DEBU] PrintResults for 1 matches
16:52:54 PrintResults [DEBU] -- print sep logic: p.firstTimePrinting: false, previousDocIndex: 0, mappedDoc.Document: 0
16:52:54 PrintResults [DEBU] D0, P[], (doc)::name: Copywrite
on:
push:
tags:
- v*
branches:
- main
pull_request:
workflow_dispatch:
jobs:
copywrite:
name: Run Header Copyright
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@93ea575cc8 # v3.1.0
- name: Install Copywrite
id: install
uses: hashicorp/setup-copywrite@v1.0.0
- name: Output Installed Copywrite Version
run: echo "Installed Copywrite CLI ${{steps.install.outputs.version}}"
- name: Run Copywrite Header Compliance
run: copywrite headers --plan
name: Copywrite
on:
push:
tags:
- v*
branches:
- main
pull_request:
workflow_dispatch:
jobs:
copywrite:
name: Run Header Copyright
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@93ea575cc8 # v3.1.0
- name: Install Copywrite
id: install
uses: hashicorp/setup-copywrite@v1.0.0
- name: Output Installed Copywrite Version
run: echo "Installed Copywrite CLI ${{steps.install.outputs.version}}"
- name: Run Copywrite Header Compliance
run: copywrite headers --plan
16:52:54 PrintResults [DEBU] done printing results
Run Code Online (Sandbox Code Playgroud)
首先,文档使用vas 命令(无破折号),您尝试将其用作 flag -v。其次,您正在引用版本 3.x 的文档,但您的输出表明您正在使用版本 4.x。
在 3.x 版本中,以下内容有效,如果文件有效,则不会给出任何输出:
yq v file.yaml
# or
yq validate file.yaml
Run Code Online (Sandbox Code Playgroud)
在 4.x 版本中(其中-v和--verbose代表详细模式),您可以简单地将文件输入 yq (默认为幂等过滤器.),并抑制 stdout。可能的错误将出现在 stderr 上。
yq file.yaml >/dev/null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2412 次 |
| 最近记录: |