首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改yaml文件中模式的脚本(或程序)

修改yaml文件中模式的脚本(或程序)
EN

Stack Overflow用户
提问于 2021-07-18 10:13:37
回答 1查看 116关注 0票数 0

我需要修改yaml文件中一种特定模式的所有实例。有anyOf枚举和字符串的架构,我需要擦除字符串并只保留枚举。因此,从这一点来看:

代码语言:javascript
复制
components:
  schemas:
    //a lot of different schemas
    NotificationMethod:
      anyOf:
      - type: string
        enum:
          - PERIODIC
          - ONE_TIME
          - ON_EVENT_DETECTION
      - type: string
        description: >
          This string provides forward-compatibility with future
          extensions to the enumeration but is not used to encode
          content defined in the present version of this API.
      description: >
        Possible values are
        - PERIODIC
        - ONE_TIME
        - ON_EVENT_DETECTION

我需要收到这个:

代码语言:javascript
复制
components:
  schemas:
    //a lot of different schemas
    NotificationMethod:
      type: string
      enum:
        - PERIODIC
        - ONE_TIME
        - ON_EVENT_DETECTION
      description: >
        Possible values are
        - PERIODIC
        - ONE_TIME
        - ON_EVENT_DETECTION
  1. 这种修正应该只在有两个选项: string和enum的anyOf模式中进行。
  2. 与anyOf的线被擦除。
  3. 删除离开"type“之前的"-”(破折号和空格)。
  4. 在叶型规范的每一行中,删除两个空白空间。
  5. 输入"string“并删除它的描述。

怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2021-07-19 11:09:36

这可以用yq来完成

代码语言:javascript
复制
yq e '(.. | select(has("anyOf")) | select(.anyOf.[] | has("enum"))) as $i |
    $i.description as $d |
    $i = ($i.anyOf.[] | select(has("enum"))) |
    $i.description = $d' test.yaml

对于您的示例(减去非法的//a lot of different schemas ),可以得到以下输出:

代码语言:javascript
复制
components:
  schemas:
    NotificationMethod:
      type: string
      enum:
        - PERIODIC
        - ONE_TIME
        - ON_EVENT_DETECTION
      description: >
        Possible values are - PERIODIC - ONE_TIME - ON_EVENT_DETECTION

请注意,从YAML的角度来看,这是完全有效的,因为>开始一个折叠的块标量,其中换行将折叠到一个空间中。如果要在描述中保留换行符,请使用文字块标量。

上面的yq命令展示了这个概念,并适用于这个示例,但是您需要根据您的需求对其进行微调。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68428084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档