From 93d0d3f19a0ee600e7e46f5e6fcc6913a1d272a7 Mon Sep 17 00:00:00 2001 From: zhangtian Date: Sun, 23 Oct 2022 18:11:04 +0800 Subject: [PATCH] init --- .gitignore | 95 +++++++++++ .goreleaser.yaml | 45 +++++ Makefile | 14 ++ README.md | 18 ++ docs/doc_config.md | 33 ++++ docs/img.png | Bin 0 -> 159112 bytes go.mod | 14 ++ main.go | 100 +++++++++++ struct_comment.go | 26 +++ struct_info.go | 33 ++++ struct_info_test.go | 33 ++++ struct_markdown.go | 114 +++++++++++++ struct_parser.go | 403 ++++++++++++++++++++++++++++++++++++++++++++ struct_tag.go | 55 ++++++ test/Config_doc.md | 33 ++++ test/ext/hook.go | 17 ++ test/test.go | 15 ++ version.go | 26 +++ 18 files changed, 1074 insertions(+) create mode 100644 .gitignore create mode 100644 .goreleaser.yaml create mode 100644 Makefile create mode 100644 README.md create mode 100644 docs/doc_config.md create mode 100644 docs/img.png create mode 100644 go.mod create mode 100644 main.go create mode 100644 struct_comment.go create mode 100644 struct_info.go create mode 100644 struct_info_test.go create mode 100644 struct_markdown.go create mode 100644 struct_parser.go create mode 100644 struct_tag.go create mode 100644 test/Config_doc.md create mode 100644 test/ext/hook.go create mode 100644 test/test.go create mode 100644 version.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be2b82f --- /dev/null +++ b/.gitignore @@ -0,0 +1,95 @@ +# ---> Go +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so +*.DS_Store + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof +*.sum + +# ---> JetBrains +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + +*/log/ + +bin/ +storage/ +coverage.out +count.out +*.out +dist/ + +static/dist + +cover.xml +coverage.html +coverage.txt +coverage.xml +report.html +report.xml + +vendor/ \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..f021ebb --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,45 @@ +project_name: type2md +builds: + - env: + - CGO_ENABLED=0 + - GOPROXY="https://goproxy.cn,direct" + flags: + - -trimpath + ldflags: + - -s -w + - -X "main.Version={{ .Version }}" + - -X "main.CommitID={{ .ShortCommit }}" + - -X "main.BuildTime={{ .Date }}" + main: . + +checksum: + name_template: 'checksums.txt' + +changelog: + sort: asc + use: gitlab + groups: + - title: Features + regexp: "^.*feat[(\\w)]*:+.*$" + order: 100 + - title: 'Bug fixes' + regexp: "^.*fix[(\\w)]*:+.*$" + order: 200 + - title: 'Documentation updates' + regexp: "^.*docs[(\\w)]*:+.*$" + order: 400 + - title: Others + order: 999 + filters: + exclude: + - '^test:' + - '^chore' + - 'merge conflict' + - '^ci' + - '^style' + - Merge pull request + - Merge remote-tracking branch + - Merge branch + +release: + footer: "Thanks for your support!" diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..933399d --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +GO_BIN_PATH := $(if $(GOBIN),$(GOBIN),$(GOPATH)/bin) + +VERSION ?= dev +BUILD_TIME ?= `date "+%Y-%m-%d %H:%M:%S"` +COMMIT_ID ?= `git rev-parse --short HEAD` + +GO_BUILD := go build --trimpath --ldflags "-w -s \ +-X 'main.Version=$(VERSION)' \ +-X 'main.CommitID=$(COMMIT_ID)' \ +-X 'main.BuildTime=$(BUILD_TIME)'" + +all: + $(GO_BUILD) -o type2md ./*.go + mv type2md $(GO_BIN_PATH)/type2md \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7729bef --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# golang type define to markdown + + +## Usage + +```go +package docs + +//go:generate type2md github.com/eleztian/test Config + +``` + +```shell +go install github.com/eleztian/type2md +go generate ./... +``` +![img.png](docs/img.png) + diff --git a/docs/doc_config.md b/docs/doc_config.md new file mode 100644 index 0000000..58c3aae --- /dev/null +++ b/docs/doc_config.md @@ -0,0 +1,33 @@ +# Config Doc +Config doc. + +| key | 类型 | 必填 | 默认值 | 描述 | +|----------|----------|-----|------------------|--------------| +|Pre|[Hook](#ext.Hook)|false||| +|Post|[Hook](#ext.Hook)|false||| +|servers.{string}.host|string|false||| +|servers.{string}.port|int|true||- `22`
- `65522`| + +## ext.Mode +**Type:** int + +Mode mode define. + +| Value | 描述 | +|----------|--------------| +|1|mode q.| +|2|mode a.| + +## ext.Hook +Hook hook config. + +| key | 类型 | 必填 | 默认值 | 描述 | +|----------|----------|-----|------------------|--------------| +|name|string|true|example|hook name.| +|commands.[].|string|false||| +|envs.{string}.|string|false||| +|mode|[Mode](#ext.Mode)|false|1|run mode.| + +--- +GENERATED BY THE COMMAND [type2md](https://github.com/eleztian/type2md) +from github.com/eleztian/type2md/test.Config diff --git a/docs/img.png b/docs/img.png new file mode 100644 index 0000000000000000000000000000000000000000..1953df6e27952cb4026e28ee9f326842728a5ed8 GIT binary patch literal 159112 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 >y-}XOZf5`P0rE^II)s{o| zvt-E9dPL-fB_z;)%85J|zgfqPf$D>i`%85&-j!^TfMkTX%1De%#5wfe4d2FlVM|YwU{3XmE&q`Rd$Y=2utAZs+S|wiXNX z!rXW+hwO6mDY^tJh*WQ*e-I-1v~0K-ZetU4$5_raaObq^>EBciqQEF7{pM{*f<8

j@z<31z1bEyAy7CMw*k2a7-~8fj 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") + } + for idx, nd := range item.Enums.Names { + if nd[1] != "" { + buf.WriteString(fmt.Sprintf("- `%s`:%s
", nd[0], nd[1])) + } else { + buf.WriteString(fmt.Sprintf("- `%s`", nd[0])) + } + if idx != len(item.Enums.Names)-1 { + buf.WriteString("
") + } + } + + } + buf.WriteString("|\n") + } + } + + genEnums := func(enums *EnumInfo, desc string) { + buf.WriteString(fmt.Sprintf("**Type:** %s\n\n", enums.Type)) + buf.WriteString(desc) + buf.WriteString("\n") + + if len(enums.Names) != 0 { + buf.WriteString("| Value | 描述 |\n") + buf.WriteString("|----------|--------------|\n") + for _, info := range enums.Names { + + buf.WriteString("|") + buf.WriteString(info[0]) + buf.WriteString("|") + buf.WriteString(info[1]) + buf.WriteString("|\n") + } + } + + } + if mk.MainStructName != "" { + genStruct(data[mk.MainStructName]) + delete(data, mk.MainStructName) + } + + for name, structInfo := range data { + var ( + modPath string + typeName string + ) + lastIdx := strings.LastIndex(name, ".") + if lastIdx < 0 { + typeName = name + } else { + typeName = name[lastIdx+1:] + modPath = name[:lastIdx] + } + + if structInfo.Enums != nil { + buf.WriteString(fmt.Sprintf("\n## %s\n", mk.ObjTitleFunc(modPath, typeName))) + genEnums(structInfo.Enums, structInfo.Describe) + } else { + buf.WriteString(fmt.Sprintf("\n## %s\n", mk.ObjTitleFunc(modPath, typeName))) + genStruct(structInfo) + } + } + + buf.WriteString(fmt.Sprintf("\n---\nGENERATED BY THE COMMAND [type2md](https://github."+ + "com/eleztian/type2md)\nfrom %s\n", + mk.MainStructName)) + + return buf.Bytes() +} diff --git a/struct_parser.go b/struct_parser.go new file mode 100644 index 0000000..72e4ced --- /dev/null +++ b/struct_parser.go @@ -0,0 +1,403 @@ +package main + +import ( + "fmt" + "go/ast" + goparser "go/parser" + "go/token" + "go/types" + "strings" + + "golang.org/x/tools/go/loader" +) + +type Parser struct { + Tag string + RootModPath string + program *loader.Program + loaderCfg *loader.Config + fileImportNamed map[*ast.File]map[string]string + fileTypeDoc map[*ast.File]map[string]string +} + +func NewParser(modPath string) (*Parser, error) { + cfg := &loader.Config{ + ParserMode: goparser.ParseComments, + } + cfg.Import(modPath) + + p, err := cfg.Load() + if err != nil { + return nil, err + } + res := &Parser{ + Tag: "json", + RootModPath: "", + program: p, + loaderCfg: cfg, + fileImportNamed: map[*ast.File]map[string]string{}, + fileTypeDoc: map[*ast.File]map[string]string{}, + } + + return res, nil +} + +func (p *Parser) getFileImportNamedMap(file *ast.File) map[string]string { + namedImportMap := map[string]string{} + for _, imp := range file.Imports { + modPath := strings.Trim(imp.Path.Value, "\"") + if imp.Name == nil { + namedImportMap[p.program.Package(modPath).Pkg.Name()] = modPath + } else { + namedImportMap[imp.Name.Name] = modPath + } + } + return namedImportMap +} + +func (p *Parser) getFileTypeDocMap(file *ast.File) map[string]string { + typeDocMap := map[string]string{} + for _, imp := range file.Decls { + genDecl, ok := imp.(*ast.GenDecl) + if !ok { + continue + } + if genDecl.Tok != token.TYPE { + continue + } + var comment = "" + if genDecl.Doc != nil { + comment = TrimComment(genDecl.Doc.Text()) + if comment != "" { + comment += "\n" + } + } + for _, spec := range genDecl.Specs { + if specType, ok := spec.(*ast.TypeSpec); ok { + var subComment = GetDescribeFromComment(specType.Doc, specType.Comment) + typeDocMap[specType.Name.Name] = comment + subComment + } + } + } + + return typeDocMap +} + +func (p *Parser) parseFileStruct( + modPath string, + file *ast.File, + exParseMap map[string]struct{}, + objName string, + objStructType *ast.StructType) map[string]StructInfo { + + res := make(map[string]StructInfo, 0) + typeKey := TypeKey(modPath, objName) + + namedImportMap := p.fileImportNamed[file] + typeDocMap := p.fileTypeDoc[file] + + structInfo := p.parseStruct(objStructType, typeDocMap[objName]) + res[typeKey] = structInfo + for idx, field := range structInfo.Fields { + if field.Reference == "" { + continue + } + subModPath := "" + if field.Reference == "." { + subModPath = modPath + } else { + subModPath = namedImportMap[field.Reference] + } + structInfo.Fields[idx].Reference = subModPath + + key := TypeKey(subModPath, field.Type) + if _, ok := exParseMap[key]; !ok { + for typeName, fields := range p.Parse(subModPath, field.Type) { + res[typeName] = fields + } + exParseMap[key] = struct{}{} + } + } + + return res +} + +func (p *Parser) Parse(modPath string, typeName string) map[string]StructInfo { + pktInfo := p.program.Package(modPath) + if pktInfo == nil { + return map[string]StructInfo{} + } + res := make(map[string]StructInfo, 0) + exParseMap := make(map[string]struct{}) + + for _, file := range pktInfo.Files { + if _, ok := p.fileImportNamed[file]; !ok { + p.fileImportNamed[file] = p.getFileImportNamedMap(file) + } + if _, ok := p.fileTypeDoc[file]; !ok { + p.fileTypeDoc[file] = p.getFileTypeDocMap(file) + } + obj := file.Scope.Lookup(typeName) + if obj == nil { + continue + } + objTypeSpec := obj.Decl.(*ast.TypeSpec) + var objType = objTypeSpec.Type + if v, ok := objType.(*ast.StarExpr); ok { + objType = v.X + } + switch ost := objType.(type) { + case *ast.StructType: + structMaps := p.parseFileStruct(modPath, file, exParseMap, obj.Name, ost) + for name, info := range structMaps { + res[name] = info + } + case *ast.Ident: + if ost.Obj == nil { // 基本数据类型, 枚举值 + enums := p.getEnumTypeValues(&pktInfo.Info, typeName, file.Decls) + res[TypeKey(modPath, typeName)] = StructInfo{ + Describe: p.fileTypeDoc[file][typeName], + Enums: &EnumInfo{ + Type: ost.Name, + Names: enums, + }} + } + case *ast.SelectorExpr: + subModPath := p.fileImportNamed[file][ost.X.(*ast.Ident).Name] + subTypeName := ost.Sel.Name + structMaps := p.Parse(subModPath, subTypeName) + oldKey := TypeKey(subModPath, subTypeName) + info := structMaps[oldKey] + info.Describe += fmt.Sprintf("alias `%s`", oldKey) + + structMaps[TypeKey(modPath, typeName)] = info + delete(structMaps, oldKey) + return structMaps + } + } + return res +} + +func (p *Parser) getEnumTypeValues(pktInfo *types.Info, name string, decls []ast.Decl) [][2]string { + res := make([][2]string, 0) + +EXIT: + for _, obj := range decls { + + if genDecl, ok := obj.(*ast.GenDecl); ok { + if genDecl.Tok != token.CONST || len(genDecl.Specs) == 0 { + continue + } + firstSpec := genDecl.Specs[0] + if valueSpec, ok := firstSpec.(*ast.ValueSpec); ok { + t, ok := valueSpec.Type.(*ast.Ident) + if !ok || t.Name != name { + continue + } + } else { + continue + } + + for _, s := range genDecl.Specs { + v := s.(*ast.ValueSpec) // safe because decl.Tok == token.CONST + for _, name := range v.Names { + c := pktInfo.ObjectOf(name).(*types.Const) + res = append(res, [2]string{ + c.Val().ExactString(), + GetDescribeFromComment(v.Doc, v.Comment), + }) + } + } + break EXIT + } + } + + return res +} + +func (p *Parser) parseTypeExpr(obj ast.Expr) []FieldInfo { + if v, ok := obj.(*ast.StarExpr); ok { + obj = v.X + } + var res []FieldInfo + switch ot := obj.(type) { + case *ast.SelectorExpr: + res = []FieldInfo{{Type: ot.Sel.Name, Reference: ot.X.(*ast.Ident).Name, skipNum: 1}} + case *ast.Ident: + field := FieldInfo{ + Type: ot.Name, + } + if ot.Obj != nil { + field.Reference = "." + } + res = append(res, field) + case *ast.StructType: + res = p.parseStruct(ot, "").Fields + case *ast.MapType: + prefix := fmt.Sprintf("{%s}.", ot.Key) + res = p.parseTypeExpr(ot.Value) + for idx := range res { + res[idx].Name = prefix + res[idx].Name + } + case *ast.SliceExpr: + prefix := "[]." + res = p.parseTypeExpr(ot.X) + for idx := range res { + res[idx].Name = prefix + res[idx].Name + } + case *ast.ArrayType: + prefix := "[]" + t, ok := ot.Len.(*ast.BasicLit) + if ok { + prefix = fmt.Sprintf("[%s]", t.Value) + } + res = p.parseTypeExpr(ot.Elt) + for idx := range res { + res[idx].Name = prefix + res[idx].Name + } + } + return res +} + +func (p *Parser) parseStruct(objStructType *ast.StructType, desc string) StructInfo { + res := StructInfo{ + Describe: desc, + Fields: make([]FieldInfo, 0, len(objStructType.Fields.List)), + } + + for _, f := range objStructType.Fields.List { + if f.Names[0].Name[0] <= 'Z' && f.Names[0].Name[0] >= 'A' { + res.Fields = append(res.Fields, p.parseStructField(f)...) + } + } + + return res +} + +func (p *Parser) parseStructField(f *ast.Field) []FieldInfo { + res := make([]FieldInfo, 0) + + tagStr := "" + if f.Tag != nil { + tagStr = strings.Trim(f.Tag.Value, "`") + } + tagInfo := ParseStructTag(p.Tag, tagStr) + if tagInfo.Name == "-" { + return res + } + + baseField := FieldInfo{ + Name: tagInfo.Name, + Default: tagInfo.Default, + Require: tagInfo.Require, + Enums: EnumInfo{ + Names: tagInfo.Enums, + }, + } + if baseField.Name == "" { + baseField.Name = f.Names[0].Name + } + + baseField.Describe += GetDescribeFromComment(f.Doc, f.Comment) + + if s, ok := f.Type.(*ast.StarExpr); ok { + f.Type = s.X + } + switch tt := f.Type.(type) { + case *ast.Ident: + baseField.Type = tt.Name + if tt.Obj != nil { + baseField.Reference = "." + } + if tagInfo.Inline && baseField.Reference == "." { + for _, field := range p.parseTypeExpr(tt.Obj.Decl.(*ast.TypeSpec).Type) { + res = append(res, field) + } + } else { + res = append(res, baseField) + } + case *ast.StructType: + for _, f := range p.parseStruct(tt, baseField.Describe).Fields { + if tagInfo.Inline { + res = append(res, f) + } else { + if f.skipNum != 0 { + field := baseField.Copy() + field.Type = f.Type + if f.Name != "" { + field.Name += "." + f.Name + } + res = append(res, field) + } else { + f.Name = baseField.Name + "." + f.Name + res = append(res, f) + } + } + } + case *ast.MapType: + baseField.Name += fmt.Sprintf(".{%s}", tt.Key) + + var subFields = p.parseTypeExpr(tt.Value) + for _, f := range subFields { + if f.skipNum != 0 { + field := baseField.Copy() + field.Type = f.Type + field.Reference = f.Reference + if f.Name != "" { + field.Name += "." + f.Name + } + res = append(res, field) + } else { + f.Name = baseField.Name + "." + f.Name + res = append(res, f) + } + } + case *ast.SliceExpr: + baseField.Name += ".[]" + for _, f := range p.parseTypeExpr(tt.X) { + if f.skipNum != 0 { + field := baseField.Copy() + field.Type = f.Type + field.Reference = f.Reference + if f.Name != "" { + field.Name += "." + f.Name + } + res = append(res, field) + } else { + f.Name = baseField.Name + "." + f.Name + res = append(res, f) + } + } + case *ast.ArrayType: + t, ok := tt.Len.(*ast.BasicLit) + if ok { + baseField.Name += fmt.Sprintf(".[%s]", t.Value) + } else { + baseField.Name += ".[]" + } + for _, f := range p.parseTypeExpr(tt.Elt) { + if f.skipNum != 0 { + field := baseField.Copy() + field.Type = f.Type + field.Reference = f.Reference + if f.Name != "" { + field.Name += "." + f.Name + } + res = append(res, field) + } else { + f.Name = baseField.Name + "." + f.Name + res = append(res, f) + } + } + case *ast.SelectorExpr: + baseField.Type = tt.Sel.Name + baseField.Reference = tt.X.(*ast.Ident).Name + res = append(res, baseField) + } + + return res +} + +func TypeKey(modPath string, typeName string) string { + return modPath + "." + typeName +} diff --git a/struct_tag.go b/struct_tag.go new file mode 100644 index 0000000..2590f9a --- /dev/null +++ b/struct_tag.go @@ -0,0 +1,55 @@ +package main + +import ( + "reflect" + "strings" +) + +type TagInfo struct { + Name string + Default string + Require bool + Inline bool + Enums [][2]string +} + +func ParseStructTag(tagType string, tagStr string) *TagInfo { + res := &TagInfo{} + tag := strings.TrimSpace(reflect.StructTag(tagStr).Get(tagType)) + if tag != "" { + sp := strings.Split(tag, ",") + res.Name = strings.TrimSpace(sp[0]) + for _, item := range sp[1:] { + item = strings.TrimSpace(item) + if item == "inline" { + res.Inline = true + } + } + } + res.Default, _ = reflect.StructTag(tagStr).Lookup("default") + _, res.Require = reflect.StructTag(tagStr).Lookup("require") + enumsStr, _ := reflect.StructTag(tagStr).Lookup("enums") + + if enumsStr != "" { + res.Enums = make([][2]string, 0) + sp := strings.Split(enumsStr, ",") + for _, k := range sp { + var ( + value string + desc string + ) + idx := strings.Index(k, ":") + if idx >= 0 { + value = k[:idx] + desc = k[idx+1:] + } else { + value = k + } + res.Enums = append(res.Enums, [2]string{ + value, desc, + }) + } + } + + return res +} diff --git a/test/Config_doc.md b/test/Config_doc.md new file mode 100644 index 0000000..ae880e0 --- /dev/null +++ b/test/Config_doc.md @@ -0,0 +1,33 @@ +# Config Doc +Config doc. + +| key | 类型 | 必填 | 默认值 | 描述 | +|----------|----------|-----|------------------|--------------| +|Pre|[Hook](#ext.Hook)|false||| +|Post|[Hook](#ext.Hook)|false||| +|servers.{string}.host|string|false||| +|servers.{string}.port|int|true||- `22`
- `65522`| + +## ext.Hook +Hook hook config. + +| key | 类型 | 必填 | 默认值 | 描述 | +|----------|----------|-----|------------------|--------------| +|name|string|true|example|hook name.| +|commands.[].|string|false||| +|envs.{string}.|string|false||| +|mode|[Mode](#ext.Mode)|false|1|run mode.| + +## ext.Mode +**Type:** int + +Mode mode define. + +| Value | 描述 | +|----------|--------------| +|1|mode q.| +|2|mode a.| + +--- +GENERATED BY THE COMMAND [type2md](https://github.com/eleztian/type2md) +from github.com/eleztian/type2md/test.Config diff --git a/test/ext/hook.go b/test/ext/hook.go new file mode 100644 index 0000000..b16e7f1 --- /dev/null +++ b/test/ext/hook.go @@ -0,0 +1,17 @@ +package ext + +// Hook hook config. +type Hook struct { + Name string `json:"name" require:"" default:"example"` // hook name + Commands []string `json:"commands"` // command list + Envs map[string]string `json:"envs"` // env key map + Mode Mode `json:"mode" default:"1"` // run mode +} + +// Mode mode define. +type Mode int + +const ( + Mode_Q Mode = iota + 1 // mode q + Mode_A // mode a +) diff --git a/test/test.go b/test/test.go new file mode 100644 index 0000000..4e32a95 --- /dev/null +++ b/test/test.go @@ -0,0 +1,15 @@ +package test + +import "github.com/eleztian/type2md/test/ext" + +//go:generate type2md -f ../docs/doc_config.md github.com/eleztian/type2md/test Config + +// Config doc. +type Config struct { + Pre ext.Hook + Post *ext.Hook + Servers map[string]struct { + Host string `json:"host"` + Port int `json:"port" enums:"22,65522" require:""` + } `json:"servers"` // server list +} diff --git a/version.go b/version.go new file mode 100644 index 0000000..ab25ccf --- /dev/null +++ b/version.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" + "os" +) + +var ( + Version = "v1.0.0" + CommitID = "" + BuildTime = "" +) + +func PrintVersion() { + fmt.Printf(`%s +--- +Parse the source code through the ast syntax tree, +extract the specified structure definition and +convert it into a markdown file. +---- +Version : %s +CommitID : %s +BuildTime: %s +Author : MoreSec CPF 中间件团队 +`, os.Args[0], Version, CommitID, BuildTime) +}