// Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "flag" "fmt" "go/build" "log" "os" ) var ( lang = flag.String("lang", "java", "target language for bindings, either java, go, or objc (experimental).") outdir = flag.String("outdir", "", "result will be written to the directory instead of stdout.") javaPkg = flag.String("javapkg", "", "custom Java package path used instead of the default 'go.'. Valid only with -lang=java.") prefix = flag.String("prefix", "", "custom Objective-C name prefix used instead of the default 'Go'. Valid only with -lang=objc.") ) var usage = `The Gobind tool generates Java language bindings for Go. For usage details, see doc.go.` func main() { flag.Parse() if *lang != "java" && *javaPkg != "" { log.Fatalf("Invalid option -javapkg for gobind -lang=%s", *lang) } else if *lang != "objc" && *prefix != "" { log.Fatalf("Invalid option -prefix for gobind -lang=%s", *lang) } cwd, err := os.Getwd() if err != nil { log.Fatal(err) } for _, arg := range flag.Args() { pkg, err := build.Import(arg, cwd, 0) if err != nil { fmt.Fprintf(os.Stderr, "%s: %v\n", arg, err) os.Exit(1) } genPkg(pkg) } os.Exit(exitStatus) } var exitStatus = 0 func errorf(format string, args ...interface{}) { fmt.Fprintf(os.Stderr, format, args...) fmt.Fprintln(os.Stderr) exitStatus = 1 }