Created
September 11, 2015 16:58
-
-
Save paultag/0226965c62dbaf34118a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "bufio" | |
| "fmt" | |
| "io" | |
| "log" | |
| "os" | |
| "path" | |
| "strings" | |
| ) | |
| func FindRootPath(roots []string) string { | |
| if len(roots) == 0 { | |
| return "" | |
| } | |
| root := roots[0] | |
| for _, entry := range roots { | |
| if len(entry) < len(root) { | |
| root = entry | |
| } | |
| } | |
| return root | |
| } | |
| func main() { | |
| for _, file := range os.Args[1:] { | |
| mapping, err := ParseFile(file) | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| for pkg, provides := range mapping { | |
| paths := []string{} | |
| for path, _ := range provides { | |
| paths = append(paths, path) | |
| } | |
| fmt.Printf("%s: %s\n", pkg, FindRootPath(paths)) | |
| } | |
| } | |
| } | |
| func eatLeader(reader *bufio.Reader) error { | |
| for { | |
| line, err := reader.ReadString('\n') | |
| if err != nil { | |
| return err | |
| } | |
| if strings.HasPrefix(line, "FILE ") { | |
| return nil | |
| } | |
| } | |
| } | |
| type Mapping map[string]map[string]bool | |
| func Partition(in, what string) (string, string) { | |
| els := strings.SplitN(in, what, 2) | |
| if len(els) == 2 { | |
| return strings.TrimSpace(els[0]), strings.TrimSpace(els[1]) | |
| } | |
| return strings.TrimSpace(els[0]), "" | |
| } | |
| var filePathLeader = "usr/share/gocode/src/" | |
| func ComposeMapping(reader *bufio.Reader) (Mapping, error) { | |
| ret := Mapping{} | |
| for { | |
| line, err := reader.ReadString('\n') | |
| if err != nil { | |
| if err == io.EOF { | |
| break | |
| } | |
| return Mapping{}, err | |
| } | |
| filePath, pkgEntry := Partition(line, " ") | |
| _, pkg := Partition(pkgEntry, "/") | |
| if strings.HasPrefix(filePath, filePathLeader) { | |
| // XXX: _fixtures | |
| // if strings.Contains(filePath, "/testdata/") { | |
| // continue | |
| // } | |
| importPath := path.Dir(filePath[len(filePathLeader):]) | |
| if _, ok := ret[pkg]; !ok { | |
| ret[pkg] = map[string]bool{} | |
| } | |
| ret[pkg][importPath] = true | |
| } | |
| } | |
| return ret, nil | |
| } | |
| func ParseFile(file string) (Mapping, error) { | |
| fd, err := os.Open(file) | |
| if err != nil { | |
| return Mapping{}, err | |
| } | |
| reader := bufio.NewReader(fd) | |
| eatLeader(reader) | |
| return ComposeMapping(reader) | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| golang-gopkg-dancannon-gorethink.v1-dev: gopkg.in/dancannon | |
| golang-gopkg-tomb.v1-dev: gopkg.in/tomb.v1 | |
| golang-gopkg-vmihailenco-msgpack.v2-dev: gopkg.in/vmihailenco/msgpack.v2 | |
| golang-thrift-dev: thrift | |
| golang-log4go-dev: code.google.com/p/log4go | |
| golang-coreos-log-dev: github.com/coreos/go-log/log | |
| golang-github-getsentry-raven-go-dev: github.com/getsentry/raven-go | |
| golang-golang-x-tools-dev: golang.org/x/tools | |
| golang-github-shurcool-sanitized-anchor-name-dev: github.com/shurcooL/sanitized_anchor_name | |
| golang-github-spf13-jwalterweatherman-dev: github.com/spf13/jwalterweatherman | |
| influxdb-dev: github.com/influxdb/influxdb | |
| golang-mreiferson-httpclient-dev: github.com/mreiferson/go-httpclient | |
| golang-github-go-ldap-ldap-dev: github.com/go-ldap/ldap | |
| golang-github-jacobsa-ratelimit-dev: github.com/jacobsa/ratelimit | |
| golang-github-peterh-liner-dev: github.com/peterh/liner | |
| golang-google-cloud-compute-metadata-dev: google.golang.org/cloud/internal | |
| golang-github-abbot-go-http-auth-dev: github.com/abbot/go-http-auth | |
| golang-github-boltdb-bolt-dev: github.com/boltdb/bolt | |
| golang-github-hashicorp-raft-boltdb-dev: github.com/hashicorp/raft-boltdb | |
| golang-github-julienschmidt-httprouter-dev: github.com/julienschmidt/httprouter | |
| golang-github-naoina-go-stringutil-dev: github.com/naoina/go-stringutil | |
| golang-github-odeke-em-command-dev: github.com/odeke-em/command | |
| golang-github-prometheus-log-dev: github.com/prometheus/log | |
| golang-goleveldb-dev: github.com/syndtr/goleveldb/leveldb | |
| golang-codesearch-dev: code.google.com/p/codesearch/index | |
| golang-github-bmizerany-pat-dev: github.com/bmizerany/pat | |
| golang-gocheck-dev: launchpad.net/gocheck | |
| golang-pq-dev: github.com/lib/pq | |
| golang-godebiancontrol-dev: github.com/mstap | |
| golang-robustirc-bridge-dev: github.com/robustirc/bridge/robustsession | |
| golang-github-samuel-go-zookeeper-dev: github.com/samuel/go-zookeeper/zk | |
| golang-gopkg-fatih-pool.v2-dev: gopkg.in/fatih/pool.v2 | |
| golang-goyaml-dev: launchpad.net/goyaml | |
| golang-doozer-dev: github.com/4ad/doozer | |
| golang-github-jacobsa-oglemock-dev: github.com/jacobsa/oglemock | |
| golang-pault-go-topsort-dev: pault.ag/go/topsort | |
| golang-github-golang-leveldb-dev: github.com/golang/leveldb | |
| golang-procfs-dev: github.com/prometheus/procfs | |
| golang-github-rakyll-statik-dev: github.com/rakyll/statik | |
| golang-github-streadway-amqp-dev: github.com/streadway/amqp | |
| golang-golang-x-oauth2-dev: golang.org/x/oauth2 | |
| golang-google-appengine-dev: google.golang.org/appengine | |
| golang-x-text-dev: code.google.com/p | |
| golang-siphash-dev: github.com/dchest/siphash | |
| golang-logrus-dev: github.com/Sirupsen/logrus | |
| golang-go.crypto-dev: code.google.com/p | |
| golang-gogoprotobuf-dev: code.google.com/p | |
| golang-gopkg-eapache-queue.v1-dev: github.com/eapache | |
| golang-github-hashicorp-raft-dev: github.com/hashicorp/raft | |
| golang-github-jacobsa-oglematchers-dev: github.com/jacobsa/oglematchers | |
| golang-github-vishvananda-netlink-dev: github.com/vishvananda/netlink | |
| golang-pault-go-config-dev: pault.ag/go/config | |
| toxiproxy-dev: github.com/Shopify/toxiproxy | |
| golang-github-d2g-dhcp4-dev: github.com/d2g/dhcp4 | |
| golang-yaml.v2-dev: gopkg.in/yaml.v2 | |
| golang-barcode-dev: github.com/boombuler/barcode | |
| golang-testify-dev: github.com/stretchr/testify | |
| golang-github-azure-go-pkcs12-dev: github.com/Azure/go-pkcs12 | |
| golang-github-go-sql-driver-mysql-dev: github.com/go-sql-driver/mysql | |
| golang-github-jacobsa-timeutil-dev: github.com/jacobsa/timeutil | |
| golang-github-odeke-em-cache-dev: github.com/odeke-em/cache | |
| golang-github-samalba-dockerclient-dev: github.com/samalba/dockerclient | |
| golang-golang-x-sys-dev: golang.org/x/sys | |
| golang-collectd-dev: collectd.org/api | |
| golang-goptlib-dev: git.torproject.org/pluggable-transports/goptlib.git | |
| golang-github-inconshreveable-mousetrap-dev: github.com/inconshreveable/mousetrap | |
| golang-github-jacobsa-syncutil-dev: github.com/jacobsa/syncutil | |
| golang-bindata-dev: github.com/jteeuwen/go-bindata | |
| golang-protobuf-extensions-dev: github.com/matttproud/golang_protobuf_extensions/ext | |
| golang-gopkg-asn1-ber.v1-dev: gopkg.in/asn1-ber.v1 | |
| golang-go-xdg-dev: launchpad.net/go-xdg/v0 | |
| golang-xmpp-dev: github.com/agl/xmpp | |
| golang-pb-dev: github.com/cheggaaa/pb | |
| golang-dbus-dev: github.com/godbus/dbus | |
| golang-github-rakyll-globalconf-dev: github.com/rakyll/globalconf | |
| golang-github-glacjay-goini-dev: github.com/glacjay/goini | |
| golang-github-go-xorm-core-dev: github.com/go-xorm/core | |
| golang-github-google-btree-dev: github.com/google/btree | |
| golang-golang-x-exp-dev: golang.org/x/exp/mmap | |
| golang-golang-x-net-dev: code.google.com/p | |
| obfs4proxy: git.torproject.org/pluggable-transports/obfs4.git/common/log | |
| golang-docker-dev: github.com/docker/docker/pkg | |
| golang-github-ugorji-go-msgpack-dev: github.com/ugorji/go-msgpack | |
| golang-github-gorilla-handlers-dev: github.com/gorilla/handlers | |
| golang-github-jtolds-gls-dev: github.com/jtolds/gls | |
| golang-guestfs-dev: libguestfs.org/guestfs | |
| golang-bazil-fuse-dev: bazil.org/fuse | |
| dh-make-golang: github.com/Debian/dh-make-golang | |
| golang-websocket-dev: github.com/gorilla/websocket | |
| golang-github-odeke-em-cli-spinner-dev: github.com/odeke-em/cli-spinner | |
| golang-github-davecgh-go-spew-dev: github.com/davecgh/go-spew/spew | |
| golang-github-garyburd-redigo-dev: github.com/garyburd/redigo/redis | |
| golang-github-docker-libtrust-dev: github.com/docker/libtrust | |
| golang-termbox-dev: github.com/nsf/termbox-go | |
| golang-github-spf13-pflag-dev: github.com/spf13/pflag | |
| golang-github-azure-go-autorest-dev: github.com/Azure | |
| golang-etcd-dev: github.com/coreos/go-etcd/etcd | |
| golang-github-coreos-go-iptables-dev: github.com/coreos/go-iptables/iptables | |
| golang-clockwork-dev: github.com/jonboulle/clockwork | |
| golang-github-kimor79-gollectd-dev: github.com/kimor79/gollectd | |
| golang-openldap-dev: github.com/mqu/openldap | |
| golang-github-odeke-em-ripper-dev: github.com/odeke-em/ripper | |
| golang-ginkgo-dev: github.com/onsi/ginkgo | |
| golang-github-bradfitz-gomemcache-dev: github.com/bradfitz/gomemcache/memcache | |
| golang-github-bradfitz-http2-dev: github.com/bradfitz/http2 | |
| golang-gopkg-mgo.v2-dev: labix.org/v2 | |
| golang-github-agtorre-gocolorize-dev: github.com/agtorre/gocolorize | |
| golang-github-bmizerany-assert-dev: github.com/bmizerany/assert | |
| golang-github-mattn-go-sqlite3-dev: github.com/mattn/go-sqlite3 | |
| golang-sorcix-irc-dev: github.com/sorcix/irc | |
| golang-objx-dev: github.com/stretchr/objx | |
| golang-gopacket-dev: code.google.com/p/gopacket | |
| golang-ed25519-dev: github.com/agl/ed25519 | |
| golang-blackfriday-dev: github.com/russross/blackfriday | |
| golang-github-vishvananda-netns-dev: github.com/vishvananda/netns | |
| golang-github-jacobsa-util-dev: github.com/jacobsa/util/lrucache | |
| golang-github-ugorji-go-codec-dev: github.com/ugorji/go | |
| golang-toml-dev: github.com/BurntSushi/toml | |
| golang-github-jacobsa-ogletest-dev: github.com/jacobsa/ogletest | |
| golang-fsnotify-dev: gopkg.in | |
| golang-github-tobi-airbrake-go-dev: github.com/tobi/airbrake-go | |
| golang-github-vaughan0-go-ini-dev: github.com/vaughan0/go-ini | |
| golang-rrd-dev: github.com/ziutek/rrd | |
| golang-github-pborman-uuid-dev: github.com/pborman/uuid | |
| golang-github-cloudfoundry-gosigar-dev: github.com/cloudfoundry/gosigar | |
| golang-github-rainycape-unidecode-dev: github.com/rainycape/unidecode | |
| golang-gocapability-dev: github.com/syndtr/gocapability/capability | |
| golang-github-armon-go-metrics-dev: github.com/armon/go-metrics | |
| golang-github-jacobsa-fuse-dev: github.com/jacobsa/fuse | |
| golang-dns-dev: github.com/miekg/dns | |
| golang-github-naoina-toml-dev: github.com/naoina/toml | |
| golang-go-patricia-dev: gopkg.in/tchap | |
| golang-go-semver-dev: github.com/coreos/go-semver | |
| golang-github-jacobsa-reqtrace-dev: github.com/jacobsa/reqtrace | |
| golang-github-gorilla-mux-dev,devel/golang-mux-dev: github.com/gorilla/mux | |
| golang-github-kardianos-osext-dev: github.com/kardianos/osext | |
| golang-gopkg-tomb.v2-dev: gopkg.in/tomb.v2 | |
| golang-go-md2man-dev: github.com/cpuguy83/go-md2man | |
| golang-gopkg-eapache-go-resiliency.v1-dev: github.com/eapache | |
| golang-github-gorhill-cronexpr-dev: github.com/gorhill/cronexpr | |
| golang-codegangsta-cli-dev: github.com/codegangsta/cli | |
| golang-glog-dev: github.com/golang/glog | |
| golang-pty-dev: github.com/kr/pty | |
| golang-text-dev: github.com/kr/text | |
| golang-go-dbus-dev: launchpad.net/go-dbus/v1 | |
| golang-pault-go-debian-dev: pault.ag/go/debian/control | |
| golang-github-cenkalti-backoff-dev: github.com/cenkalti/backoff | |
| golang-context-dev: github.com/gorilla/context | |
| golang-git2go-dev: github.com/libgit2/git2go | |
| golang-prometheus-client-dev: github.com/prometheus/client_golang/text | |
| golang-google-api-dev: google.golang.org/api/dns/v1 | |
| golang-check.v1-dev: gopkg.in/check.v1 | |
| golang-github-golang-snappy-dev: code.google.com/p | |
| golang-github-jacobsa-gcloud-dev: github.com/jacobsa/gcloud/gcs | |
| golang-vhost-dev: github.com/inconshreveable/go-vhost | |
| golang-github-jacobsa-bazilfuse-dev: github.com/jacobsa/bazilfuse | |
| golang-go-flags-dev: github.com/jessevdk/go-flags | |
| golang-pretty-dev: github.com/kr/pretty | |
| golang-gomega-dev: github.com/onsi/gomega | |
| golang-github-opencontainers-specs-dev: github.com/opencontainers/specs | |
| golang-gosqlite-dev: code.google.com/p/gosqlite/sqlite | |
| golang-etcd-server-dev: github.com/coreos/etcd | |
| golang-go-zfs-dev: github.com/mistifyio/go-zfs | |
| golang-metrics-dev: github.com/rcrowley/go-metrics | |
| golang-github-coreos-go-systemd-dev: github.com/coreos/go-systemd/dbus | |
| golang-github-mattn-go-isatty-dev: github.com/mattn/go-isatty | |
| golang-github-hashicorp-go-msgpack-dev: github.com/hashicorp/go-msgpack/codec | |
| slt: github.com/inconshrevable/slt | |
| golang-libgeoip-dev: github.com/nranchev/go-libGeoIP | |
| golang-github-robfig-pathtree-dev: github.com/robfig/pathtree | |
| golang-nzaat-dev: ancient-solutions.com/hash/nzaat | |
| golang-goprotobuf-dev: code.google.com/p |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment