Skip to content

Instantly share code, notes, and snippets.

@vishal1132
Last active October 11, 2022 16:25
Show Gist options
  • Save vishal1132/f3143e5202d12f23a6e5c108e31cc169 to your computer and use it in GitHub Desktop.
Save vishal1132/f3143e5202d12f23a6e5c108e31cc169 to your computer and use it in GitHub Desktop.

Revisions

  1. vishal1132 revised this gist Oct 10, 2022. 1 changed file with 23 additions and 7 deletions.
    30 changes: 23 additions & 7 deletions go-utils.md
    Original file line number Diff line number Diff line change
    @@ -3,18 +3,34 @@ og(){
    case "$1" in
    modv) go mod edit -json | jq -r .Go ;;
    chart) go mod graph | gmchart ;; # go install github.com/PaulXu-cn/go-mod-graph-chart/gmchart@latest
    graph) go mod graph | modgraphviz | dot -Tsvg -o mod-graph.svg; open mod-graph.svg ;;
    pgraph) go list -deps -json ./... | jq -c 'select(.Standard!=true) | {from: .ImportPath, to: .Imports[]}' | jsonl-graph | grep -v 'Cannot iterate over nul' | dot -Tsvg > package-graph.svg; open package-graph.svg;;
    graph) go mod graph | modgraphviz | dot -Tsvg -o mod-graph.svg; open mod-graph.svg ;;
    pgraph) go list -deps -json ./... | jq -c 'select(.Standard!=true) | {from: .ImportPath, to: .Imports[]}' | jsonl-graph | grep -v 'Cannot iterate over nul' | dot -Tsvg > package-graph.svg; open package-graph.svg;;
    test) tst ${@:2};; # go install gotest.tools/gotestsum@latest
    cov) covf $2 ;;
    cov-tree) covf total; go-cover-treemap -coverprofile cover.out > out.svg; open out.svg ;; # go install github.com/nikolaydubina/go-cover-treemap@latest
    files) go list -json ./... | jq -rc '[.ImportPath, (.GoFiles | length | tostring)] | join(" ")' | perl -lane 'print (" " x (20 - $F[1]), "=" x $F[1], " ", $F[1], "\t", $F[0])';; # install jq for this
    richtest) RICHGO_FORCE_COLOR=1 richgo test ./... ;; # go install github.com/kyoh86/richgo@latest
    richreport) go test -v ./... 2>&1 | tee >(richgo testfilter) | go-junit-report -out test.xml ;; # go install github.com/jstemmer/go-junit-report/v2@latest
    notests) packages_without_tests;;
    cov-tree) covf total; go-cover-treemap -coverprofile cover.out > out.svg; open out.svg ;; # go install github.com/nikolaydubina/go-cover-treemap@latest
    files) go list -json ./... | jq -rc '[.ImportPath, (.GoFiles | length | tostring)] | join(" ")' | perl -lane 'print (" " x (20 - $F[1]), "=" x $F[1], " ", $F[1], "\t", $F[0])';; # install jq for this
    richtest) RICHGO_FORCE_COLOR=1 richgo test ./... ;; # go install github.com/kyoh86/richgo@latest
    richreport) go test -v ./... 2>&1 | tee >(richgo testfilter) | go-junit-report -out test.xml ;; # go install github.com/jstemmer/go-junit-report/v2@latest
    notests) packages_without_tests;;
    fmt) go fmt ./...;; # fmt me
    lint) golangci-lint run -v ./... ;; # install golangci-lint before using this
    gen) grep -rnw "go:generate" -E -l "${1:-*.go}" . | xargs -L1 dirname | sort -u | xargs -P 8 -I{} go generate {} ;;
    bintree) go tool nm -size $2 | go-binsize-treemap > binsize.svg ;;
    srv) fileserve $2;;
    esac
    }
    fileserve(){
    echo "package main
    import \"net/http\"
    func main() { http.ListenAndServe(\":9000\", http.FileServer(http.Dir(\"$1\"))) }" > strange.go; go run strange.go &; ngrok http 9000; rm strange.go; portslay 9000;
    }
    portslay () {
    kill -9 `lsof -i tcp:$1 | tail -1 | awk '{ print $2;}'`
    }
    packages_without_tests(){
    package_hist=$(go list -json ./... | jq -rc '[.ImportPath, (.GoFiles | length | tostring)] | join(" ")' | perl -lane 'print (" " x (20 - $F[1]), "=" x $F[1], " ", $F[1], "\t", $F[0])')
  2. vishal1132 revised this gist Oct 10, 2022. 1 changed file with 9 additions and 6 deletions.
    15 changes: 9 additions & 6 deletions go-utils.md
    Original file line number Diff line number Diff line change
    @@ -3,16 +3,19 @@ og(){
    case "$1" in
    modv) go mod edit -json | jq -r .Go ;;
    chart) go mod graph | gmchart ;; # go install github.com/PaulXu-cn/go-mod-graph-chart/gmchart@latest
    graph) go mod graph | modgraphviz | dot -Tsvg -o mod-graph.svg; open mod-graph.svg ;;
    pgraph) go list -deps -json ./... | jq -c 'select(.Standard!=true) | {from: .ImportPath, to: .Imports[]}' | jsonl-graph | grep -v 'Cannot iterate over nul' | dot -Tsvg > package-graph.svg; open package-graph.svg;;
    test) tst ${@:2};; # go install gotest.tools/gotestsum@latest
    cov) covf $2 ;;
    cov-tree) covf total; go-cover-treemap -coverprofile cover.out > out.svg; open out.svg ;; # go install github.com/nikolaydubina/go-cover-treemap@latest
    files) go list -json ./... | jq -rc '[.ImportPath, (.GoFiles | length | tostring)] | join(" ")' | perl -lane 'print (" " x (20 - $F[1]), "=" x $F[1], " ", $F[1], "\t", $F[0])';; # install jq for this
    richtest) RICHGO_FORCE_COLOR=1 richgo test ./... ;; # go install github.com/kyoh86/richgo@latest
    richreport) go test -v ./... 2>&1 | tee >(richgo testfilter) | go-junit-report -out test.xml ;; # go install github.com/jstemmer/go-junit-report/v2@latest
    notests) packages_without_tests;;
    cov) covf $2 ;;
    cov-tree) covf total; go-cover-treemap -coverprofile cover.out > out.svg; open out.svg ;; # go install github.com/nikolaydubina/go-cover-treemap@latest
    files) go list -json ./... | jq -rc '[.ImportPath, (.GoFiles | length | tostring)] | join(" ")' | perl -lane 'print (" " x (20 - $F[1]), "=" x $F[1], " ", $F[1], "\t", $F[0])';; # install jq for this
    richtest) RICHGO_FORCE_COLOR=1 richgo test ./... ;; # go install github.com/kyoh86/richgo@latest
    richreport) go test -v ./... 2>&1 | tee >(richgo testfilter) | go-junit-report -out test.xml ;; # go install github.com/jstemmer/go-junit-report/v2@latest
    notests) packages_without_tests;;
    esac
    }
    packages_without_tests(){
    package_hist=$(go list -json ./... | jq -rc '[.ImportPath, (.GoFiles | length | tostring)] | join(" ")' | perl -lane 'print (" " x (20 - $F[1]), "=" x $F[1], " ", $F[1], "\t", $F[0])')
    no_test_packages=$(go list -json ./... | jq -rc 'select((.TestGoFiles | length)==0) | .ImportPath' | rg -v 'test|mock' | xargs -I {} echo {}"$")
  3. vishal1132 created this gist Oct 10, 2022.
    39 changes: 39 additions & 0 deletions go-utils.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    ```
    og(){
    case "$1" in
    modv) go mod edit -json | jq -r .Go ;;
    chart) go mod graph | gmchart ;; # go install github.com/PaulXu-cn/go-mod-graph-chart/gmchart@latest
    test) tst ${@:2};; # go install gotest.tools/gotestsum@latest
    cov) covf $2 ;;
    cov-tree) covf total; go-cover-treemap -coverprofile cover.out > out.svg; open out.svg ;; # go install github.com/nikolaydubina/go-cover-treemap@latest
    files) go list -json ./... | jq -rc '[.ImportPath, (.GoFiles | length | tostring)] | join(" ")' | perl -lane 'print (" " x (20 - $F[1]), "=" x $F[1], " ", $F[1], "\t", $F[0])';; # install jq for this
    richtest) RICHGO_FORCE_COLOR=1 richgo test ./... ;; # go install github.com/kyoh86/richgo@latest
    richreport) go test -v ./... 2>&1 | tee >(richgo testfilter) | go-junit-report -out test.xml ;; # go install github.com/jstemmer/go-junit-report/v2@latest
    notests) packages_without_tests;;
    esac
    }
    packages_without_tests(){
    package_hist=$(go list -json ./... | jq -rc '[.ImportPath, (.GoFiles | length | tostring)] | join(" ")' | perl -lane 'print (" " x (20 - $F[1]), "=" x $F[1], " ", $F[1], "\t", $F[0])')
    no_test_packages=$(go list -json ./... | jq -rc 'select((.TestGoFiles | length)==0) | .ImportPath' | rg -v 'test|mock' | xargs -I {} echo {}"$")
    echo $package_hist > hist.txt
    echo $no_test_packages > tests.txt
    rg -w -f tests.txt hist.txt
    rm hist.txt tests.txt
    }
    tst(){
    if [ $# -eq 0 ]; then
    gotestsum --rerun-fails --packages="./..." --format=testname -- -count=2
    else
    gotestsum --rerun-fails --packages="./..." --format=$1 -- -count=2
    fi
    }
    func covf(){
    case $1 in
    total) go test -covermode=count -p 1 -coverpkg=./... ./... -coverprofile=cover.out; go tool cover -func=cover.out | grep -i total: ;;
    html) go test -covermode=count -p 1 -coverpkg=./... ./... -coverprofile=cover.out; go tool cover -html=cover.out ;;
    esac
    }
    ```