gem-miner 1.0.0 → 1.0.1

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: 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