Skip to content

Commit c63d25f

Browse files
bradrydzewskijmccann
authored andcommitted
custom license from file
1 parent 486fb58 commit c63d25f

File tree

2 files changed

+38
-21
lines changed

2 files changed

+38
-21
lines changed

main.go

+36-14
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"bytes"
2121
"flag"
2222
"fmt"
23+
"html/template"
2324
"io/ioutil"
2425
"log"
2526
"os"
@@ -44,9 +45,10 @@ Flags:
4445
`
4546

4647
var (
47-
holder = flag.String("c", "Google LLC", "copyright holder")
48-
license = flag.String("l", "apache", "license type: apache, bsd, mit")
49-
year = flag.Int("y", time.Now().Year(), "year")
48+
holder = flag.String("c", "Google LLC", "copyright holder")
49+
license = flag.String("l", "apache", "license type: apache, bsd, mit")
50+
licensef = flag.String("f", "", "license file")
51+
year = flag.Int("y", time.Now().Year(), "year")
5052
)
5153

5254
func main() {
@@ -65,6 +67,26 @@ func main() {
6567
Holder: *holder,
6668
}
6769

70+
var t *template.Template
71+
if *licensef != "" {
72+
d, err := ioutil.ReadFile(*licensef)
73+
if err != nil {
74+
log.Printf("template error: %s", err)
75+
os.Exit(1)
76+
}
77+
t, err = template.New("").Parse(string(d))
78+
if err != nil {
79+
log.Printf("template error: %s", err)
80+
os.Exit(1)
81+
}
82+
} else {
83+
t = licenseTemplate[*license]
84+
if t == nil {
85+
log.Printf("unknown license: %s", *license)
86+
os.Exit(1)
87+
}
88+
}
89+
6890
// process at most 1000 files in parallel
6991
ch := make(chan *file, 1000)
7092
done := make(chan struct{})
@@ -73,7 +95,7 @@ func main() {
7395
for f := range ch {
7496
wg.Add(1)
7597
go func(f *file) {
76-
err := addLicense(f.path, f.mode, *license, data)
98+
err := addLicense(f.path, f.mode, t, data)
7799
if err != nil {
78100
log.Printf("%s: %v", f.path, err)
79101
}
@@ -110,30 +132,30 @@ func walk(ch chan<- *file, start string) {
110132
})
111133
}
112134

113-
func addLicense(path string, fmode os.FileMode, typ string, data *copyrightData) error {
135+
func addLicense(path string, fmode os.FileMode, tmpl *template.Template, data *copyrightData) error {
114136
var lic []byte
115137
var err error
116138
switch filepath.Ext(path) {
117139
default:
118140
return nil
119141
case ".c", ".h":
120-
lic, err = prefix(typ, data, "/*", " * ", " */")
142+
lic, err = prefix(tmpl, data, "/*", " * ", " */")
121143
case ".js", ".jsx", ".tsx", ".css", ".tf":
122-
lic, err = prefix(typ, data, "/**", " * ", " */")
144+
lic, err = prefix(tmpl, data, "/**", " * ", " */")
123145
case ".cc", ".cpp", ".cs", ".go", ".hh", ".hpp", ".java", ".m", ".mm", ".proto", ".rs", ".scala", ".swift", ".dart":
124-
lic, err = prefix(typ, data, "", "// ", "")
146+
lic, err = prefix(tmpl, data, "", "// ", "")
125147
case ".py", ".sh", ".yaml", ".yml":
126-
lic, err = prefix(typ, data, "", "# ", "")
148+
lic, err = prefix(tmpl, data, "", "# ", "")
127149
case ".el", ".lisp":
128-
lic, err = prefix(typ, data, "", ";; ", "")
150+
lic, err = prefix(tmpl, data, "", ";; ", "")
129151
case ".erl":
130-
lic, err = prefix(typ, data, "", "% ", "")
152+
lic, err = prefix(tmpl, data, "", "% ", "")
131153
case ".hs", ".sql":
132-
lic, err = prefix(typ, data, "", "-- ", "")
154+
lic, err = prefix(tmpl, data, "", "-- ", "")
133155
case ".html", ".xml":
134-
lic, err = prefix(typ, data, "<!--", " ", "-->")
156+
lic, err = prefix(tmpl, data, "<!--", " ", "-->")
135157
case ".php":
136-
lic, err = prefix(typ, data, "<?php", "// ", "?>")
158+
lic, err = prefix(tmpl, data, "<?php", "// ", "?>")
137159
}
138160
if err != nil || lic == nil {
139161
return err

tmpl.go

+2-7
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,9 @@ type copyrightData struct {
3636
Holder string
3737
}
3838

39-
// prefix will execute a license template l with data d
39+
// prefix will execute a license template t with data d
4040
// and prefix the result with top, middle and bottom.
41-
func prefix(l string, d *copyrightData, top, mid, bot string) ([]byte, error) {
42-
t := licenseTemplate[l]
43-
if t == nil {
44-
return nil, fmt.Errorf("unknown license: %s", l)
45-
}
46-
41+
func prefix(t *template.Template, d *copyrightData, top, mid, bot string) ([]byte, error) {
4742
var buf bytes.Buffer
4843
if err := t.Execute(&buf, d); err != nil {
4944
return nil, err

0 commit comments

Comments
 (0)