@@ -8,14 +8,15 @@ import (
8
8
"path/filepath"
9
9
"strings"
10
10
11
+ "github.com/gomatic/renderizer/pkg/renderizer"
11
12
"github.com/imdario/mergo"
12
13
"github.com/kardianos/osext"
13
14
"github.com/urfave/cli"
14
15
"gopkg.in/yaml.v2"
15
16
)
16
17
17
18
var (
18
- version = "2.0.4 "
19
+ version = "2.0.5 "
19
20
commit = "unknown"
20
21
date = "20060102T150405"
21
22
selfn , _ = osext .Executable ()
@@ -26,42 +27,25 @@ var (
26
27
27
28
//
28
29
type Settings struct {
29
- // Capitalization is a positional toggles. The following variable names are capitalized (title-case).
30
- Capitalize bool
31
- // Set the Missing Key template option. Defaults to "error".
32
- MissingKey string
30
+ Defaulted bool
33
31
// Configuration yaml
34
32
ConfigFiles cli.StringSlice
35
- Defaulted bool
36
- Config map [string ]interface {}
37
33
//
38
- Arguments []string
39
- //
40
- Templates []string
41
- // Add the environment map to the variables.
42
- Environment string
43
- //
44
- OutputExtension string
45
- //
46
- TimeFormat string
47
- //
48
- Stdin bool
49
- //
50
- Debugging bool
51
- //
52
- Verbose bool
34
+ Options renderizer.Options
53
35
}
54
36
55
37
//
56
38
var settings = Settings {
57
- Capitalize : true ,
58
- MissingKey : "error" ,
59
- TimeFormat : "20060102T150405" ,
60
- Environment : "env" ,
61
- Config : map [string ]interface {}{},
62
39
ConfigFiles : []string {},
63
- Arguments : []string {},
64
- Templates : []string {},
40
+ Options : renderizer.Options {
41
+ Config : map [string ]interface {}{},
42
+ Capitalize : true ,
43
+ MissingKey : "error" ,
44
+ TimeFormat : "20060102T150405" ,
45
+ Environment : "env" ,
46
+ Arguments : []string {},
47
+ Templates : []string {},
48
+ },
65
49
}
66
50
67
51
//
@@ -73,6 +57,8 @@ func main() {
73
57
app .Version = appver
74
58
app .EnableBashCompletion = true
75
59
60
+ os .Setenv ("RENDERIZER_VERSION" , appver )
61
+
76
62
configs := cli.StringSlice {}
77
63
78
64
app .Commands = []cli.Command {
@@ -98,56 +84,69 @@ func main() {
98
84
Usage : "the 'missingkey' template option (default|zero|error)" ,
99
85
Value : "error" ,
100
86
EnvVar : "RENDERIZER_MISSINGKEY" ,
101
- Destination : & settings .MissingKey ,
87
+ Destination : & settings .Options . MissingKey ,
102
88
},
103
89
cli.StringFlag {
104
- Name : "environment, env, E, e" ,
105
- Usage : "load the environment into the variable name instead of as 'env'" ,
106
- Value : settings .Environment ,
107
- EnvVar : "RENDERIZER_ENVIRONMENT" ,
90
+ Name : "environment, env, E, e" ,
91
+ Usage : "load the environment into the variable name instead of as 'env'" ,
92
+ Value : settings .Options .Environment ,
93
+ EnvVar : "RENDERIZER_ENVIRONMENT" ,
94
+ Destination : & settings .Options .Environment ,
108
95
},
109
96
cli.BoolFlag {
110
97
Name : "stdin, c" ,
111
98
Usage : "read from stdin" ,
112
- Destination : & settings .Stdin ,
99
+ Destination : & settings .Options .Stdin ,
100
+ },
101
+ cli.BoolFlag {
102
+ Name : "testing, T" ,
103
+ Usage : "configure runtime to provide consistent output" ,
104
+ EnvVar : "RENDERIZER_TESTING" ,
105
+ Destination : & settings .Options .Testing ,
113
106
},
114
107
cli.BoolFlag {
115
108
Name : "debugging, debug, D" ,
116
109
Usage : "enable debugging server" ,
117
- Destination : & settings .Debugging ,
110
+ EnvVar : "RENDERIZER_DEBUG" ,
111
+ Destination : & settings .Options .Debugging ,
118
112
},
119
113
cli.BoolFlag {
120
114
Name : "verbose, V" ,
121
115
Usage : "enable verbose output" ,
122
- Destination : & settings .Verbose ,
116
+ EnvVar : "RENDERIZER_VEBOSE" ,
117
+ Destination : & settings .Options .Verbose ,
123
118
},
124
119
}
125
120
126
121
app .Before = func (ctx * cli.Context ) error {
127
122
128
123
fi , _ := os .Stdin .Stat ()
129
124
130
- settings .Stdin = settings .Stdin || (fi .Mode ()& os .ModeCharDevice ) == 0
125
+ settings .Options . Stdin = settings . Options .Stdin || (fi .Mode ()& os .ModeCharDevice ) == 0
131
126
132
- settings .Arguments = append (settings .Arguments , ctx .Args ()... )
127
+ settings .Options . Arguments = append (settings . Options .Arguments , ctx .Args ()... )
133
128
134
- if len (settings .Templates ) == 0 && ! settings .Stdin {
129
+ mainName := ""
130
+ folderName , err := os .Getwd ()
131
+ bases := []string {"renderizer" }
132
+ if err != nil {
133
+ log .Println (err )
134
+ mainName = "renderizer"
135
+ } else {
136
+ mainName = filepath .Base (folderName )
137
+ bases = []string {mainName , "renderizer" }
138
+ }
139
+
140
+ if len (settings .Options .Templates ) == 0 && ! settings .Options .Stdin {
135
141
// Try default the template name
136
- folderName , err := os .Getwd ()
137
- if err != nil {
138
- log .Println (err )
139
- folderName = "renderizer"
140
- } else {
141
- folderName = filepath .Base (folderName )
142
- }
143
142
144
143
name := func () string {
145
- for _ , base := range [] string { folderName , "renderizer" } {
144
+ for _ , base := range bases {
146
145
for _ , ext := range []string {".tmpl" , "" } {
147
146
for _ , try := range []string {"yaml" , "json" , "html" , "txt" , "xml" , "" } {
148
147
name := fmt .Sprintf ("%s.%s%s" , base , try , ext )
149
148
if _ , err := os .Stat (name ); err == nil {
150
- if settings .Verbose {
149
+ if settings .Options . Verbose {
151
150
log .Printf ("using template: %+v" , name )
152
151
}
153
152
return name
@@ -158,21 +157,21 @@ func main() {
158
157
return ""
159
158
}()
160
159
if name != "" {
161
- settings .Templates = append (settings .Templates , name )
160
+ settings .Options . Templates = append (settings . Options .Templates , name )
162
161
}
163
- }
164
162
165
- if len (settings .Templates ) == 0 {
166
- return cli .NewExitError ("missing template name" , 1 )
167
- }
163
+ if len (settings . Options .Templates ) == 0 {
164
+ return cli .NewExitError ("missing template name" , 1 )
165
+ }
168
166
169
- mainName := strings .Split (strings .TrimLeft (filepath .Base (settings .Templates [0 ]), "." ), "." )[0 ]
167
+ mainName = strings .Split (strings .TrimLeft (filepath .Base (settings .Options .Templates [0 ]), "." ), "." )[0 ]
168
+ }
170
169
171
- switch settings .MissingKey {
170
+ switch settings .Options . MissingKey {
172
171
case "zero" , "error" , "default" , "invalid" :
173
172
default :
174
- fmt .Fprintf (os .Stderr , "ERROR: Resetting invalid missingkey: %+v" , settings .MissingKey )
175
- settings .MissingKey = "error"
173
+ fmt .Fprintf (os .Stderr , "ERROR: Resetting invalid missingkey: %+v" , settings .Options . MissingKey )
174
+ settings .Options . MissingKey = "error"
176
175
}
177
176
178
177
if len (configs ) == 0 {
@@ -194,22 +193,22 @@ func main() {
194
193
if err != nil {
195
194
return err
196
195
}
197
- if settings .Debugging || settings .Verbose {
196
+ if settings .Options . Debugging || settings . Options .Verbose {
198
197
log .Printf ("using settings: %+v" , settings .ConfigFiles )
199
198
}
200
- loaded = retyper (loaded )
201
- if settings .Debugging {
199
+ loaded = settings . Options . Retyper (loaded )
200
+ if settings .Options . Debugging {
202
201
log .Printf ("loaded: %s = %#v" , config , loaded )
203
- } else if settings .Verbose {
202
+ } else if settings .Options . Verbose {
204
203
log .Printf ("loaded: %s = %+v" , config , loaded )
205
204
}
206
- mergo .Merge (& settings .Config , loaded )
205
+ mergo .Merge (& settings .Options . Config , loaded )
207
206
}
208
207
}
209
208
210
- if settings .Debugging {
209
+ if settings .Options . Debugging {
211
210
log .Printf ("--settings:%#v" , settings )
212
- } else if settings .Verbose {
211
+ } else if settings .Options . Verbose {
213
212
log .Printf ("--settings:%+v" , settings )
214
213
}
215
214
@@ -241,7 +240,7 @@ func main() {
241
240
next = true
242
241
}
243
242
fallthrough
244
- case "debug" , "verbose" , "version" , "stdin" , "help" :
243
+ case "debug" , "verbose" , "testing" , " version" , "stdin" , "help" :
245
244
args = append (args , arg )
246
245
continue
247
246
}
@@ -258,14 +257,17 @@ func main() {
258
257
continue
259
258
}
260
259
} else {
261
- settings .Templates = append (settings .Templates , arg )
260
+ settings .Options . Templates = append (settings . Options .Templates , arg )
262
261
continue
263
262
}
264
263
265
- settings .Arguments = append (settings .Arguments , arg )
264
+ settings .Options . Arguments = append (settings . Options .Arguments , arg )
266
265
}
267
266
}
268
267
269
- app .Action = renderizer
268
+ app .Action = func (_ * cli.Context ) error {
269
+ return renderizer .Render (settings .Options )
270
+ }
271
+
270
272
app .Run (args )
271
273
}
0 commit comments