mirror of https://github.com/go-python/gopy.git
89 lines
1.6 KiB
Go
89 lines
1.6 KiB
Go
// Copyright 2015 The go-python 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"
|
|
"path/filepath"
|
|
)
|
|
|
|
var (
|
|
lang = flag.String("lang", "python", "target language for bindings")
|
|
odir = flag.String("odir", "", "output directory for bindings")
|
|
//pkg = flag.String("pkg", "", "package name of the bindings")
|
|
|
|
usage = `gopy-gen generates Python language bindings for Go.
|
|
|
|
Usage:
|
|
|
|
$ gopy-gen [options] <go-package-name>
|
|
|
|
|
|
For usage details, see godoc:
|
|
|
|
$ godoc github.com/go-python/gopy-gen
|
|
`
|
|
)
|
|
|
|
func errorf(format string, args ...interface{}) (int, error) {
|
|
return fmt.Fprintf(os.Stderr, format, args...)
|
|
}
|
|
|
|
func main() {
|
|
var err error
|
|
|
|
flag.Usage = func() {
|
|
fmt.Fprintf(os.Stderr, usage)
|
|
flag.PrintDefaults()
|
|
}
|
|
|
|
flag.Parse()
|
|
|
|
if flag.NArg() != 1 {
|
|
log.Printf("expect a fully qualified go package name as argument\n")
|
|
flag.Usage()
|
|
os.Exit(1)
|
|
}
|
|
|
|
cwd, err := os.Getwd()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
if *odir == "" {
|
|
*odir = cwd
|
|
} else {
|
|
err = os.MkdirAll(*odir, 0755)
|
|
if err != nil {
|
|
log.Printf("could not create output directory: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
*odir, err = filepath.Abs(*odir)
|
|
if err != nil {
|
|
log.Printf("could not infer absolute path to output directory: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
path := flag.Arg(0)
|
|
pkg, err := build.Import(path, cwd, 0)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "%s: %v\n", path, err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
err = genPkg(*odir, pkg)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
os.Exit(0)
|
|
}
|