package main import ( "encoding/json" "fmt" "io/ioutil" "os" ) type Godep struct { Deps []Dep } type Dep struct { ImportPath string Rev string } func main() { if len(os.Args[1:]) != 2 { fmt.Fprintf(os.Stderr, "Expects two arguments, a path to the Godep.json file and a package to get the commit for\n") os.Exit(1) } path := os.Args[1] pkg := os.Args[2] data, err := ioutil.ReadFile(path) if err != nil { fmt.Fprintf(os.Stderr, "Unable to read %s: %v\n", path, err) os.Exit(1) } godeps := &Godep{} if err := json.Unmarshal(data, godeps); err != nil { fmt.Fprintf(os.Stderr, "Unable to read %s: %v\n", path, err) os.Exit(1) } for _, dep := range godeps.Deps { if dep.ImportPath != pkg { continue } if len(dep.Rev) > 7 { dep.Rev = dep.Rev[0:7] } fmt.Fprintf(os.Stdout, dep.Rev) return } fmt.Fprintf(os.Stderr, "Could not find %s in %s\n", pkg, path) os.Exit(1) }