organization_gem_dependencies 0.1.0 → 0.2.0

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: fb5e5a02cbf5ed813e8420830752b6f2f1341f61
4
- data.tar.gz: ee3ad55b7be9f1d8f2db3263e20c8cb37e4768a0
3
+ metadata.gz: 4417535dea7895998e8e89f8c4c1bce3c00a98ad
4
+ data.tar.gz: d0acb5e478eef3f405cb2e155eb3240534f54b24
5
5
  SHA512:
6
- metadata.gz: 71ab9c48f521b57b7fa7e2c1c0803126d613b99c641999aeb8951dcef3aa72b369b2a550f216bcfa931088dcd266e97aae98192e5458e49e894806d2d3dfe9a0
7
- data.tar.gz: b97283bde770583c62b9dec9a306a02c62b9f6baa241b72b152c7e35de95adbc2314ec93486f84c9b020630bffb8511609551944bf53e91fc559d79b833a978b
6
+ metadata.gz: 712b8fb611a5a7beb8f96fe6916953eb5a0c8027188497e4a0836b0e008671b9f626135b01af2e76f8461b19759beaab133bb2f42b6ddbc4cc9278a927c5b390
7
+ data.tar.gz: 64c6a76d8c24f9e2c9134c65ef2278e3ca257d58407c36dd8c4a42ae0053b48416ee85cc331180fb3cef1848e5688d541587113ae83f0db4bb1106f2c384e8fe
data/README.md CHANGED
@@ -1 +1,99 @@
1
1
  # organization_gem_dependencies
2
+
3
+ This gem installs a command line utility `organization_gem_dependencies`, that
4
+ outputs a json file with a reverse dependency tree.
5
+
6
+
7
+ ## Installation
8
+
9
+ ```sh
10
+ gem install organization_gem_dependencies
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```sh
16
+ organization_gem_dependencies [--direct] GITHUB_ORGANIZATION
17
+ ```
18
+
19
+ For example, running `organization_gem_dependencies -d rails` produces output
20
+ like the following:
21
+
22
+ ```json
23
+ {
24
+ ...,
25
+ "rails": {
26
+ "4.0.0.beta": [
27
+ "routing_concerns/Gemfile.lock"
28
+ ],
29
+ "4.2.10": [
30
+ "rails-docs-server/test/fixtures/releases/v4.2.10/Gemfile.lock"
31
+ ],
32
+ "5.1.1": [
33
+ "actioncable-examples/Gemfile.lock"
34
+ ],
35
+ "5.2.0": [
36
+ "rails-contributors/Gemfile.lock",
37
+ "webpacker/Gemfile.lock"
38
+ ],
39
+ "6.0.0.alpha": [
40
+ "rails/Gemfile.lock"
41
+ ]
42
+ },
43
+ "rails-controller-testing": {
44
+ "1.0.2": [
45
+ "rails-contributors/Gemfile.lock"
46
+ ]
47
+ },
48
+ "rails-dom-testing": {
49
+ "2.0.2": [
50
+ "rails-dom-testing/Gemfile.lock"
51
+ ]
52
+ },
53
+ "rails-perftest": {
54
+ "0.0.7": [
55
+ "rails-perftest/Gemfile.lock"
56
+ ]
57
+ },
58
+ "railties": {
59
+ "4.2.1": [
60
+ "rails-perftest/Gemfile.lock"
61
+ ],
62
+ "5.1.4": [
63
+ "globalid/Gemfile.lock"
64
+ ]
65
+ },
66
+ "rake": {
67
+ "0.9.2.2": [
68
+ "commands/Gemfile.lock",
69
+ "etagger/Gemfile.lock",
70
+ "routing_concerns/Gemfile.lock"
71
+ ],
72
+ "10.0.3": [
73
+ "strong_parameters/Gemfile.lock"
74
+ ],
75
+ "10.0.4": [
76
+ "cache_digests/Gemfile.lock"
77
+ ],
78
+ "10.3.2": [
79
+ "activemodel-globalid/Gemfile.lock"
80
+ ],
81
+ "10.4.2": [
82
+ "jquery-ujs/Gemfile.lock",
83
+ "record_tag_helper/Gemfile.lock"
84
+ ],
85
+ "12.0.0": [
86
+ "rails-docs-server/test/fixtures/releases/v4.2.10/Gemfile.lock",
87
+ "rails-dom-testing/Gemfile.lock"
88
+ ],
89
+ "12.1.0": [
90
+ "globalid/Gemfile.lock"
91
+ ],
92
+ "12.3.1": [
93
+ "rails/Gemfile.lock",
94
+ "webpacker/Gemfile.lock"
95
+ ]
96
+ },
97
+ ...
98
+ }
99
+ ```
@@ -1,3 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'organization_gem_dependencies/cli'
4
+ require 'organization_gem_dependencies/version'
@@ -10,17 +10,25 @@ require 'octokit'
10
10
  module OrganizationGemDependencies
11
11
  # Define the command line interface.
12
12
  class Cli
13
- SEARCH_TERM = 'org:appfolio filename:Gemfile.lock'
13
+ SEARCH_TERM = 'org:%s filename:Gemfile.lock'
14
+ USAGE = <<~USAGE
15
+ Usage: organization_gem_dependencies [options] GITHUB_ORGANIZATION
16
+ USAGE
14
17
 
15
18
  def run
16
19
  parse_options
20
+ if ARGV.size != 1
21
+ STDERR.puts USAGE
22
+ return 1
23
+ end
24
+ github_organization = ARGV[0]
17
25
 
18
26
  access_token = ENV['GITHUB_ACCESS_TOKEN'] || \
19
27
  STDIN.getpass('GitHub Personal Access Token: ')
20
28
  github = Octokit::Client.new(access_token: access_token)
21
29
 
22
30
  gems = {}
23
- gemfiles(github) do |gemfile|
31
+ gemfiles(github, github_organization) do |gemfile|
24
32
  STDERR.puts "Processing #{gemfile.repository.name}/#{gemfile.path}"
25
33
  content = nil
26
34
  sleep_time = 0
@@ -45,8 +53,8 @@ module OrganizationGemDependencies
45
53
 
46
54
  private
47
55
 
48
- def gemfiles(github)
49
- github.search_code(SEARCH_TERM, per_page: 1000)
56
+ def gemfiles(github, organization)
57
+ github.search_code(SEARCH_TERM % organization, per_page: 1000)
50
58
  last_response = github.last_response
51
59
 
52
60
  matches = last_response.data.items
@@ -91,9 +99,7 @@ module OrganizationGemDependencies
91
99
  def parse_options
92
100
  @options = { direct: false }
93
101
  OptionParser.new do |config|
94
- config.banner = <<~USAGE
95
- Usage: organization_gem_dependencies [options]
96
- USAGE
102
+ config.banner = USAGE
97
103
  config.on('-d', '--direct',
98
104
  'Consider only direct dependencies.') do |direct|
99
105
  @options[:direct] = direct
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OrganizationGemDependencies
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: organization_gem_dependencies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryce Boe
@@ -92,5 +92,5 @@ rubyforge_project:
92
92
  rubygems_version: 2.6.14
93
93
  signing_key:
94
94
  specification_version: 4
95
- summary: Discover all ruby gem depedencies for a github organization.
95
+ summary: Discover all ruby gem dependencies for a github organization.
96
96
  test_files: []