상호 작용으로 yaml을 축소할 수 있는 CLI 생성

7363 단어 GoCLIYAMLtech

개시하다


요즘 일 때문에 주변을 조금 둘러봤어요.k8s의 선언은yaml입니다.
kustoomize 등으로 자원을 정리하면 어쨌든 길어지고 가독성이 떨어지는 문제가 있다.
그래서 저는 jid 같은 상호작용을 할 수 있는 도구를 갖고 싶어서 조사를 해봤어요.
찾지 못해 CLIyd를 제작했습니다.

사용법

yd에서 파이프, 파일, URL에서yaml을 읽을 수 있습니다.
$ yd file.yaml
$ yd https://sample.com/file.yaml
$ yd < file.yaml
$ yd -f file.yaml
CLI를 실행한 후 화면 상부에 조회를 입력하는 곳이 있는데 거기에 조회를 입력하고 상호작용으로yaml을 축소한다.
예를 들어 다음yaml의 경우.tags에 입력하면 그림처럼 축소할 수 있습니다.
사용할 수 있는 질의는 여기.를 참조하십시오.
swagger: "2.0"
info:
  description: "This is a sample server Petstore server.  You can find out more about Swagger at <a href=\"http://swagger.io\">http://swag
ger.io</a> or on irc.freenode.net, #swagger.  For this sample, you can use the api key \"special-key\" to test the authorization filters"
  version: 1.0.0
  title: Swagger Petstore YAML
  termsOfService: "http://swagger.io/terms/"
  contact:
    email: "[email protected]"
  license:
    name: Apache 2.0
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
basePath: /v2
tags:
  - name: pet
    description: Everything about your Pets
    externalDocs:
      description: Find out more
      url: "http://swagger.io"
  - name: store
    description: Operations about user
  - name: user
    description: Access to Petstore orders
    externalDocs:
      description: Find out more about our store

실패하다

yd 내부 사용yq.yq에서는 코어 처리가 yqlib로 잘리기 때문에 CLI가 내부에서 사용됩니다.
따라서 조회의 해석과 축소 처리는 실현할 수 없고 앞부분만 실현할 수 있다.
관련 문서를 찾을 수 없음yqlibyq의 실시 방식은 조회expr를 공식으로 해석한 후 평가eval하는 것이기 때문에 직관적이고 이해하기 쉽다.yd에서는 분석기와 평가기를 사용하여 입력할 때마다 분석과 평가를 하고 결과를 그린다.
node, err := ui.Parser.ParseExpression(expr)
if err != nil {
	return
}

...

if err := ui.Evaluator.Evaluate("-", &in, node, ui.Printer); err != nil {
	return
}

ui.View.SetText(tview.TranslateANSI(ui.Out.String())).ScrollToBeginning()
yd 자체의 설치는 매우 간단합니다. 상세한 설치를 원하신다면 언제든지 창고를 확인하세요.

최후

yd 투박하게 제작돼 작업 중 최소한의 사용 수준에 도달해 공개됐지만, 도구로서의 완성도가 전혀 만족하지 않아 조금이나마 개선하려고 한다.
움직일 수 없는 곳이 있을지도 모르니 관심 있는 사람이 해 보세요.

좋은 웹페이지 즐겨찾기