From d05c98eb4c4f4e08cdd842996c6048c5fb5ac969 Mon Sep 17 00:00:00 2001 From: ddddddO Date: Sat, 11 Dec 2021 20:40:15 +0900 Subject: [PATCH] add sample --- README_Package_2.md | 4 + .../go-list_pipe_programmable-gtree/main.go | 112 ++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 sample/go-list_pipe_programmable-gtree/main.go diff --git a/README_Package_2.md b/README_Package_2.md index fc1a7cd..40987fc 100644 --- a/README_Package_2.md +++ b/README_Package_2.md @@ -228,3 +228,7 @@ func main() { } ``` + +- Convert `go list -deps ./...` to tree. (inspired by https://github.com/nikolaydubina/go-recipes#readme) + +[link](https://github.com/ddddddO/gtree/blob/master/sample/go-list_pipe_programmable-gtree/main.go) diff --git a/sample/go-list_pipe_programmable-gtree/main.go b/sample/go-list_pipe_programmable-gtree/main.go new file mode 100644 index 0000000..18219c5 --- /dev/null +++ b/sample/go-list_pipe_programmable-gtree/main.go @@ -0,0 +1,112 @@ +package main + +import ( + "bufio" + "os" + "strings" + + "github.com/ddddddO/gtree" +) + +// cd github.com/ddddddO/gtree +// go list -deps ./... | go run sample/go-list_pipe_programmable-gtree/main.go +func main() { + var ( + root = gtree.NewRoot("[All Dependencies]") + node *gtree.Node + ) + scanner := bufio.NewScanner(os.Stdin) + for scanner.Scan() { + line := scanner.Text() + splited := strings.Split(line, "/") + + for i, s := range splited { + if i == 0 { + node = root.Add(s) + continue + } + node = node.Add(s) + } + node = root + } + + if err := gtree.ExecuteProgrammably(os.Stdout, root); err != nil { + panic(err) + } + // Output: + // [All Dependencies] + // ├── unsafe + // ├── internal + // │ ├── unsafeheader + // │ ├── abi + // │ ├── cpu + // │ ├── bytealg + // │ ├── goexperiment + // │ ├── reflectlite + // │ ├── race + // │ ├── itoa + // │ ├── fmtsort + // │ ├── oserror + // │ ├── syscall + // │ │ ├── unix + // │ │ └── execenv + // │ ├── poll + // │ └── testlog + // ├── runtime + // │ └── internal + // │ ├── atomic + // │ ├── sys + // │ └── math + // ├── errors + // ├── sync + // │ └── atomic + // ├── io + // │ ├── fs + // │ └── ioutil + // ├── unicode + // │ ├── utf8 + // │ └── utf16 + // ├── bytes + // ├── strings + // ├── bufio + // ├── encoding + // │ ├── binary + // │ ├── base64 + // │ └── json + // ├── math + // │ └── bits + // ├── strconv + // ├── reflect + // ├── sort + // ├── syscall + // ├── time + // ├── path + // │ └── filepath + // ├── os + // ├── fmt + // ├── github.com + // │ ├── pelletier + // │ │ └── go-toml + // │ │ └── v2 + // │ │ └── internal + // │ │ ├── danger + // │ │ ├── ast + // │ │ └── tracker + // │ ├── pkg + // │ │ └── errors + // │ └── ddddddO + // │ └── gtree + // │ ├── cmd + // │ │ └── gtree + // │ └── sample + // │ ├── find_pipe_programmable-gtree + // │ ├── go-list_pipe_programmable-gtree + // │ ├── like_cli + // │ │ └── adapter + // │ └── programmable + // ├── regexp + // │ └── syntax + // ├── gopkg.in + // │ └── yaml.v2 + // └── flag +}