"flag"
"fmt"
"io"
- "log"
+ "io/ioutil"
"net/http"
_ "net/http/pprof"
"os"
"git.arvados.org/arvados.git/sdk/go/arvados"
"github.com/kshedden/gonpy"
+ log "github.com/sirupsen/logrus"
)
-type exportNumpy struct {
- output io.Writer
-}
+type exportNumpy struct{}
func (cmd *exportNumpy) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
var err error
pprof := flags.String("pprof", "", "serve Go profile data at http://`[addr]:port`")
runlocal := flags.Bool("local", false, "run on local host (default: run in an arvados container)")
projectUUID := flags.String("project", "", "project `UUID` for output data")
- inputFilename := flags.String("i", "", "input `file`")
- outputFilename := flags.String("o", "", "output `file`")
+ inputFilename := flags.String("i", "-", "input `file`")
+ outputFilename := flags.String("o", "-", "output `file`")
err = flags.Parse(args)
if err == flag.ErrHelp {
err = nil
} else if err != nil {
return 2
}
- cmd.output = stdout
if *pprof != "" {
go func() {
}
if !*runlocal {
- if *outputFilename != "" {
+ if *outputFilename != "-" {
err = errors.New("cannot specify output file in container mode: not implemented")
return 1
}
return 1
}
runner.Args = []string{"export-numpy", "-local=true", "-i", *inputFilename, "-o", "/mnt/output/library.npy"}
- err = runner.Run()
+ var output string
+ output, err = runner.Run()
if err != nil {
return 1
}
+ fmt.Fprintln(stdout, output+"/library.npy")
return 0
}
- cgs, err := ReadCompactGenomes(stdin)
+ var input io.ReadCloser
+ if *inputFilename == "-" {
+ input = ioutil.NopCloser(stdin)
+ } else {
+ input, err = os.Open(*inputFilename)
+ if err != nil {
+ return 1
+ }
+ defer input.Close()
+ }
+ cgs, err := ReadCompactGenomes(input)
+ if err != nil {
+ return 1
+ }
+ err = input.Close()
if err != nil {
return 1
}
}
var output io.WriteCloser
- if *outputFilename == "" {
- output = nopCloser{cmd.output}
+ if *outputFilename == "-" {
+ output = nopCloser{stdout}
} else {
output, err = os.OpenFile(*outputFilename, os.O_CREATE|os.O_WRONLY, 0777)
if err != nil {