Skip to content

Commit 1c63947

Browse files
author
romnnn
committed
[FIX] Log fatal errors and migrate to urfave/cli
Errors are properly logged to stderr and github.com/codegangsta/cli was replaced by github.com/urfave/cli. This includes the open pull request at lukasmartinelli#67
1 parent 3cc9f2f commit 1c63947

File tree

1 file changed

+36
-39
lines changed

1 file changed

+36
-39
lines changed

pgfutter.go

Lines changed: 36 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,12 @@ import (
66
"path/filepath"
77
"strings"
88

9-
"github.com/codegangsta/cli"
9+
"github.com/urfave/cli"
1010
)
1111

12-
func exitOnError(err error) {
13-
log.SetFlags(0)
14-
if err != nil {
15-
log.Fatalln(err)
16-
}
17-
}
18-
1912
//Parse table to copy to from given filename or passed flags
2013
func parseTableName(c *cli.Context, filename string) string {
21-
tableName := c.GlobalString("table")
14+
tableName := c.String("table")
2215
if tableName == "" {
2316
if filename == "" {
2417
// if no filename is not set, we reading stdin
@@ -33,7 +26,7 @@ func parseTableName(c *cli.Context, filename string) string {
3326

3427
func getDataType(c *cli.Context) string {
3528
dataType := "json"
36-
if c.GlobalBool("jsonb") {
29+
if c.Bool("jsonb") {
3730
dataType = "jsonb"
3831
}
3932

@@ -46,62 +39,62 @@ func main() {
4639
app.Version = "1.2"
4740
app.Usage = "Import JSON and CSV into PostgreSQL the easy way"
4841
app.Flags = []cli.Flag{
49-
cli.StringFlag{
42+
&cli.StringFlag{
5043
Name: "dbname, db",
5144
Value: "postgres",
5245
Usage: "database to connect to",
53-
EnvVar: "DB_NAME",
46+
EnvVars: []string{"DB_NAME"},
5447
},
55-
cli.StringFlag{
48+
&cli.StringFlag{
5649
Name: "host",
5750
Value: "localhost",
5851
Usage: "host name",
59-
EnvVar: "DB_HOST",
52+
EnvVars: []string{"DB_HOST"},
6053
},
61-
cli.StringFlag{
54+
&cli.StringFlag{
6255
Name: "port",
6356
Value: "5432",
6457
Usage: "port",
65-
EnvVar: "DB_PORT",
58+
EnvVars: []string{"DB_PORT"},
6659
},
67-
cli.StringFlag{
60+
&cli.StringFlag{
6861
Name: "username, user",
6962
Value: "postgres",
7063
Usage: "username",
71-
EnvVar: "DB_USER",
64+
EnvVars: []string{"DB_USER"},
7265
},
73-
cli.BoolFlag{
66+
&cli.BoolFlag{
7467
Name: "ssl",
7568
Usage: "require ssl mode",
7669
},
77-
cli.StringFlag{
70+
&cli.StringFlag{
7871
Name: "pass, pw",
7972
Value: "",
8073
Usage: "password",
81-
EnvVar: "DB_PASS",
74+
EnvVars: []string{"DB_PASS"},
8275
},
83-
cli.StringFlag{
76+
&cli.StringFlag{
8477
Name: "schema",
8578
Value: "import",
8679
Usage: "database schema",
87-
EnvVar: "DB_SCHEMA",
80+
EnvVars: []string{"DB_SCHEMA"},
8881
},
89-
cli.StringFlag{
82+
&cli.StringFlag{
9083
Name: "table",
9184
Usage: "destination table",
92-
EnvVar: "DB_TABLE",
85+
EnvVars: []string{"DB_TABLE"},
9386
},
94-
cli.BoolFlag{
87+
&cli.BoolFlag{
9588
Name: "jsonb",
9689
Usage: "use JSONB data type",
9790
},
98-
cli.BoolFlag{
91+
&cli.BoolFlag{
9992
Name: "ignore-errors",
10093
Usage: "halt transaction on inconsistencies",
10194
},
10295
}
10396

104-
app.Commands = []cli.Command{
97+
app.Commands = []*cli.Command{
10598
{
10699
Name: "json",
107100
Usage: "Import newline-delimited JSON objects into database",
@@ -110,8 +103,8 @@ func main() {
110103

111104
filename := c.Args().First()
112105

113-
ignoreErrors := c.GlobalBool("ignore-errors")
114-
schema := c.GlobalString("schema")
106+
ignoreErrors := c.Bool("ignore-errors")
107+
schema := c.String("schema")
115108
tableName := parseTableName(c, filename)
116109
dataType := getDataType(c)
117110

@@ -124,29 +117,29 @@ func main() {
124117
Name: "csv",
125118
Usage: "Import CSV into database",
126119
Flags: []cli.Flag{
127-
cli.BoolFlag{
120+
&cli.BoolFlag{
128121
Name: "excel",
129122
Usage: "support problematic Excel 2008 and Excel 2011 csv line endings",
130123
},
131-
cli.BoolFlag{
124+
&cli.BoolFlag{
132125
Name: "skip-header",
133126
Usage: "skip header row",
134127
},
135-
cli.StringFlag{
128+
&cli.StringFlag{
136129
Name: "fields",
137130
Usage: "comma separated field names if no header row",
138131
},
139-
cli.StringFlag{
132+
&cli.StringFlag{
140133
Name: "delimiter, d",
141134
Value: ",",
142135
Usage: "field delimiter",
143136
},
144-
cli.StringFlag{
137+
&cli.StringFlag{
145138
Name: "null-delimiter, nd",
146139
Value: "\\N",
147140
Usage: "null delimiter",
148141
},
149-
cli.BoolFlag{
142+
&cli.BoolFlag{
150143
Name: "skip-parse-delimiter",
151144
Usage: "skip parsing escape sequences in the given delimiter",
152145
},
@@ -156,8 +149,8 @@ func main() {
156149

157150
filename := c.Args().First()
158151

159-
ignoreErrors := c.GlobalBool("ignore-errors")
160-
schema := c.GlobalString("schema")
152+
ignoreErrors := c.Bool("ignore-errors")
153+
schema := c.String("schema")
161154
tableName := parseTableName(c, filename)
162155

163156
skipHeader := c.Bool("skip-header")
@@ -173,5 +166,9 @@ func main() {
173166
},
174167
}
175168

176-
app.Run(os.Args)
169+
err := app.Run(os.Args)
170+
if err != nil {
171+
log.SetFlags(0)
172+
log.Fatal(err)
173+
}
177174
}

0 commit comments

Comments
 (0)