Skip to content

Commit

Permalink
added -out flag (and renamed -in flag)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mat Ryer authored and Mat Ryer committed Oct 30, 2014
1 parent 69ab8ab commit 183508d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
2 changes: 1 addition & 1 deletion examples/go-generate/go-generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package gogenerate

import "github.com/metabition/genny/generic"

//go:generate genny gen -f=$GOFILE "KeyType=string,int ValueType=string,int"
//go:generate genny -in=$GOFILE -out=gen-$GOFILE gen "KeyType=string,int ValueType=string,int"

type KeyType generic.Type
type ValueType generic.Type
Expand Down
28 changes: 21 additions & 7 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

/*
source | genny gen "KeyType=string,int ValueType=string,int"
source | genny gen [-in=""] [-out=""] "KeyType=string,int ValueType=string,int"
*/

Expand All @@ -24,11 +24,13 @@ const (
exitcodeStdinFailed = 3
exitcodeGenFailed = 4
exitcodeSourceFileInvalid = 5
exitcodeDestFileFailed = 6
)

func main() {
var (
filename = flag.String("f", "", "file to parse instead of stdin")
in = flag.String("in", "", "file to parse instead of stdin")
out = flag.String("out", "", "file to save output to instead of stdout")
)
flag.Parse()
args := flag.Args()
Expand All @@ -48,20 +50,32 @@ func main() {
fatal(exitcodeInvalidTypeSet, err)
}

if len(*filename) > 0 {
file, err := os.Open(*filename)
var outWriter io.Writer
if len(*out) > 0 {
outFile, err := os.Create(*out)
if err != nil {
fatal(exitcodeDestFileFailed, err)
}
defer outFile.Close()
outWriter = outFile
} else {
outWriter = os.Stdout
}

if len(*in) > 0 {
file, err := os.Open(*in)
if err != nil {
fatal(exitcodeSourceFileInvalid, err)
}
defer file.Close()
err = gen(*filename, file, typeSets, os.Stdout)
err = gen(*in, file, typeSets, outWriter)
} else {
source, err := ioutil.ReadAll(os.Stdin)
if err != nil {
fatal(exitcodeStdinFailed, err)
}
reader := bytes.NewReader(source)
err = gen("stdin", reader, typeSets, os.Stdout)
err = gen("stdin", reader, typeSets, outWriter)
}

// do the work
Expand All @@ -74,7 +88,7 @@ func main() {
func usage() {
fmt.Fprintln(os.Stderr, `usage: genny gen "{types}"
gen - generates type specific code (to stdout) from generic code (via stdin) or the file specified with the -f flag.
gen - generates type specific code from generic code.
{types} - (required) Specific types for each generic type in the source
{types} format: {generic}={specific}[,another][ {generic2}={specific2}]
Expand Down

0 comments on commit 183508d

Please sign in to comment.