Skip to content

Instantly share code, notes, and snippets.

@nkanaev
Created March 16, 2021 10:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nkanaev/8e1deee0be8dee4e1ec63d230549d0ad to your computer and use it in GitHub Desktop.
Save nkanaev/8e1deee0be8dee4e1ec63d230549d0ad to your computer and use it in GitHub Desktop.
// show go module dependencies as an indented tree
// usage: go mod graph | go run gt.go
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func show(root string, deps map[string][]string, depth int) {
fmt.Println(strings.Repeat("\t", depth), root)
for _, dep := range deps[root] {
show(dep, deps, depth + 1)
}
}
func main() {
root := ""
deps := make(map[string][]string)
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
parts := strings.Split(scanner.Text(), " ")
if len(parts) != 2 {
continue
}
l, r := parts[0], parts[1]
if root == "" {
root = l
}
if deps[l] == nil {
deps[l] = make([]string, 0)
}
deps[l] = append(deps[l], r)
}
show(root, deps, 0)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment