마크다운으로 Go 프로젝트의 플래그 찾기 및 문서화
_process_line
아마도 약간 정리할 수 있지만 이것은 내 사용 사례에 충분했습니다. 의견으로 최적화를 환영합니다!메모:
import subprocess
def _find_flag_initializations():
"""Grep for a lines that initalize a flag"""
cmd = "grep -nr '= flag.' . --include=*.go"
return subprocess.check_output(cmd, shell=True).splitlines()
def _write_flags_to_md(lines):
"""Write the flag name, type, desc, & default value to stdout as md"""
print(f"Name | Type | Description | Default")
print("|-|-|-|-|")
for line in lines:
flag_name, flag_type, flag_desc, flag_default = _process_line(line)
print(f"`{flag_name}` | {flag_type} | {flag_desc} | {flag_default}")
def _process_line(line):
"""Given a line of Go code that initalizes a flag, derive the
flag's name, type, desc, & default value"""
prepped = str(line.decode().split("= flag.")[1])
flag_name = prepped.split(',')[0].split('(')[1].replace('"','')
flag_type = prepped.split('(')[0]
flag_desc = prepped.split(',',2)[2].replace('`','').replace(')','').replace('"','').strip()
flag_default = prepped.split(',')[1].strip()
return flag_name, flag_type, flag_desc, flag_default
lines = _find_flag_initializations()
_write_flags_to_md(lines)
# Tests
happy_path = b'./logic/recommender.go:28:\tpodMinMemoryMb = flag.Float64("pod-recommendation-min-memory-mb", 250, `Minimum memory recommendation for a pod`)'
f_name, f_type, f_desc, f_default = _process_line(happy_path)
assert f_name == 'pod-recommendation-min-memory-mb'
assert f_type == 'Float64'
assert f_desc == 'Minimum memory recommendation for a pod'
assert f_default == '250'
description_with_comma = b'./routines/recommender.go:52:\tmemorySaver = flag.Bool("memory-saver", false, `If true, only track pods which have an associated VPA`)'
f_name, f_type, f_desc, f_default = _process_line(description_with_comma)
assert f_name == 'memory-saver'
assert f_type == 'Bool'
assert f_desc == 'If true, only track pods which have an associated VPA'
assert f_default == 'false'
default_with_string = b'./main.go:56:\tpodNameLabel = flag.String("pod-name-label", "kubernetes_pod_name", `Label name to look for pod names`)'
f_name, f_type, f_desc, f_default = _process_line(default_with_string)
assert f_name == 'pod-name-label'
assert f_type == 'String'
assert f_desc == 'Label name to look for pod names'
assert f_default == '"kubernetes_pod_name"'
Reference
이 문제에 관하여(마크다운으로 Go 프로젝트의 플래그 찾기 및 문서화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gsweene2/find-document-a-go-projects-flags-as-markdown-5689텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)