58
58
checkonly = flag .Bool ("check" , false , "check only mode: verify presence of license headers and exit with non-zero code if missing" )
59
59
)
60
60
61
+ func init () {
62
+ flag .Usage = func () {
63
+ fmt .Fprintln (os .Stderr , helpText )
64
+ flag .PrintDefaults ()
65
+ }
66
+ flag .Var (& skipExtensionFlags , "skip" , "To skip files to check/add the header file, for example: -skip rb -skip go" )
67
+ }
68
+
61
69
type skipExtensionFlag []string
62
70
63
71
func (i * skipExtensionFlag ) String () string {
@@ -70,40 +78,24 @@ func (i *skipExtensionFlag) Set(value string) error {
70
78
}
71
79
72
80
func main () {
73
- flag .Usage = func () {
74
- fmt .Fprintln (os .Stderr , helpText )
75
- flag .PrintDefaults ()
76
- }
77
- flag .Var (& skipExtensionFlags , "skip" , "To skip files to check/add the header file, for example: -skip rb -skip go" )
78
81
flag .Parse ()
79
82
if flag .NArg () == 0 {
80
83
flag .Usage ()
81
84
os .Exit (1 )
82
85
}
83
86
84
- data := & copyrightData {
87
+ data := licenseData {
85
88
Year : * year ,
86
89
Holder : * holder ,
87
90
}
88
91
89
- var t * template.Template
90
- if * licensef != "" {
91
- d , err := ioutil .ReadFile (* licensef )
92
- if err != nil {
93
- log .Printf ("license file: %v" , err )
94
- os .Exit (1 )
95
- }
96
- t , err = template .New ("" ).Parse (string (d ))
97
- if err != nil {
98
- log .Printf ("license file: %v" , err )
99
- os .Exit (1 )
100
- }
101
- } else {
102
- t = licenseTemplate [* license ]
103
- if t == nil {
104
- log .Printf ("unknown license: %s" , * license )
105
- os .Exit (1 )
106
- }
92
+ tpl , err := fetchTemplate (* license , * licensef )
93
+ if err != nil {
94
+ log .Fatal (err )
95
+ }
96
+ t , err := template .New ("" ).Parse (tpl )
97
+ if err != nil {
98
+ log .Fatal (err )
107
99
}
108
100
109
101
// process at most 1000 files in parallel
@@ -189,7 +181,7 @@ func walk(ch chan<- *file, start string) {
189
181
// addLicense add a license to the file if missing.
190
182
//
191
183
// It returns true if the file was updated.
192
- func addLicense (path string , fmode os.FileMode , tmpl * template.Template , data * copyrightData ) (bool , error ) {
184
+ func addLicense (path string , fmode os.FileMode , tmpl * template.Template , data licenseData ) (bool , error ) {
193
185
var lic []byte
194
186
var err error
195
187
lic , err = licenseHeader (path , tmpl , data )
@@ -227,32 +219,32 @@ func fileHasLicense(path string) (bool, error) {
227
219
return hasLicense (b ) || isGenerated (b ), nil
228
220
}
229
221
230
- func licenseHeader (path string , tmpl * template.Template , data * copyrightData ) ([]byte , error ) {
222
+ func licenseHeader (path string , tmpl * template.Template , data licenseData ) ([]byte , error ) {
231
223
var lic []byte
232
224
var err error
233
225
switch fileExtension (path ) {
234
226
default :
235
227
return nil , nil
236
228
case ".c" , ".h" , ".gv" :
237
- lic , err = prefix (tmpl , data , "/*" , " * " , " */" )
229
+ lic , err = executeTemplate (tmpl , data , "/*" , " * " , " */" )
238
230
case ".js" , ".mjs" , ".cjs" , ".jsx" , ".tsx" , ".css" , ".scss" , ".sass" , ".tf" , ".ts" :
239
- lic , err = prefix (tmpl , data , "/**" , " * " , " */" )
231
+ lic , err = executeTemplate (tmpl , data , "/**" , " * " , " */" )
240
232
case ".cc" , ".cpp" , ".cs" , ".go" , ".hh" , ".hpp" , ".java" , ".m" , ".mm" , ".proto" , ".rs" , ".scala" , ".swift" , ".dart" , ".groovy" , ".kt" , ".kts" , ".v" , ".sv" :
241
- lic , err = prefix (tmpl , data , "" , "// " , "" )
233
+ lic , err = executeTemplate (tmpl , data , "" , "// " , "" )
242
234
case ".py" , ".sh" , ".yaml" , ".yml" , ".dockerfile" , "dockerfile" , ".rb" , "gemfile" , ".tcl" , ".bzl" :
243
- lic , err = prefix (tmpl , data , "" , "# " , "" )
235
+ lic , err = executeTemplate (tmpl , data , "" , "# " , "" )
244
236
case ".el" , ".lisp" :
245
- lic , err = prefix (tmpl , data , "" , ";; " , "" )
237
+ lic , err = executeTemplate (tmpl , data , "" , ";; " , "" )
246
238
case ".erl" :
247
- lic , err = prefix (tmpl , data , "" , "% " , "" )
239
+ lic , err = executeTemplate (tmpl , data , "" , "% " , "" )
248
240
case ".hs" , ".sql" , ".sdl" :
249
- lic , err = prefix (tmpl , data , "" , "-- " , "" )
241
+ lic , err = executeTemplate (tmpl , data , "" , "-- " , "" )
250
242
case ".html" , ".xml" , ".vue" :
251
- lic , err = prefix (tmpl , data , "<!--" , " " , "-->" )
243
+ lic , err = executeTemplate (tmpl , data , "<!--" , " " , "-->" )
252
244
case ".php" :
253
- lic , err = prefix (tmpl , data , "" , "// " , "" )
245
+ lic , err = executeTemplate (tmpl , data , "" , "// " , "" )
254
246
case ".ml" , ".mli" , ".mll" , ".mly" :
255
- lic , err = prefix (tmpl , data , "(**" , " " , "*)" )
247
+ lic , err = executeTemplate (tmpl , data , "(**" , " " , "*)" )
256
248
}
257
249
return lic , err
258
250
}
0 commit comments