Merge pull request #15 from thefirstofthe300/master

Add support for more file types
This commit is contained in:
alex
2018-12-20 08:01:58 +01:00
committed by GitHub
42 changed files with 124 additions and 42 deletions

View File

@@ -13,10 +13,11 @@ to any file that already has one.
## usage ## usage
addlicense [flags] pattern [pattern ...] addlicense [flags] pattern [pattern ...]
-c copyright holder (default "Google LLC.") -c copyright holder (default "Google LLC.")
-f custom license file (no default)
-l license type: apache, bsd, mit (default "apache") -l license type: apache, bsd, mit (default "apache")
-y year (default 2016) -y year (default "2018")
The pattern argument can be provided multiple times, and may also refer The pattern argument can be provided multiple times, and may also refer
to single files. to single files.

23
main.go
View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@@ -135,16 +135,16 @@ func walk(ch chan<- *file, start string) {
func addLicense(path string, fmode os.FileMode, tmpl *template.Template, data *copyrightData) error { func addLicense(path string, fmode os.FileMode, tmpl *template.Template, data *copyrightData) error {
var lic []byte var lic []byte
var err error var err error
switch filepath.Ext(path) { switch fileExtension(path) {
default: default:
return nil return nil
case ".c", ".h": case ".c", ".h":
lic, err = prefix(tmpl, data, "/*", " * ", " */") lic, err = prefix(tmpl, data, "/*", " * ", " */")
case ".js", ".jsx", ".tsx", ".css", ".tf": case ".js", ".jsx", ".tsx", ".css", ".tf":
lic, err = prefix(tmpl, data, "/**", " * ", " */") lic, err = prefix(tmpl, data, "/**", " * ", " */")
case ".cc", ".cpp", ".cs", ".go", ".hh", ".hpp", ".java", ".m", ".mm", ".proto", ".rs", ".scala", ".swift", ".dart": case ".cc", ".cpp", ".cs", ".go", ".hh", ".hpp", ".java", ".m", ".mm", ".proto", ".rs", ".scala", ".swift", ".dart", ".groovy":
lic, err = prefix(tmpl, data, "", "// ", "") lic, err = prefix(tmpl, data, "", "// ", "")
case ".py", ".sh", ".yaml", ".yml": case ".py", ".sh", ".yaml", ".yml", ".dockerfile", "dockerfile", ".rb", "gemfile":
lic, err = prefix(tmpl, data, "", "# ", "") lic, err = prefix(tmpl, data, "", "# ", "")
case ".el", ".lisp": case ".el", ".lisp":
lic, err = prefix(tmpl, data, "", ";; ", "") lic, err = prefix(tmpl, data, "", ";; ", "")
@@ -178,10 +178,19 @@ func addLicense(path string, fmode os.FileMode, tmpl *template.Template, data *c
return ioutil.WriteFile(path, b, fmode) return ioutil.WriteFile(path, b, fmode)
} }
func fileExtension(name string) string {
if v := filepath.Ext(name); v != "" {
return strings.ToLower(v)
}
return strings.ToLower(filepath.Base(name))
}
var head = []string{ var head = []string{
"#!", // shell script "#!", // shell script
"<?xml", // XML declaratioon "<?xml", // XML declaratioon
"<!doctype", // HTML doctype "<!doctype", // HTML doctype
"# encoding:", // Ruby encoding
"# frozen_string_literal:", // Ruby interpreter instruction
} }
func hashBang(b []byte) []byte { func hashBang(b []byte) []byte {

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@@ -53,7 +53,7 @@ func TestInitial(t *testing.T) {
for i := 0; i < 2; i++ { for i := 0; i < 2; i++ {
t.Logf("run #%d", i) t.Logf("run #%d", i)
targs := []string{"-test.run=TestInitial"} targs := []string{"-test.run=TestInitial"}
cargs := []string{"-l", "apache", "-c", "Google Inc.", "-y", "2016", tmp} cargs := []string{"-l", "apache", "-c", "Google LLC", "-y", "2018", tmp}
c := exec.Command(os.Args[0], append(targs, cargs...)...) c := exec.Command(os.Args[0], append(targs, cargs...)...)
c.Env = []string{"RUNME=1"} c.Env = []string{"RUNME=1"}
if out, err := c.CombinedOutput(); err != nil { if out, err := c.CombinedOutput(); err != nil {

15
testdata/expected/Gemfile vendored Normal file
View File

@@ -0,0 +1,15 @@
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
puts "Hello world!"

16
testdata/expected/file.Dockerfile vendored Normal file
View File

@@ -0,0 +1,16 @@
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
FROM scratch
CMD ["echo", "hello world"]

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2016 Google Inc. * Copyright 2018 Google LLC
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,5 +1,5 @@
/** /**
* Copyright 2016 Google Inc. * Copyright 2018 Google LLC
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
;; Copyright 2016 Google Inc. ;; Copyright 2018 Google LLC
;; ;;
;; Licensed under the Apache License, Version 2.0 (the "License"); ;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License. ;; you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
% Copyright 2016 Google Inc. % Copyright 2018 Google LLC
% %
% Licensed under the Apache License, Version 2.0 (the "License"); % Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License. % you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

17
testdata/expected/file.groovy vendored Normal file
View File

@@ -0,0 +1,17 @@
// Copyright 2018 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
def dummy_function() {
println "Hello world"
}

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2016 Google Inc. * Copyright 2018 Google LLC
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
-- Copyright 2016 Google Inc. -- Copyright 2018 Google LLC
-- --
-- Licensed under the Apache License, Version 2.0 (the "License"); -- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License. -- you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
<!doctype html> <!doctype html>
<!-- <!--
Copyright 2016 Google Inc. Copyright 2018 Google LLC
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,5 +1,5 @@
/** /**
* Copyright 2016 Google Inc. * Copyright 2018 Google LLC
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
;; Copyright 2016 Google Inc. ;; Copyright 2018 Google LLC
;; ;;
;; Licensed under the Apache License, Version 2.0 (the "License"); ;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License. ;; you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,5 +1,5 @@
<?php <?php
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
# Copyright 2016 Google Inc. # Copyright 2018 Google LLC
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

16
testdata/expected/file.rb vendored Normal file
View File

@@ -0,0 +1,16 @@
# frozen_string_literal: true
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
puts "Hello world!"

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -1,5 +1,5 @@
/** /**
* Copyright 2016 Google Inc. * Copyright 2018 Google LLC
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,5 +1,5 @@
<!-- <!--
Copyright 2016 Google Inc. Copyright 2018 Google LLC
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# Copyright 2016 Google Inc. # Copyright 2018 Google LLC
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@@ -1,5 +1,5 @@
#!/usr/bin/go run prog.go $* #!/usr/bin/go run prog.go $*
# Copyright 2016 Google Inc. # Copyright 2018 Google LLC
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!-- <!--
Copyright 2016 Google Inc. Copyright 2018 Google LLC
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

1
testdata/initial/Gemfile vendored Normal file
View File

@@ -0,0 +1 @@
puts "Hello world!"

2
testdata/initial/file.Dockerfile vendored Normal file
View File

@@ -0,0 +1,2 @@
FROM scratch
CMD ["echo", "hello world"]

3
testdata/initial/file.groovy vendored Normal file
View File

@@ -0,0 +1,3 @@
def dummy_function() {
println "Hello world"
}

2
testdata/initial/file.rb vendored Normal file
View File

@@ -0,0 +1,2 @@
# frozen_string_literal: true
puts "Hello world!"

View File

@@ -1,4 +1,4 @@
// Copyright 2016 Google Inc. // Copyright 2018 Google LLC
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.