papers 2.4.1 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 77662210b020b8018d27e9f2888cba6b61a58d16
4
- data.tar.gz: 604cd4f2f5e59829c98e24daaee8b9c94b77e019
3
+ metadata.gz: ff0340e975da31aa959dcddcdd5b7a78c9140ecc
4
+ data.tar.gz: fd4265cbcdbd98799e115667658eb9450e52493f
5
5
  SHA512:
6
- metadata.gz: aa7a0cf071bef428e01cee044ac90956d51876260ef839d8b0caa45fbcc6a4e3e9754a7fca78126296da1353a77bc2d8fb57f11eba620d37229580a43ad861cd
7
- data.tar.gz: 485b8df1cbaa13f47ddf4c3d610dcf9f0104cb6b9e496230afe94967150b1577e71076edb317b40359c137685f26b7050ffc646b52168ff4060bed561a5519d5
6
+ metadata.gz: 0d97ddcc2a8b633bf5a091d1da0451cf19f1c2043c419f38b0cf443b17034045e70923236b46664705fbc6e16195d4644c6787fa65e25a907cf5c2453a7cb883
7
+ data.tar.gz: 19262716885a3d898bf6629376a5e76904ed3c45a9b9a2258a36d8995385cb8966efd23f9e0d6591b72a5acfb4671038ffd09d6e37916208355c0bb8f13d308a
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.4.2
4
+ * Support for `package_whitelist` in configuration.
5
+ * Fix help output from command-line tool
6
+
3
7
  ## 2.4.1
4
8
  * Fix problem where missing licenses from gemspecs overrode hand-authored manifest values.
5
9
 
data/README.md CHANGED
@@ -68,6 +68,10 @@ Papers.configure do |config|
68
68
  # ]
69
69
  # config.license_whitelist << 'New Relic'
70
70
 
71
+ # You can specify packages which should be whitelisted regardless of license, in case you know your usage
72
+ # is OK even though you prefer not to use its license in other cases.
73
+ # config.package_whitelist << 'thin-1.7.0'
74
+
71
75
  # You can specify a single license that, when used, ignores the version. Defaults to nil.
72
76
  # WARNING: You should only use this for software licensed in house.
73
77
  # config.version_whitelisted_license = 'New Relic'
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env rake
2
2
  require 'rspec/core/rake_task'
3
+ require 'bundler/gem_tasks'
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec) do |t|
5
6
  t.rspec_opts = "-c"
@@ -5,48 +5,50 @@ module Papers
5
5
  class CLI
6
6
 
7
7
  def run
8
- if options[:generate]
9
- begin
10
- Papers::ManifestGenerator.new.generate!
11
- rescue Papers::FileExistsError => e
12
- warn "Error: 'papers_manifest.yml' already exists at '#{e.message}'. Aborting..."
13
- end
14
- end
8
+ options.parse!
15
9
 
16
- if options[:update]
10
+ case @command
11
+ when :generate
12
+ Papers::ManifestGenerator.new.generate!
13
+ when :update
17
14
  Papers::ManifestUpdater.new.update!
15
+ when :help
16
+ emit_help ""
17
+ else
18
+ emit_help "Unrecognized command."
18
19
  end
20
+ rescue Papers::FileExistsError => e
21
+ warn "Error: 'papers_manifest.yml' already exists at '#{e.message}'. Aborting..."
22
+ rescue OptionParser::ParseError => e
23
+ emit_help "Problem parsing options: #{e.message}"
19
24
  end
20
25
 
21
26
  private
22
27
 
23
28
  def options
24
- @options ||= parse_options
25
- end
26
-
27
- def parse_options
28
- options = {}
29
- OptionParser.new do |opts|
30
- opts.banner = "Usage: papers [options]"
29
+ @options ||= OptionParser.new do |opts|
30
+ opts.banner = 'Usage: papers [options]'
31
31
 
32
- opts.on("-g", "--generate", "Generate papers_manifest.yml") do |v|
33
- options[:generate] = v
32
+ opts.on('-g', '--generate', 'Generate papers_manifest.yml') do |v|
33
+ @command = :generate
34
34
  end
35
35
 
36
36
  opts.on("-u", "--update", "Update papers_manifest.yml for Rubygems") do |v|
37
- options[:update] = v
37
+ @command = :update
38
38
  end
39
39
 
40
- opts.on_tail( '-h', '--help', 'Display this screen' ) do |v|
41
- p opts
42
- exit
40
+ opts.on('-h', '--help', 'Display this screen') do
41
+ @command = :help
43
42
  end
44
- @avail_opts = opts
45
- end.parse!
46
-
47
- p @avail_opts if options.empty?
43
+ end
44
+ end
48
45
 
49
- return options
46
+ def emit_help(header)
47
+ unless header.empty?
48
+ puts header
49
+ puts
50
+ end
51
+ puts options
50
52
  end
51
53
  end
52
54
  end
@@ -2,6 +2,7 @@ module Papers
2
2
  class Configuration
3
3
  attr_accessor :license_whitelist
4
4
  attr_accessor :version_whitelisted_license
5
+ attr_accessor :package_whitelist
5
6
 
6
7
  attr_accessor :manifest_file
7
8
 
@@ -30,6 +31,8 @@ module Papers
30
31
  'ISC'
31
32
  ]
32
33
 
34
+ @package_whitelist = []
35
+
33
36
  @version_whitelisted_license = nil
34
37
 
35
38
  @manifest_file = File.join(Dir.pwd, 'config', 'papers_manifest.yml')
@@ -16,7 +16,8 @@ module Papers
16
16
 
17
17
  def acceptable_license?
18
18
  Papers.config.license_whitelist.include?(license) ||
19
- Papers.config.version_whitelisted_license == license
19
+ Papers.config.version_whitelisted_license == license ||
20
+ Papers.config.package_whitelist.include?(name)
20
21
  end
21
22
 
22
23
  protected
@@ -2,7 +2,7 @@ module Papers
2
2
  class Version
3
3
  MAJOR = 2
4
4
  MINOR = 4
5
- PATCH = 1
5
+ PATCH = 2
6
6
 
7
7
  def self.to_s
8
8
  [MAJOR, MINOR, PATCH].join('.')
@@ -121,6 +121,27 @@ describe 'Papers' do
121
121
  ])
122
122
  end
123
123
 
124
+ it 'is OK with whitelisting specific gems' do
125
+ allow_any_instance_of(Papers::Configuration).to receive(:package_whitelist).and_return(['foo-1.2'])
126
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
127
+ 'javascripts' => {},
128
+ 'gems' => {
129
+ 'foo-1.2' => { 'license' => 'GPL' },
130
+ 'baz-1.3' => { 'license' => 'GPL' }
131
+ }
132
+ })
133
+ allow(Bundler).to receive_message_chain(:load, :specs).and_return([
134
+ double(name: 'foo', version: '1.2', licenses: ['GPL']),
135
+ double(name: 'baz', version: '1.3', licenses: ['GPL'])
136
+ ])
137
+
138
+ expect(validator).not_to be_valid
139
+
140
+ expect(validator.errors).to eq([
141
+ 'Gem baz-1.3 is licensed under GPL, which is not whitelisted'
142
+ ])
143
+ end
144
+
124
145
  it 'is OK with matching gem sets but complain about a license issue' do
125
146
  allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
126
147
  'javascripts' => {},
@@ -413,5 +434,30 @@ describe 'Papers' do
413
434
  expect(validator).to be_valid
414
435
  end
415
436
 
437
+ describe "Command Line" do
438
+ def silently
439
+ vblevel = $VERBOSE
440
+ $VERBOSE = nil
441
+ yield
442
+ ensure
443
+ $VERBOSE = vblevel
444
+ end
445
+
446
+ before do
447
+ @old_argv = ARGV
448
+ end
449
+ after do
450
+ silently { ARGV = @old_argv }
451
+ end
452
+ it "runs the papers command and prints out help" do
453
+ silently { ARGV = %w[-h] }
454
+ cli = Papers::CLI.new
455
+ expect(cli).to receive(:puts) do |opts|
456
+ expect(opts.to_s).to match /^Usage: papers.*/
457
+ end
458
+ cli.run
459
+ end
460
+ end
461
+
416
462
 
417
463
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: papers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ralph Bodenner
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2016-12-09 00:00:00.000000000 Z
15
+ date: 2017-05-02 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rake
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  version: '0'
101
101
  requirements: []
102
102
  rubyforge_project:
103
- rubygems_version: 2.5.1
103
+ rubygems_version: 2.6.11
104
104
  signing_key:
105
105
  specification_version: 4
106
106
  summary: Validate the licenses of software dependencies you use
@@ -111,4 +111,3 @@ test_files:
111
111
  - spec/spec_helper.rb
112
112
  - spec/support/package.json
113
113
  - spec/support/package_with_error.json
114
- has_rdoc: