bundler-organization_audit 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1bbae92ba27efe58d7dcd0815e927cee9ee819af
4
+ data.tar.gz: 4d282857fa1e954191097cfe40643052c6353747
5
+ SHA512:
6
+ metadata.gz: 704c1cf251aa4dc836d8b1983a11c2ef11594d265fd396c661a8907511ec6af31ce732c542b2b8f8f06f9300875314743305a6791406f9a71761dccdc120f012
7
+ data.tar.gz: acd41b3091c673fae50ef1afb120021da6b33d20a3c2bab3df207df88a9e34e31346b74fe824256de175afc48f7a6d6d5b0afc9c0320c51f3d0b1910ba04594f
@@ -13,7 +13,11 @@ module Bundler
13
13
  end
14
14
 
15
15
  def gem?
16
- !!content("#{project}.gemspec")
16
+ !!gemspec_content
17
+ end
18
+
19
+ def gemspec_content
20
+ content("#{project}.gemspec")
17
21
  end
18
22
 
19
23
  def url
@@ -43,10 +47,13 @@ module Bundler
43
47
  end
44
48
 
45
49
  def content(file)
46
- if private?
47
- download_content_via_api(file)
48
- else
49
- download_content_via_raw(file)
50
+ @content ||= {}
51
+ @content[file] ||= begin
52
+ if private?
53
+ download_content_via_api(file)
54
+ else
55
+ download_content_via_raw(file)
56
+ end
50
57
  end
51
58
  rescue OpenURI::HTTPError => e
52
59
  raise "Error downloading #{file} from #{url} (#{e})" unless e.message.start_with?("404")
@@ -1,5 +1,5 @@
1
1
  module Bundler
2
2
  module OrganizationAudit
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,57 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler-organization_audit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
5
- prerelease:
4
+ version: 0.1.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Michael Grosser
9
8
  autorequire:
10
9
  bindir: bin
11
- cert_chain:
12
- - !binary |-
13
- LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURNakNDQWhxZ0F3SUJB
14
- Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREEvTVJBd0RnWURWUVFEREFkdGFX
15
- Tm8KWVdWc01SY3dGUVlLQ1pJbWlaUHlMR1FCR1JZSFozSnZjM05sY2pFU01C
16
- QUdDZ21TSm9tVDhpeGtBUmtXQW1sMApNQjRYRFRFek1ESXdNekU0TVRNeE1W
17
- b1hEVEUwTURJd016RTRNVE14TVZvd1B6RVFNQTRHQTFVRUF3d0hiV2xqCmFH
18
- RmxiREVYTUJVR0NnbVNKb21UOGl4a0FSa1dCMmR5YjNOelpYSXhFakFRQmdv
19
- SmtpYUprL0lzWkFFWkZnSnAKZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFB
20
- RGdnRVBBRENDQVFvQ2dnRUJBTW9yWG8vaGdiVXE5NytrSUk5SApNc1FjTGRD
21
- Lzd3UTFaUDJPc2hWSFBrZVAwcUg4TUJIR2c2ZVlpc09YMnViTmFnRjlZVENa
22
- V25ocmRLcndwTE9PCmNQTGFaYmpVamxqSjNjUVIzQjhZbjF2ZVY1SWhHODZR
23
- c2VUQmp5bXpKV3NMcHFKMVVaR3BmQjl0WGNzRnR1eE8KNnZIdmNJSGR6dmMv
24
- T1VrSUN0dExiSCsxcWI2cnNIVWNlcWgrSnJINEdyc0o1SDRoQWZJZHlTMlhN
25
- SzdZUktiaApoK0lCdTZkRldKSkJ5ekZzWW1WMVBEWGxuM1VCbWdBdDY1Y21D
26
- dTRxUGZUaGlvQ0dEemJTSnJHREdMbXcvcEZYCkZQcFZDbTF6Z1lTYjF2NlFu
27
- ZjNjZ1hhMmYyd1lHbTE3K3pBVnlJRHB3cnlGcnU5eUYvakp4RTM4ei9EUnNk
28
- OVIKLzg4Q0F3RUFBYU01TURjd0NRWURWUjBUQkFJd0FEQWRCZ05WSFE0RUZn
29
- UVVzaU5uWEh0S2VNWVljcjR5SlZtUQpXT05MK0l3d0N3WURWUjBQQkFRREFn
30
- U3dNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUFseU43a0tvL05RQ1EwCkFP
31
- elpMWjNXQWVQdlN0a0NGSUo1M3RzdjVLeW80cE1BbGx2K0JnUHp6QnQ3cWk2
32
- MDVtRlNMNnpCZDl1TG91K1cKQ28zczQ4cDFkeTdDampBZlZRZG1WTkhGM013
33
- WHRmQzJPRXl2U1FQaTR4S1I4aWJhOHdhM3hwOUxWbzFQdUxwdwovNkRzckNo
34
- V3c3NEhmc0pONnFKT0s2ODRoSmVUOGxCWUFVZmlDM3dEMG93b1BTZytYdHlB
35
- QWRkaXNSK0tWNVkxCk5tVkh1THRRY05UWnkrZ1JodDNhaEpSTXVDNlF5TG1r
36
- VHNmKzZNYWVud0FNa0FnSGRzd0dzSnp0T25ObkJhM0YKeTBrQ1NXbUs2RCt4
37
- L1NiZlM2cjdLZTA3TVJxemlKZEI5R3VFMSswY0lSdUZoOEVRK0xONkhYQ0tN
38
- NXBvbi9HVQp5Y3dNWGZsMAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
39
- date: 2013-03-22 00:00:00.000000000 Z
10
+ cert_chain: []
11
+ date: 2013-08-10 00:00:00.000000000 Z
40
12
  dependencies:
41
13
  - !ruby/object:Gem::Dependency
42
14
  name: json
43
15
  requirement: !ruby/object:Gem::Requirement
44
- none: false
45
16
  requirements:
46
- - - ! '>='
17
+ - - '>='
47
18
  - !ruby/object:Gem::Version
48
19
  version: '0'
49
20
  type: :runtime
50
21
  prerelease: false
51
22
  version_requirements: !ruby/object:Gem::Requirement
52
- none: false
53
23
  requirements:
54
- - - ! '>='
24
+ - - '>='
55
25
  - !ruby/object:Gem::Version
56
26
  version: '0'
57
27
  description: Audit all Gemfiles of a user/organization on github for unpatched versions
@@ -61,51 +31,32 @@ executables:
61
31
  extensions: []
62
32
  extra_rdoc_files: []
63
33
  files:
64
- - .gitignore
65
- - .travis.yml
66
- - Gemfile
67
- - Gemfile.lock
68
- - Rakefile
69
- - Readme.md
70
34
  - bin/bundle-organization-audit
71
- - bundler-organization_audit.gemspec
72
- - gem-public_cert.pem
73
35
  - lib/bundler/organization_audit.rb
74
36
  - lib/bundler/organization_audit/repo.rb
75
37
  - lib/bundler/organization_audit/version.rb
76
- - spec/bundler/organization_audit/repo_spec.rb
77
- - spec/bundler/organization_audit_spec.rb
78
- - spec/private.example.yml
79
- - spec/spec_helper.rb
80
38
  homepage: http://github.com/grosser/bundler-organization_audit
81
39
  licenses:
82
40
  - MIT
41
+ metadata: {}
83
42
  post_install_message:
84
43
  rdoc_options: []
85
44
  require_paths:
86
45
  - lib
87
46
  required_ruby_version: !ruby/object:Gem::Requirement
88
- none: false
89
47
  requirements:
90
- - - ! '>='
48
+ - - '>='
91
49
  - !ruby/object:Gem::Version
92
50
  version: '0'
93
- segments:
94
- - 0
95
- hash: -3883081273091798118
96
51
  required_rubygems_version: !ruby/object:Gem::Requirement
97
- none: false
98
52
  requirements:
99
- - - ! '>='
53
+ - - '>='
100
54
  - !ruby/object:Gem::Version
101
55
  version: '0'
102
- segments:
103
- - 0
104
- hash: -3883081273091798118
105
56
  requirements: []
106
57
  rubyforge_project:
107
- rubygems_version: 1.8.25
58
+ rubygems_version: 2.0.6
108
59
  signing_key:
109
- specification_version: 3
60
+ specification_version: 4
110
61
  summary: Audit all Gemfiles of a user/organization on github for unpatched versions
111
62
  test_files: []
data.tar.gz.sig DELETED
@@ -1 +0,0 @@
1
- ����Q����Kc֚�� �a}�⳪40������RD���dr]�8��W�(���@tByap����'�W?����1�Dm[2������n^=����+���I����+��� .r'����N�d}�j�f�L�OզA^������$��: ���<�W��FHc7l[������c��Su��{F�H q,J7I)��_�%�(�LNy���`�T���F�����l 3x��t��ϓ.@�8�oov��]4�"�aWI$��
data/.gitignore DELETED
@@ -1 +0,0 @@
1
- spec/private.yml
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- rvm:
2
- - ree
3
- - 1.9.2
4
- - 1.9.3
data/Gemfile DELETED
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
- gemspec
3
-
4
- gem "bump"
5
- gem "rake"
6
- gem "rspec", "~>2"
7
- gem "bundler-audit", :github => "grosser/bundler-audit", :branch => "ignore-version", :submodules => true
data/Gemfile.lock DELETED
@@ -1,40 +0,0 @@
1
- GIT
2
- remote: git://github.com/grosser/bundler-audit.git
3
- revision: a2d65124650460f525f62c7302629fee4d697413
4
- branch: ignore-version
5
- submodules: true
6
- specs:
7
- bundler-audit (0.1.3)
8
- bundler (~> 1.2)
9
-
10
- PATH
11
- remote: .
12
- specs:
13
- bundler-organization_audit (0.1.2)
14
- json
15
-
16
- GEM
17
- remote: https://rubygems.org/
18
- specs:
19
- bump (0.3.9)
20
- diff-lcs (1.1.3)
21
- json (1.7.7)
22
- rake (10.0.3)
23
- rspec (2.12.0)
24
- rspec-core (~> 2.12.0)
25
- rspec-expectations (~> 2.12.0)
26
- rspec-mocks (~> 2.12.0)
27
- rspec-core (2.12.2)
28
- rspec-expectations (2.12.1)
29
- diff-lcs (~> 1.1.3)
30
- rspec-mocks (2.12.2)
31
-
32
- PLATFORMS
33
- ruby
34
-
35
- DEPENDENCIES
36
- bump
37
- bundler-audit!
38
- bundler-organization_audit!
39
- rake
40
- rspec (~> 2)
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "bump/tasks"
3
-
4
- task :default do
5
- sh "rspec spec/"
6
- end
data/Readme.md DELETED
@@ -1,92 +0,0 @@
1
- Audit all Gemfiles of a user/organization on Github for unpatched versions
2
-
3
- # simple
4
- gem install bundler-organization_audit
5
-
6
- # if you want --ignore-cve
7
- git clone git://github.com/grosser/bundler-organization_audit.git
8
- cd bundler-organization_audit
9
- bundle update bundler-audit # get new advisories
10
- bundle exec ./bin/bundle-organization-audit ... options ...
11
-
12
- Usage
13
- =====
14
-
15
- ### Public repos
16
- For yourself (git config github.user)
17
- ```Bash
18
- bundle-organization-audit
19
- parallel
20
- No Gemfile.lock found
21
-
22
- parllel_tests
23
- bundle-audit
24
- No unpatched versions found
25
-
26
- rails_example_app
27
- bundle-audit
28
- Name: rack
29
- Version: 1.4.4
30
- CVE: 2013-0263
31
- Criticality: High
32
- URL: http://osvdb.org/show/osvdb/89939
33
- Title: Rack Rack::Session::Cookie Function Timing Attack Remote Code Execution
34
- Patched Versions: ~> 1.1.6, ~> 1.2.8, ~> 1.3.10, ~> 1.4.5, >= 1.5.2
35
-
36
- Vulnerable:
37
- https://github.com/grosser/rails_example_app -- Peter Last Committer <peter@last-commit-email.com>
38
- ```
39
-
40
- For someone else
41
- ```Bash
42
- bundle-organization-audit --user grosser
43
- ```
44
-
45
- Ignore gems (ignores repos that have a %{repo}.gemspec)
46
- ```Bash
47
- bundle-organization-audit --ignore-gems
48
- ```
49
-
50
- Silent: only show vulnerable repos
51
- ```
52
- bundle-organization-audit 2>/dev/null
53
- ```
54
-
55
- CI: ignore old/unmaintained proejcts, unfixable/unimportant cves and gems
56
- ```
57
- bundle-organization-audit \
58
- --ignore https://github.com/xxx/a \
59
- --ignore https://github.com/xxx/b \
60
- --ignore-cve 2013-0269@1.5.3 \
61
- --ignore-cve '2013-0123@~>3.2.10' \
62
- --ignore-cve 2013-0234 \
63
- --ignore-gems \
64
- --organization xxx \
65
- --token yyy
66
- ```
67
-
68
- ### Private repos
69
-
70
- ```Bash
71
- # create a token that has access to your repositories
72
- curl -v -u your-user-name -X POST https://api.github.com/authorizations --data '{"scopes":["repo"]}'
73
- enter your password -> TOKEN
74
-
75
- bundle-organization-audit --user your-user --token TOKEN --organization your-organization
76
- ```
77
-
78
- Related
79
- =======
80
- - [holepicker](https://github.com/jsuder/holepicker) does the same check for local projects and running servers
81
- - [bundler-audit](https://github.com/postmodern/bundler-audit) check a single local project for vulerabilities
82
-
83
- Development
84
- ===========
85
- - test private repo fetching via `cp spec/private{.example,}.yml` and filling it out
86
-
87
- Author
88
- ======
89
- [Michael Grosser](http://grosser.it)<br/>
90
- michael@grosser.it<br/>
91
- License: MIT<br/>
92
- [![Build Status](https://travis-ci.org/grosser/bundler-organization_audit.png)](https://travis-ci.org/grosser/bundler-organization_audit)
@@ -1,21 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
2
- name = "bundler-organization_audit"
3
- require "#{name.gsub("-","/")}/version"
4
-
5
- Gem::Specification.new name, Bundler::OrganizationAudit::VERSION do |s|
6
- s.summary = s.description = "Audit all Gemfiles of a user/organization on github for unpatched versions"
7
- s.authors = ["Michael Grosser"]
8
- s.email = "michael@grosser.it"
9
- s.homepage = "http://github.com/grosser/#{name}"
10
- s.files = `git ls-files`.split("\n")
11
- s.license = "MIT"
12
- key = File.expand_path("~/.ssh/gem-private_key.pem")
13
- if File.exist?(key)
14
- s.signing_key = key
15
- s.cert_chain = ["gem-public_cert.pem"]
16
- else
17
- puts "No signature"
18
- end
19
- s.executables = ["bundle-organization-audit"]
20
- s.add_runtime_dependency "json"
21
- end
data/gem-public_cert.pem DELETED
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDMjCCAhqgAwIBAgIBADANBgkqhkiG9w0BAQUFADA/MRAwDgYDVQQDDAdtaWNo
3
- YWVsMRcwFQYKCZImiZPyLGQBGRYHZ3Jvc3NlcjESMBAGCgmSJomT8ixkARkWAml0
4
- MB4XDTEzMDIwMzE4MTMxMVoXDTE0MDIwMzE4MTMxMVowPzEQMA4GA1UEAwwHbWlj
5
- aGFlbDEXMBUGCgmSJomT8ixkARkWB2dyb3NzZXIxEjAQBgoJkiaJk/IsZAEZFgJp
6
- dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMorXo/hgbUq97+kII9H
7
- MsQcLdC/7wQ1ZP2OshVHPkeP0qH8MBHGg6eYisOX2ubNagF9YTCZWnhrdKrwpLOO
8
- cPLaZbjUjljJ3cQR3B8Yn1veV5IhG86QseTBjymzJWsLpqJ1UZGpfB9tXcsFtuxO
9
- 6vHvcIHdzvc/OUkICttLbH+1qb6rsHUceqh+JrH4GrsJ5H4hAfIdyS2XMK7YRKbh
10
- h+IBu6dFWJJByzFsYmV1PDXln3UBmgAt65cmCu4qPfThioCGDzbSJrGDGLmw/pFX
11
- FPpVCm1zgYSb1v6Qnf3cgXa2f2wYGm17+zAVyIDpwryFru9yF/jJxE38z/DRsd9R
12
- /88CAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUsiNnXHtKeMYYcr4yJVmQ
13
- WONL+IwwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQAlyN7kKo/NQCQ0
14
- AOzZLZ3WAePvStkCFIJ53tsv5Kyo4pMAllv+BgPzzBt7qi605mFSL6zBd9uLou+W
15
- Co3s48p1dy7CjjAfVQdmVNHF3MwXtfC2OEyvSQPi4xKR8iba8wa3xp9LVo1PuLpw
16
- /6DsrChWw74HfsJN6qJOK684hJeT8lBYAUfiC3wD0owoPSg+XtyAAddisR+KV5Y1
17
- NmVHuLtQcNTZy+gRht3ahJRMuC6QyLmkTsf+6MaenwAMkAgHdswGsJztOnNnBa3F
18
- y0kCSWmK6D+x/SbfS6r7Ke07MRqziJdB9GuE1+0cIRuFh8EQ+LN6HXCKM5pon/GU
19
- ycwMXfl0
20
- -----END CERTIFICATE-----
@@ -1,64 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Bundler::OrganizationAudit::Repo do
4
- let(:config){ YAML.load_file("spec/private.yml") }
5
- let(:repo) do
6
- Bundler::OrganizationAudit::Repo.new(
7
- "url" => "https://api.github.com/repos/grosser/parallel"
8
- )
9
- end
10
-
11
- describe ".all" do
12
- it "returns the list of public repositories" do
13
- # use a big account -> make sure pagination works
14
- list = Bundler::OrganizationAudit::Repo.all(:user => "grosser")
15
- list.map(&:url).should include("https://github.com/grosser/parallel")
16
- end
17
-
18
- if File.exist?("spec/private.yml")
19
- it "returns the list of private repositories from a user" do
20
- list = Bundler::OrganizationAudit::Repo.all(:token => config["token"])
21
- list.map(&:url).should include("https://github.com/#{config["user"]}/#{config["expected_user"]}")
22
- end
23
-
24
- it "returns the list of private repositories from a organization" do
25
- list = Bundler::OrganizationAudit::Repo.all(:token => config["token"], :organization => config["organization"])
26
- list.map(&:url).should include("https://github.com/#{config["organization"]}/#{config["expected_organization"]}")
27
- end
28
- end
29
- end
30
-
31
- describe "#last_commiter" do
32
- it "returns nice info" do
33
- repo.last_commiter.should == "grosser <grosser.michael@gmail.com>"
34
- end
35
- end
36
-
37
- describe "#content" do
38
- it "can download a public file" do
39
- repo.content("Gemfile.lock").should include('rspec (2')
40
- end
41
-
42
- if File.exist?("spec/private.yml")
43
- it "can download a private file" do
44
- url = "https://api.github.com/repos/#{config["organization"]}/#{config["expected_organization"]}"
45
- repo = Bundler::OrganizationAudit::Repo.new(
46
- {"url" => url, "private" => true}, config["token"]
47
- )
48
- content = repo.content("Gemfile.lock")
49
- content.should include('i18n (0.')
50
- end
51
- end
52
- end
53
-
54
- describe "#gem?" do
55
- it "is a gem if it has a gemspec" do
56
- repo.should be_gem
57
- end
58
-
59
- it "is not a gem if it has no gemspec" do
60
- Bundler::OrganizationAudit::Repo.new("url" => "https://api.github.com/repos/grosser/dotfiles").should_not be_gem
61
- end
62
- end
63
- end
64
-
@@ -1,117 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Bundler::OrganizationAudit do
4
- it "has a VERSION" do
5
- Bundler::OrganizationAudit::VERSION.should =~ /^[\.\da-z]+$/
6
- end
7
-
8
- describe Bundler::OrganizationAudit do
9
- let(:repo) do
10
- Bundler::OrganizationAudit::Repo.new(
11
- "url" => "https://api.github.com/repos/grosser/parallel"
12
- )
13
- end
14
-
15
- describe ".audit_repo" do
16
- it "audits public repos" do
17
- out = record_out do
18
- Bundler::OrganizationAudit.send(:audit_repo, repo, {})
19
- end
20
- out.strip.should == "parallel\nbundle-audit\nNo unpatched versions found"
21
- end
22
-
23
- it "does not audit ignored repos" do
24
- out = record_out do
25
- Bundler::OrganizationAudit.send(:audit_repo, repo, :ignore_gems => true)
26
- end
27
- out.strip.should == "parallel\nIgnored because it's a gem"
28
- end
29
- end
30
-
31
- describe ".run" do
32
- before do
33
- Bundler::OrganizationAudit.stub(:puts)
34
- end
35
-
36
- it "is successful when failed are empty" do
37
- Bundler::OrganizationAudit.should_receive(:find_vulnerable).and_return([])
38
- record_out do
39
- Bundler::OrganizationAudit.run({}).should == 0
40
- end
41
- end
42
-
43
- it "fails with failed" do
44
- Bundler::OrganizationAudit.should_receive(:find_vulnerable).and_return([repo])
45
- record_out do
46
- Bundler::OrganizationAudit.run({}).should == 1
47
- end
48
- end
49
- end
50
- end
51
-
52
- context "CLI" do
53
- it "can audit a user" do
54
- result = audit("--user anamartinez")
55
- result.should include "I18N-tools\nNo Gemfile.lock found" # did not use audit when not necessary
56
- result.should include "js-cldr-timezones\nbundle-audit\nNo unpatched versions found" # used audit where necessary
57
- end
58
-
59
- it "can audit a unpatched user" do
60
- result = audit("--user user-with-unpatched-apps", :fail => true)
61
- result.should include "unpatched\nbundle-audit\nName: json\nVersion: 1.5.3" # Individual vulnerabilities
62
- result.should include "Vulnerable:\nhttps://github.com/user-with-unpatched-apps/unpatched" # Summary
63
- end
64
-
65
- it "only shows failed projects on stdout" do
66
- result = audit("--user user-with-unpatched-apps 2>/dev/null", :fail => true, :keep_output => true)
67
- result.should == "https://github.com/user-with-unpatched-apps/unpatched -- grosser <grosser.michael@gmail.com>\n"
68
- end
69
-
70
- it "ignores projects in --ignore" do
71
- result = audit("--user user-with-unpatched-apps --ignore https://github.com/user-with-unpatched-apps/unpatched 2>/dev/null", :keep_output => true)
72
- result.should == ""
73
- end
74
-
75
- it "ignores CVEs via --ignore-cve" do
76
- result = audit("--user user-with-unpatched-apps --ignore-cve 2013-0269 2>/dev/null", :keep_output => true)
77
- result.should == ""
78
- end
79
-
80
- it "shows --version" do
81
- audit("--version").should include(Bundler::OrganizationAudit::VERSION)
82
- end
83
-
84
- it "shows --help" do
85
- audit("--help").should include("Audit all Gemfiles")
86
- end
87
-
88
- def audit(command, options={})
89
- sh("bin/bundle-organization-audit #{command}", options)
90
- end
91
-
92
- def sh(command, options={})
93
- result = `#{command} #{"2>&1" unless options[:keep_output]}`
94
- raise "FAILED #{command}\n#{result}" if $?.success? == !!options[:fail]
95
- decolorize(result)
96
- end
97
- end
98
-
99
- def decolorize(string)
100
- string.gsub(/\e\[\d+m/, "")
101
- end
102
-
103
- def record_out
104
- recorder = StringIO.new
105
- $stdout, out = recorder, $stdout
106
- $stderr, err = recorder, $stderr
107
- yield
108
- decolorize(recorder.string)
109
- ensure
110
- $stdout = out
111
- $stderr = err
112
- end
113
-
114
- def in_temp_dir(&block)
115
- Dir.mktmpdir { |dir| Dir.chdir(dir, &block) }
116
- end
117
- end
@@ -1,7 +0,0 @@
1
- token: your-token-see-readme
2
-
3
- user: your-user
4
- expected_user: your-private-repo
5
-
6
- organization: org
7
- expected_organization: org-private-repo
data/spec/spec_helper.rb DELETED
@@ -1,2 +0,0 @@
1
- require "bundler/organization_audit"
2
- require "yaml"
metadata.gz.sig DELETED
Binary file