gem-miner 1.0.0 → 1.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4acfe8bf3640a218566752d209c0ec69dbf0665d
4
- data.tar.gz: 6fe3c2965609073a8777875ecca05dde2cb61c9f
3
+ metadata.gz: 45b783b580304695597d60a41c305c62e87852c5
4
+ data.tar.gz: 55e39dd7c73c4537b24bf5d16224316c656c7b6b
5
5
  SHA512:
6
- metadata.gz: c50059c70f09a70cbee8d212d22f9e34610a723100a5132fbac7fad70816b7761532c3c82a78556f228bfca5d6575dc10a9c820ff4aa5e98f6bd40c7b2d31b56
7
- data.tar.gz: 2aa3365629d0780671ad8c4f6743230107e4f03a7ede10c376debb915b517636f7d822975bfc68946896b9eab9aa4563e8a9858bfa8ff90a8614503a38de7eae
6
+ metadata.gz: de7ef4b644f140c372fe5dea92b62868c5976bf04cff77463f1dc67f7a3ac22fa755badfba4c9228f2244e7e901f4e0522d8a49d3af8c893cea9873f8b18b262
7
+ data.tar.gz: 7855ded7681ebb9a728b3a7398440be90b52f76c59737b1f34442a01eee1ddf108cb57900299a5807d5115957e0245a3bf6e9d68d2df5df5307bd24eda6993e1
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # GemMiner
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/gem-miner.svg)](https://badge.fury.io/rb/gem-miner)
3
4
  [![Build Status](https://travis-ci.org/reevoo/gem-miner.svg?branch=master)](https://travis-ci.org/reevoo/gem-miner)
4
-
5
5
  [![Code Climate](https://codeclimate.com/github/reevoo/gem-miner/badges/gpa.svg)](https://codeclimate.com/github/reevoo/gem-miner)
6
6
 
7
7
 
@@ -8,8 +8,11 @@ module GemMiner
8
8
  class Miner
9
9
  include Logger
10
10
 
11
- def self.gems_for(*args)
12
- new(*args).gems
11
+ GEMFILE_REGEX = /gem[\s]+([^\n\;]+)/
12
+ GEMSPEC_REGEX = /dependency[\s]+([^\n\;]+)/
13
+
14
+ def self.gems_for(github_search_query, github_token)
15
+ new(github_search_query, GithubClient.new(github_token)).gems
13
16
  end
14
17
 
15
18
  def initialize(github_search_query, github_client = GithubClient.new)
@@ -37,8 +40,8 @@ module GemMiner
37
40
  # ...
38
41
  # }
39
42
  def collect_gems!
40
- gemfiles = parse_gemfiles
41
- gemspecs = parse_gemspecs
43
+ gemfiles = parse_sources('Gemfile', GEMFILE_REGEX)
44
+ gemspecs = parse_sources('gemspec', GEMSPEC_REGEX)
42
45
 
43
46
  gems = merge_hashes(gemfiles, gemspecs)
44
47
 
@@ -50,45 +53,24 @@ module GemMiner
50
53
  end
51
54
 
52
55
  # Collects all of the gemfiles for all Reevoo repositories.
53
- # Returns a dictionary with the gem as the key and an array of repositories as
54
- # values.
55
- def parse_gemfiles
56
- results = search("filename:Gemfile #{@github_search_query}")
57
-
58
- log "Parsing #{results.count} gemfiles"
59
- gemfiles = results.reduce({}) do |memo, result|
60
- # We might have more than one Gemfile in a repository...
61
- memo[name_of(result)] ||= []
62
- memo[name_of(result)] += extract_gemfile(result[:content])
56
+ # Returns a dictionary with the gem as the key and an array of repositories
57
+ # as values.
58
+ def parse_sources(filename, regex)
59
+ results = search("filename:#{filename} #{@github_search_query}")
60
+ log "Parsing #{results.count} #{filename}s"
61
+ files = results.reduce({}) do |memo, result|
62
+ # We might have more than one dep file in a repository...
63
+ memo[result[:name]] ||= []
64
+ memo[result[:name]] += extract_deps(result[:content], regex)
63
65
  log '.'
64
66
  memo
65
67
  end
66
68
  log "done!\n"
67
- gemfiles
68
- end
69
-
70
- GEM_REGEX = /gem[\s]+([^\n\;]+)/
71
- def extract_gemfile(gemfile)
72
- gemfile.gsub(/\"/, '\'').scan(GEM_REGEX).flatten
69
+ files
73
70
  end
74
71
 
75
- def parse_gemspecs
76
- results = search("filename:gemspec #{@github_search_query}")
77
- log "Parsing #{results.count} gemspecs"
78
- gemspecs = results.reduce({}) do |memo, result|
79
- # We might have more than one Gemfile in a repository...
80
- memo[name_of(result)] ||= []
81
- memo[name_of(result)] += extract_gemspec(result[:content])
82
- log '.'
83
- memo
84
- end
85
- log "done!\n"
86
- gemspecs
87
- end
88
-
89
- GEMSPEC_REGEX = /dependency[\s]+([^\n\;]+)/
90
- def extract_gemspec(gemspec)
91
- gemspec.gsub(/\"/, '\'').scan(GEMSPEC_REGEX).flatten
72
+ def extract_deps(file, regex)
73
+ file.gsub(/\"/, '\'').scan(regex).flatten
92
74
  end
93
75
 
94
76
  def search(query)
@@ -101,7 +83,7 @@ module GemMiner
101
83
  # h2 = { b: [1, 3], c: [1, 2, 3] }
102
84
  # merge_hashes(h1, h2) # => { a: [1, 2, 3], b: [1, 2, 3, 4], c: [1, 2, 3] }
103
85
  #
104
- # From http://stackoverflow.com/questions/11171834/merging-ruby-hash-with-array-of-values-into-another-hash-with-array-of-values
86
+ # From http://stackoverflow.com/questions/11171834
105
87
  def merge_hashes(hash1, hash2)
106
88
  hash1.merge(hash2) { |key, oldval, newval| (oldval | newval) }
107
89
  end
@@ -1,3 +1,3 @@
1
1
  module GemMiner
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-miner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reevoo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-02 00:00:00.000000000 Z
11
+ date: 2015-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit