copyright-header 1.0.11 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +22 -8
- data/contrib/syntax.yml +18 -6
- data/lib/copyright_header/command_line.rb +11 -11
- data/lib/copyright_header/parser.rb +15 -11
- data/lib/copyright_header/version.rb +1 -1
- metadata +50 -40
data/README.md
CHANGED
@@ -16,6 +16,7 @@ Caveats
|
|
16
16
|
-------
|
17
17
|
* Will only remove headers to files that have exactly the same header as the one we added
|
18
18
|
* Will only add headers to files which do not contain the case-sensitive pattern `/[Cc]opyright|[Lc]icense/` in the first `N` lines
|
19
|
+
* Will not properly format arguments that contain new-line ("`\n`") characters.
|
19
20
|
|
20
21
|
Requirements
|
21
22
|
------------
|
@@ -35,17 +36,17 @@ Usage
|
|
35
36
|
|
36
37
|
Full list of supported arguments:
|
37
38
|
|
38
|
-
Usage:
|
39
|
+
Usage: copyright-header options [file]
|
39
40
|
-n, --dry-run Output the parsed files to STDOUT
|
40
41
|
-o, --output-dir DIR Use DIR as output directory
|
41
42
|
--license-file FILE Use FILE as header (instead of using --license argument)
|
42
|
-
--license [AGPL3|BSD-2-CLAUSE|BSD-3-CLAUSE|BSD-4-CLAUSE|GPL3|MIT]
|
43
|
+
--license [AGPL3|ASL2|BSD-2-CLAUSE|BSD-3-CLAUSE|BSD-4-CLAUSE|GPL3|MIT]
|
43
44
|
Use LICENSE as header
|
44
45
|
--copyright-software NAME The common name for this piece of software (e.g. "Copyright Header")
|
45
46
|
--copyright-software-description DESC
|
46
|
-
The
|
47
|
-
--copyright-holder NAME The
|
48
|
-
--copyright-year YEAR The
|
47
|
+
The detailed description for this piece of software (e.g. "A utility to manipulate copyright headers on source code files")
|
48
|
+
--copyright-holder NAME The legal owner of the copyright for the software. (e.g. "Erik Osterman <e@osterman.com>"). Repeat argument for multiple names.
|
49
|
+
--copyright-year YEAR The years for which the copyright exists (e.g. "2012"). Repeat argument for multiple years.
|
49
50
|
-w, --word-wrap LEN Maximum number of characters per line for license (default: 80)
|
50
51
|
-a, --add-path PATH Recursively insert header in all files found in path (allows multiple paths separated by platform path-separator ":")
|
51
52
|
-r, --remove-path PATH Recursively remove header in all files found in path (allows multiple paths separated by platform path-separator ":")
|
@@ -54,7 +55,6 @@ Full list of supported arguments:
|
|
54
55
|
-V, --version Display version information
|
55
56
|
-h, --help Display this screen
|
56
57
|
|
57
|
-
|
58
58
|
Examples
|
59
59
|
--------
|
60
60
|
|
@@ -64,11 +64,25 @@ Discover available parameters by passing the `--help` argument
|
|
64
64
|
|
65
65
|
Add a GPL3 License header to a file:
|
66
66
|
|
67
|
-
copyright-header --add-path /tmp/test.rb
|
67
|
+
copyright-header --add-path /tmp/test.rb \
|
68
|
+
--license GPL3 \
|
69
|
+
--copyright-holder 'Joe Shmoe' \
|
70
|
+
--copyright-software 'Example Software' \
|
71
|
+
--copyright-software-description "This is the description of the software." \
|
72
|
+
--copyright-year 2012 \
|
73
|
+
--output-dir /tmp \
|
74
|
+
--dry-run
|
68
75
|
|
69
76
|
Remove the header created in the previous step (without --dry-run argument):
|
70
77
|
|
71
|
-
copyright-header --remove-path /tmp/test.rb
|
78
|
+
copyright-header --remove-path /tmp/test.rb \
|
79
|
+
--license GPL3 \
|
80
|
+
--copyright-holder 'Joe Shmoe' \
|
81
|
+
--copyright-software 'Example Software' \
|
82
|
+
--copyright-software-description 'This is the description of the software.' \
|
83
|
+
--copyright-year 2012 \
|
84
|
+
--output-dir /tmp \
|
85
|
+
--dry-run
|
72
86
|
|
73
87
|
Command used to generate copyright headers for this script:
|
74
88
|
|
data/contrib/syntax.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
ruby:
|
2
|
-
ext: ['.rb']
|
2
|
+
ext: ['.rb', '.rake']
|
3
3
|
after: ['^#!', '^#.*encoding:']
|
4
4
|
comment:
|
5
5
|
open: '#\n'
|
@@ -14,7 +14,6 @@ perl:
|
|
14
14
|
close: '#\n'
|
15
15
|
prefix: '# '
|
16
16
|
|
17
|
-
|
18
17
|
# Support PEP 0263 comments:
|
19
18
|
# coding=<encoding name>
|
20
19
|
# -*- coding: <encoding name> -*-
|
@@ -42,7 +41,6 @@ php:
|
|
42
41
|
close: ' */ ?>\n'
|
43
42
|
prefix: ' * '
|
44
43
|
|
45
|
-
|
46
44
|
javacript:
|
47
45
|
ext: ['.js']
|
48
46
|
comment:
|
@@ -57,7 +55,6 @@ css:
|
|
57
55
|
close: ' */\n\n'
|
58
56
|
prefix: ' * '
|
59
57
|
|
60
|
-
|
61
58
|
c:
|
62
59
|
ext: ['.c', '.h']
|
63
60
|
comment:
|
@@ -80,7 +77,7 @@ java:
|
|
80
77
|
prefix: ' * '
|
81
78
|
|
82
79
|
haml:
|
83
|
-
ext: ['.haml']
|
80
|
+
ext: ['.haml', '.hamlc']
|
84
81
|
comment:
|
85
82
|
open: '-#\n'
|
86
83
|
close: '-#\n'
|
@@ -122,9 +119,24 @@ sql:
|
|
122
119
|
# preprocessing directive, if present.
|
123
120
|
# FIXME: only supports single line directives
|
124
121
|
xml:
|
125
|
-
ext: ['.xml', '.xsd']
|
122
|
+
ext: ['.xml', '.xsd', '.mxml']
|
126
123
|
after: ['^<\?']
|
127
124
|
comment:
|
128
125
|
open: '<!--\n'
|
129
126
|
close: '-->\n'
|
130
127
|
prefix: ' '
|
128
|
+
|
129
|
+
yaml:
|
130
|
+
ext: ['.yml', '.yaml']
|
131
|
+
comment:
|
132
|
+
open: '#\n'
|
133
|
+
close: '#\n'
|
134
|
+
prefix: '# '
|
135
|
+
|
136
|
+
action_script:
|
137
|
+
ext: ['.as']
|
138
|
+
comment:
|
139
|
+
open: '//\n'
|
140
|
+
close: '//\n\n'
|
141
|
+
prefix: '// '
|
142
|
+
|
@@ -38,7 +38,7 @@ module CopyrightHeader
|
|
38
38
|
end
|
39
39
|
|
40
40
|
opts.on( '-o', '--output-dir DIR', 'Use DIR as output directory') do |dir|
|
41
|
-
@options[:output_dir] = dir
|
41
|
+
@options[:output_dir] = dir.gsub(/\/+$/, '')
|
42
42
|
end
|
43
43
|
|
44
44
|
opts.on( '--license-file FILE', 'Use FILE as header (instead of using --license argument)' ) do|file|
|
@@ -53,17 +53,17 @@ module CopyrightHeader
|
|
53
53
|
@options[:copyright_software] = name
|
54
54
|
end
|
55
55
|
|
56
|
-
opts.on( '--copyright-software-description DESC', 'The
|
56
|
+
opts.on( '--copyright-software-description DESC', 'The detailed description for this piece of software (e.g. "A utility to manipulate copyright headers on source code files")' ) do|desc|
|
57
57
|
@options[:copyright_software_description] = desc
|
58
58
|
end
|
59
59
|
|
60
60
|
@options[:copyright_holders] ||= []
|
61
|
-
opts.on( '--copyright-holder NAME', 'The
|
61
|
+
opts.on( '--copyright-holder NAME', 'The legal owner of the copyright for the software. (e.g. "Erik Osterman <e@osterman.com>"). Repeat argument for multiple names.' ) do|name|
|
62
62
|
@options[:copyright_holders] << name
|
63
63
|
end
|
64
64
|
|
65
65
|
@options[:copyright_years] ||= []
|
66
|
-
opts.on( '--copyright-year YEAR', 'The
|
66
|
+
opts.on( '--copyright-year YEAR', 'The years for which the copyright exists (e.g. "2012"). Repeat argument for multiple years.' ) do|year|
|
67
67
|
@options[:copyright_years] << year
|
68
68
|
end
|
69
69
|
|
@@ -91,11 +91,11 @@ module CopyrightHeader
|
|
91
91
|
end
|
92
92
|
|
93
93
|
opts.on( '-V', '--version', 'Display version information' ) do
|
94
|
-
puts "CopyrightHeader #{CopyrightHeader::VERSION}"
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
94
|
+
STDERR.puts "CopyrightHeader #{CopyrightHeader::VERSION}",
|
95
|
+
"Copyright (C) 2012 Erik Osterman <e@osterman.com>",
|
96
|
+
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>",
|
97
|
+
"This is free software: you are free to change and redistribute it.",
|
98
|
+
"There is NO WARRANTY, to the extent permitted by law."
|
99
99
|
exit
|
100
100
|
end
|
101
101
|
|
@@ -130,13 +130,13 @@ module CopyrightHeader
|
|
130
130
|
raise MissingArgumentException.new("Missing --copyright-year argument") unless @options[:copyright_years].length > 0
|
131
131
|
end
|
132
132
|
rescue MissingArgumentException => e
|
133
|
-
puts e.message
|
134
|
-
puts @optparse
|
133
|
+
STDERR.puts e.message, @optparse
|
135
134
|
exit (1)
|
136
135
|
end
|
137
136
|
end
|
138
137
|
|
139
138
|
def execute
|
139
|
+
STDERR.puts "-- DRY RUN --" if @options[:dry_run]
|
140
140
|
@parser = CopyrightHeader::Parser.new(@options)
|
141
141
|
@parser.execute
|
142
142
|
end
|
@@ -82,7 +82,7 @@ module CopyrightHeader
|
|
82
82
|
|
83
83
|
copyright = self.format(license)
|
84
84
|
if copyright.nil?
|
85
|
-
puts "Copyright is nil"
|
85
|
+
STDERR.puts "Copyright is nil"
|
86
86
|
return nil
|
87
87
|
end
|
88
88
|
|
@@ -121,7 +121,7 @@ module CopyrightHeader
|
|
121
121
|
@contents.gsub!(/#{Regexp.escape(text)}/, '')
|
122
122
|
@contents
|
123
123
|
else
|
124
|
-
puts "SKIP #{@file}; copyright not detected"
|
124
|
+
STDERR.puts "SKIP #{@file}; copyright not detected"
|
125
125
|
return nil
|
126
126
|
end
|
127
127
|
end
|
@@ -206,11 +206,11 @@ module CopyrightHeader
|
|
206
206
|
begin
|
207
207
|
if File.file?(path)
|
208
208
|
if @exclude.include? File.basename(path)
|
209
|
-
puts "SKIP #{path}; excluded"
|
209
|
+
STDERR.puts "SKIP #{path}; excluded"
|
210
210
|
next
|
211
211
|
end
|
212
212
|
else
|
213
|
-
puts "SKIP #{path}; not file"
|
213
|
+
STDERR.puts "SKIP #{path}; not file"
|
214
214
|
next
|
215
215
|
end
|
216
216
|
|
@@ -218,15 +218,15 @@ module CopyrightHeader
|
|
218
218
|
header = @syntax.header(path)
|
219
219
|
contents = header.send(method, @license)
|
220
220
|
if contents.nil?
|
221
|
-
puts "SKIP #{path}; failed to generate license"
|
221
|
+
STDERR.puts "SKIP #{path}; failed to generate license"
|
222
222
|
else
|
223
223
|
write(path, contents)
|
224
224
|
end
|
225
225
|
else
|
226
|
-
puts "SKIP #{path}; unsupported"
|
226
|
+
STDERR.puts "SKIP #{path}; unsupported"
|
227
227
|
end
|
228
228
|
rescue Exception => e
|
229
|
-
puts "SKIP #{path}; #{e.message}"
|
229
|
+
STDERR.puts "SKIP #{path}; #{e.message}"
|
230
230
|
end
|
231
231
|
end
|
232
232
|
end
|
@@ -242,11 +242,15 @@ module CopyrightHeader
|
|
242
242
|
end
|
243
243
|
|
244
244
|
def write(file, contents)
|
245
|
-
|
246
|
-
|
247
|
-
puts contents
|
245
|
+
if @options[:dry_run]
|
246
|
+
STDERR.puts "UPDATE #{file} [dry-run]"
|
247
|
+
STDERR.puts contents
|
248
|
+
elsif @options[:output_dir].nil?
|
249
|
+
STDERR.puts "UPDATE #{file} [no output-dir]"
|
250
|
+
STDERR.puts contents
|
248
251
|
else
|
249
|
-
dir = "#{@options[:output_dir]}/#{File.dirname(file)}"
|
252
|
+
dir = "#{@options[:output_dir]}/#{File.dirname(file).gsub(/^\/+/, '')}"
|
253
|
+
STDERR.puts "UPDATE #{file} [output-dir #{dir}]"
|
250
254
|
FileUtils.mkpath dir unless File.directory?(dir)
|
251
255
|
output_path = @options[:output_dir] + file
|
252
256
|
f =File.new(output_path, 'w')
|
metadata
CHANGED
@@ -1,45 +1,49 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: copyright-header
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 0
|
8
|
+
- 12
|
9
|
+
version: 1.0.12
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- Erik Osterman
|
9
13
|
autorequire:
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
|
17
|
+
date: 2013-11-12 00:00:00 -08:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: github-linguist
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 2.6.7
|
22
|
-
type: :runtime
|
23
22
|
prerelease: false
|
24
|
-
|
25
|
-
|
26
|
-
requirements:
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
27
25
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 6
|
30
|
+
- 7
|
29
31
|
version: 2.6.7
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
description: A utility which is able to recursively insert and remove copyright headers from source code files based on file extensions.
|
35
|
+
email:
|
33
36
|
- e@osterman.com
|
34
|
-
executables:
|
37
|
+
executables:
|
35
38
|
- copyright-header
|
36
39
|
extensions: []
|
37
|
-
|
40
|
+
|
41
|
+
extra_rdoc_files:
|
38
42
|
- README.md
|
39
43
|
- LICENSE
|
40
44
|
- AUTHORS
|
41
45
|
- contrib/syntax.yml
|
42
|
-
files:
|
46
|
+
files:
|
43
47
|
- .gitignore
|
44
48
|
- AUTHORS
|
45
49
|
- Gemfile
|
@@ -60,29 +64,35 @@ files:
|
|
60
64
|
- licenses/BSD-4-CLAUSE.erb
|
61
65
|
- licenses/GPL3.erb
|
62
66
|
- licenses/MIT.erb
|
67
|
+
has_rdoc: true
|
63
68
|
homepage: https://github.com/osterman/copyright-header
|
64
|
-
licenses:
|
69
|
+
licenses:
|
65
70
|
- GPL-3
|
66
71
|
post_install_message:
|
67
72
|
rdoc_options: []
|
68
|
-
|
73
|
+
|
74
|
+
require_paths:
|
69
75
|
- lib
|
70
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
requirements:
|
79
|
-
- -
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
segments:
|
81
|
+
- 0
|
82
|
+
version: "0"
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
82
90
|
requirements: []
|
91
|
+
|
83
92
|
rubyforge_project: copyright-header
|
84
|
-
rubygems_version: 1.
|
93
|
+
rubygems_version: 1.3.6
|
85
94
|
signing_key:
|
86
95
|
specification_version: 3
|
87
96
|
summary: A utility to insert copyright headers into various types of source code files
|
88
97
|
test_files: []
|
98
|
+
|