@@ -6,19 +6,12 @@ import (
6
6
"path/filepath"
7
7
"strings"
8
8
9
- "github.com/codegangsta /cli"
9
+ "github.com/urfave /cli"
10
10
)
11
11
12
- func exitOnError (err error ) {
13
- log .SetFlags (0 )
14
- if err != nil {
15
- log .Fatalln (err )
16
- }
17
- }
18
-
19
12
//Parse table to copy to from given filename or passed flags
20
13
func parseTableName (c * cli.Context , filename string ) string {
21
- tableName := c .GlobalString ("table" )
14
+ tableName := c .String ("table" )
22
15
if tableName == "" {
23
16
if filename == "" {
24
17
// if no filename is not set, we reading stdin
@@ -33,7 +26,7 @@ func parseTableName(c *cli.Context, filename string) string {
33
26
34
27
func getDataType (c * cli.Context ) string {
35
28
dataType := "json"
36
- if c .GlobalBool ("jsonb" ) {
29
+ if c .Bool ("jsonb" ) {
37
30
dataType = "jsonb"
38
31
}
39
32
@@ -46,62 +39,62 @@ func main() {
46
39
app .Version = "1.2"
47
40
app .Usage = "Import JSON and CSV into PostgreSQL the easy way"
48
41
app .Flags = []cli.Flag {
49
- cli.StringFlag {
42
+ & cli.StringFlag {
50
43
Name : "dbname, db" ,
51
44
Value : "postgres" ,
52
45
Usage : "database to connect to" ,
53
- EnvVar : "DB_NAME" ,
46
+ EnvVars : [] string { "DB_NAME" } ,
54
47
},
55
- cli.StringFlag {
48
+ & cli.StringFlag {
56
49
Name : "host" ,
57
50
Value : "localhost" ,
58
51
Usage : "host name" ,
59
- EnvVar : "DB_HOST" ,
52
+ EnvVars : [] string { "DB_HOST" } ,
60
53
},
61
- cli.StringFlag {
54
+ & cli.StringFlag {
62
55
Name : "port" ,
63
56
Value : "5432" ,
64
57
Usage : "port" ,
65
- EnvVar : "DB_PORT" ,
58
+ EnvVars : [] string { "DB_PORT" } ,
66
59
},
67
- cli.StringFlag {
60
+ & cli.StringFlag {
68
61
Name : "username, user" ,
69
62
Value : "postgres" ,
70
63
Usage : "username" ,
71
- EnvVar : "DB_USER" ,
64
+ EnvVars : [] string { "DB_USER" } ,
72
65
},
73
- cli.BoolFlag {
66
+ & cli.BoolFlag {
74
67
Name : "ssl" ,
75
68
Usage : "require ssl mode" ,
76
69
},
77
- cli.StringFlag {
70
+ & cli.StringFlag {
78
71
Name : "pass, pw" ,
79
72
Value : "" ,
80
73
Usage : "password" ,
81
- EnvVar : "DB_PASS" ,
74
+ EnvVars : [] string { "DB_PASS" } ,
82
75
},
83
- cli.StringFlag {
76
+ & cli.StringFlag {
84
77
Name : "schema" ,
85
78
Value : "import" ,
86
79
Usage : "database schema" ,
87
- EnvVar : "DB_SCHEMA" ,
80
+ EnvVars : [] string { "DB_SCHEMA" } ,
88
81
},
89
- cli.StringFlag {
82
+ & cli.StringFlag {
90
83
Name : "table" ,
91
84
Usage : "destination table" ,
92
- EnvVar : "DB_TABLE" ,
85
+ EnvVars : [] string { "DB_TABLE" } ,
93
86
},
94
- cli.BoolFlag {
87
+ & cli.BoolFlag {
95
88
Name : "jsonb" ,
96
89
Usage : "use JSONB data type" ,
97
90
},
98
- cli.BoolFlag {
91
+ & cli.BoolFlag {
99
92
Name : "ignore-errors" ,
100
93
Usage : "halt transaction on inconsistencies" ,
101
94
},
102
95
}
103
96
104
- app .Commands = []cli.Command {
97
+ app .Commands = []* cli.Command {
105
98
{
106
99
Name : "json" ,
107
100
Usage : "Import newline-delimited JSON objects into database" ,
@@ -110,8 +103,8 @@ func main() {
110
103
111
104
filename := c .Args ().First ()
112
105
113
- ignoreErrors := c .GlobalBool ("ignore-errors" )
114
- schema := c .GlobalString ("schema" )
106
+ ignoreErrors := c .Bool ("ignore-errors" )
107
+ schema := c .String ("schema" )
115
108
tableName := parseTableName (c , filename )
116
109
dataType := getDataType (c )
117
110
@@ -124,29 +117,29 @@ func main() {
124
117
Name : "csv" ,
125
118
Usage : "Import CSV into database" ,
126
119
Flags : []cli.Flag {
127
- cli.BoolFlag {
120
+ & cli.BoolFlag {
128
121
Name : "excel" ,
129
122
Usage : "support problematic Excel 2008 and Excel 2011 csv line endings" ,
130
123
},
131
- cli.BoolFlag {
124
+ & cli.BoolFlag {
132
125
Name : "skip-header" ,
133
126
Usage : "skip header row" ,
134
127
},
135
- cli.StringFlag {
128
+ & cli.StringFlag {
136
129
Name : "fields" ,
137
130
Usage : "comma separated field names if no header row" ,
138
131
},
139
- cli.StringFlag {
132
+ & cli.StringFlag {
140
133
Name : "delimiter, d" ,
141
134
Value : "," ,
142
135
Usage : "field delimiter" ,
143
136
},
144
- cli.StringFlag {
137
+ & cli.StringFlag {
145
138
Name : "null-delimiter, nd" ,
146
139
Value : "\\ N" ,
147
140
Usage : "null delimiter" ,
148
141
},
149
- cli.BoolFlag {
142
+ & cli.BoolFlag {
150
143
Name : "skip-parse-delimiter" ,
151
144
Usage : "skip parsing escape sequences in the given delimiter" ,
152
145
},
@@ -156,8 +149,8 @@ func main() {
156
149
157
150
filename := c .Args ().First ()
158
151
159
- ignoreErrors := c .GlobalBool ("ignore-errors" )
160
- schema := c .GlobalString ("schema" )
152
+ ignoreErrors := c .Bool ("ignore-errors" )
153
+ schema := c .String ("schema" )
161
154
tableName := parseTableName (c , filename )
162
155
163
156
skipHeader := c .Bool ("skip-header" )
@@ -173,5 +166,9 @@ func main() {
173
166
},
174
167
}
175
168
176
- app .Run (os .Args )
169
+ err := app .Run (os .Args )
170
+ if err != nil {
171
+ log .SetFlags (0 )
172
+ log .Fatal (err )
173
+ }
177
174
}
0 commit comments