Skip to content

Commit

Permalink
Fix #20 and #28
Browse files Browse the repository at this point in the history
  • Loading branch information
lucapette committed Jun 3, 2017
1 parent 9eb9019 commit f266fa5
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 19 deletions.
5 changes: 5 additions & 0 deletions integration/cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,11 @@ func TestCliArgs(t *testing.T) {
args: []string{"-f=sql", "-t=USERS", "int,42..42", "enum,foo..foo"},
fixture: "sql-format-with-table-name.golden",
},
{
name: "unknown format",
args: []string{"-f=sqll", "-t=USERS", "int,42..42", "enum,foo..foo"},
fixture: "unknown-format.golden",
},
}

for _, tt := range tests {
Expand Down
9 changes: 9 additions & 0 deletions integration/unknown-format.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
unknown format: sqll

Usage: fakedata [option ...] field...

-f, --format string generators rows in f format. Available formats: csv|tab|sql
-g, --generators lists available generators
-l, --limit int limits rows up to n (default 10)
-t, --table string table name of the sql format (default "TABLE")
-v, --version shows version information
44 changes: 25 additions & 19 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,20 @@ import (

var version = "master"

var generatorsFlag = flag.BoolP("generators", "g", false, "lists available generators")
var limitFlag = flag.IntP("limit", "l", 10, "limits rows up to n")
var formatFlag = flag.StringP("format", "f", "", "generators rows in f format. Available formats: csv|tab|sql")
var versionFlag = flag.BoolP("version", "v", false, "shows version information")
var tableFlag = flag.StringP("table", "t", "TABLE", "table name of the sql format")

func getFormatter(format string) (f fakedata.Formatter) {
func getFormatter(format, table string) (f fakedata.Formatter, err error) {
switch format {
case "csv":
f = fakedata.NewSeparatorFormatter(",")
case "tab":
f = fakedata.NewSeparatorFormatter("\t")
case "sql":
f = fakedata.NewSQLFormatter(*tableFlag)
default:
f = fakedata.NewSQLFormatter(table)
case "":
f = fakedata.NewSeparatorFormatter(" ")
default:
err = fmt.Errorf("unknown format: %s", format)
}
return f
return f, err
}

func generatorsHelp() string {
Expand All @@ -54,6 +50,19 @@ func generatorsHelp() string {
}

func main() {
var (
generatorsFlag = flag.BoolP("generators", "g", false, "lists available generators")
limitFlag = flag.IntP("limit", "l", 10, "limits rows up to n")
formatFlag = flag.StringP("format", "f", "", "generators rows in f format. Available formats: csv|tab|sql")
versionFlag = flag.BoolP("version", "v", false, "shows version information")
tableFlag = flag.StringP("table", "t", "TABLE", "table name of the sql format")
)
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: fakedata [option ...] field...\n\n")
flag.PrintDefaults()
}
flag.Parse()

if *versionFlag {
fmt.Println(version)
os.Exit(0)
Expand All @@ -77,17 +86,14 @@ func main() {
os.Exit(0)
}

formatter := getFormatter(*formatFlag)
formatter, err := getFormatter(*formatFlag, *tableFlag)
if err != nil {
fmt.Printf("%v\n\n", err)
flag.Usage()
os.Exit(0)
}

for i := 0; i < *limitFlag; i++ {
fmt.Print(fakedata.GenerateRow(columns, formatter))
}
}

func init() {
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: fakedata [option ...] field...\n\n")
flag.PrintDefaults()
}
flag.Parse()
}

0 comments on commit f266fa5

Please sign in to comment.