Skip to content

all: add canonical imports

Sebastien Binet requested to merge terse_canonical into master

Created by: kortschak

@btracey Please take a look.

Done with a combination of Go and bash.

package.go

package main

import (
	"fmt"
	"go/parser"
	"go/token"
	"os"
	"strings"
)

func main() {
	fset := token.NewFileSet()
	pkgs, err := parser.ParseDir(fset, os.Args[1], nil, parser.ParseComments)
	if err != nil {
		panic(err)
	}
	for p, pkg := range pkgs {
		if p == "main" {
			continue
		}
		for name, f := range pkg.Files {
			if f.Doc != nil {
				for _, c := range f.Doc.List {
					if strings.Contains(c.Text, "Package "+p) {
						fmt.Println(name)
						os.Exit(0)
					}
				}
			}
		}
	}
	os.Exit(1)
}

and in GOPATH/src

for d in $(find gonum.org/v1/gonum -not -path '*/\.*' -type d); do
    if f=$(go run package.go $d 2>/dev/null); then
        sed -i "s|^\(package .*\)$|\1 // import \"$d\"|" $f
    fi
done

Merge request reports