cerebro 0.1.0
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 +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +91 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/cerebro.gemspec +28 -0
- data/exe/cerebro +7 -0
- data/lib/cerebro.rb +11 -0
- data/lib/cerebro/command.rb +24 -0
- data/lib/cerebro/command/clean.rb +48 -0
- data/lib/cerebro/command/search.rb +94 -0
- data/lib/cerebro/searcher.rb +30 -0
- data/lib/cerebro/version.rb +3 -0
- metadata +144 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 300c56ecf7b5ccc38151ec5383dcf467a7f7c260
|
4
|
+
data.tar.gz: 2269ee2bb942a2cedcd6bad1d5db275c5fb2eb15
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fcb68614992bba5d6c69343878a36bba36bb01ab06a1129fbbc3c0c2f3474f1bb7d566d3f0ea0f6b4f2a0cb23dabc1450be99c6a2a7b1541c09fff258dd8fe95
|
7
|
+
data.tar.gz: 273930a5f25475a54dd43de1e219cb3f00579ac4ed700630620fc81e2d882016f88d646df1867cedf70b83817257377574ee3d433f9efd5caf02d6cd109963b5
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 cortelyou
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# Cerebro
|
2
|
+
|
3
|
+
Search through github forks of a repo for search terms!
|
4
|
+
Great for maintainers that want to know what downstream forks are doing.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Install it with:
|
9
|
+
|
10
|
+
```bash
|
11
|
+
$ gem install cerebro
|
12
|
+
```
|
13
|
+
|
14
|
+
## Details
|
15
|
+
|
16
|
+
Cerebro currently works by using the Github API to identify all the forks of the
|
17
|
+
repo if interest. It then will clone all the repos down into a specifically named
|
18
|
+
repo under the `$HOME/.cerebro` directory. It will then use grep searching to
|
19
|
+
determine if your search term is present in each/which of the forks.
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
- Cloning down of the repos will be shallow by default. If you want deep clones, use `cerebro search --deep`.
|
24
|
+
|
25
|
+
####Searching:
|
26
|
+
|
27
|
+
- To clean up all repos that Cerebro has cloned onto your local file system:
|
28
|
+
|
29
|
+
```bash
|
30
|
+
$ GITHUB_TOKEN=<github_api_token> cerebro search <repo_owner> <repo_name> <search_term>
|
31
|
+
```
|
32
|
+
|
33
|
+
For example, if I'm looking to determine how many forks of the [Cloud Foundry python buildpack](https://github.com/cloudfoundry/python-buildpack)
|
34
|
+
have been forked to add or use `graphviz`, I might run:
|
35
|
+
|
36
|
+
```
|
37
|
+
GITHUB_TOKEN=<github_token> cerebro search cloudfoundry python-buildpack graphviz
|
38
|
+
Found 85 forks of cloudfoundry/python-buildpack
|
39
|
+
All forks will be stored in /Users/user/.cerebro/python-buildpack-forks
|
40
|
+
Cloning or updating all local fork repos...
|
41
|
+
<...>
|
42
|
+
Searching through these forks now...
|
43
|
+
|
44
|
+
----------------Search Results---------------------
|
45
|
+
Found graphviz in kdunn-pivotal-python-buildpack
|
46
|
+
Found graphviz in ssssam-python-buildpack
|
47
|
+
|
48
|
+
Found "graphviz" in 2 forks out of total 85 forks of cloudfoundry/python-buildpack
|
49
|
+
|
50
|
+
Clones of forked repos are located in /Users/user/.cerebro/python-buildpack-forks
|
51
|
+
```
|
52
|
+
|
53
|
+
####Cleaning Up:
|
54
|
+
|
55
|
+
- To clean up all repos that Cerebro has cloned onto your local file system:
|
56
|
+
|
57
|
+
```bash
|
58
|
+
$ cerebro clean --all
|
59
|
+
```
|
60
|
+
|
61
|
+
- To clean up only the repos that are forks for a specific repo:
|
62
|
+
|
63
|
+
```bash
|
64
|
+
$ cerebro clean <repo-name>
|
65
|
+
```
|
66
|
+
|
67
|
+
## Dependencies
|
68
|
+
|
69
|
+
- This gem relies on `git` for cloning down forks of repos.
|
70
|
+
- This gem currently relies on $HOME being set on your machine for figuring out where to store cloned repos.
|
71
|
+
- This gem's searching for forks relies on the user providing a valid Github API token via
|
72
|
+
`GITHUB_TOKEN` env vars. This token is not persisted or stored at all.
|
73
|
+
|
74
|
+
## Contributing
|
75
|
+
|
76
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/RochesterinNYC/cerebro or in https://cloudfoundry.slack.com/messages/buildpacks/.
|
77
|
+
|
78
|
+
## Later Work
|
79
|
+
|
80
|
+
- Make dirnames specific to owner and repo name instead of just repo name
|
81
|
+
- Command for cleaning up stored repos
|
82
|
+
- Specify where to store cloned repos
|
83
|
+
- Option for auto-clean up afterwards
|
84
|
+
- Better UX for specifying github auth
|
85
|
+
- Remove dependency on octokit
|
86
|
+
- Threading for parallel cloning
|
87
|
+
- Search caching?
|
88
|
+
|
89
|
+
## License
|
90
|
+
|
91
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "cerebro"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/cerebro.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'cerebro/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "cerebro"
|
8
|
+
spec.version = Cerebro::VERSION
|
9
|
+
spec.authors = ["James Wen"]
|
10
|
+
spec.email = ["jrw2175@columbia.edu"]
|
11
|
+
|
12
|
+
spec.summary = "A tool for searching through forks of github repos for information."
|
13
|
+
spec.description = "Description"
|
14
|
+
spec.homepage = ""
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = ["cerebro"]
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_runtime_dependency 'claide', '>= 1.0.0', '< 2.0'
|
23
|
+
spec.add_runtime_dependency 'octokit', '>= 4.0.0', '< 5.0'
|
24
|
+
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
26
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
28
|
+
end
|
data/exe/cerebro
ADDED
data/lib/cerebro.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require "cerebro/version"
|
2
|
+
|
3
|
+
module Cerebro
|
4
|
+
autoload :Command, 'cerebro/command'
|
5
|
+
autoload :Searcher, 'cerebro/searcher'
|
6
|
+
|
7
|
+
def self.storage_directory
|
8
|
+
home_dir = ENV.fetch('HOME', nil)
|
9
|
+
home_dir.empty? ? nil : File.join(home_dir, ".cerebro")
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'claide'
|
2
|
+
|
3
|
+
module Cerebro
|
4
|
+
class Command < CLAide::Command
|
5
|
+
require 'cerebro/command/search'
|
6
|
+
require 'cerebro/command/clean'
|
7
|
+
|
8
|
+
def self.run(argv)
|
9
|
+
super(argv)
|
10
|
+
end
|
11
|
+
|
12
|
+
def validate!
|
13
|
+
super
|
14
|
+
|
15
|
+
if !Cerebro.storage_directory
|
16
|
+
puts <<-HELP
|
17
|
+
You don't have $HOME set.
|
18
|
+
Cerebro currently relies on storing cloned fork repos in your home directory.
|
19
|
+
HELP
|
20
|
+
exit 1
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Cerebro
|
4
|
+
class Command
|
5
|
+
class Clean < Command
|
6
|
+
self.summary = 'Clean locally stored github repo forks'
|
7
|
+
self.description = <<-DESC
|
8
|
+
Clean up the repos that you've cloned down via searches
|
9
|
+
DESC
|
10
|
+
|
11
|
+
def initialize(argv)
|
12
|
+
@clean_specs = argv.arguments
|
13
|
+
@repo = argv.shift_argument
|
14
|
+
@clean_all = argv.flag?('all')
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.options
|
19
|
+
[
|
20
|
+
['--all', 'Clean all locally cloned repos used by Cerebro'],
|
21
|
+
].concat(super).reject { |(name, _)| name == '--no-all' }
|
22
|
+
end
|
23
|
+
|
24
|
+
def validate!
|
25
|
+
super
|
26
|
+
|
27
|
+
if !@clean_all && @clean_specs.length != 1
|
28
|
+
help = <<-HELP
|
29
|
+
Usage: cerebro clean <repo_name>
|
30
|
+
HELP
|
31
|
+
help! help
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def run
|
36
|
+
if @clean_all
|
37
|
+
FileUtils.rm_rf("#{Cerebro.storage_directory}/.")
|
38
|
+
puts "Cleaned up all local clones created by Cerebro"
|
39
|
+
else
|
40
|
+
Dir.chdir(Cerebro.storage_directory) do
|
41
|
+
FileUtils.rm_rf("#{@repo}-forks")
|
42
|
+
end
|
43
|
+
puts "Cleaned up all local clones of #{@repo} forks created by Cerebro"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'octokit'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'cerebro/searcher'
|
4
|
+
|
5
|
+
module Cerebro
|
6
|
+
class Command
|
7
|
+
class Search < Command
|
8
|
+
self.summary = 'Search through github repo forks'
|
9
|
+
self.description = <<-DESC
|
10
|
+
Search through forks of the specified repo for a search term
|
11
|
+
DESC
|
12
|
+
|
13
|
+
def initialize(argv)
|
14
|
+
@search_specs = argv.arguments
|
15
|
+
@owner = argv.shift_argument
|
16
|
+
@repo = argv.shift_argument
|
17
|
+
@search_term = argv.shift_argument
|
18
|
+
@deep_clone = argv.flag?('deep')
|
19
|
+
@github_token = ENV.fetch('GITHUB_TOKEN', nil)
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.options
|
24
|
+
[
|
25
|
+
['--deep', 'Use full git cloning instead of shallow clones'],
|
26
|
+
].concat(super).reject { |(name, _)| name == '--no-deep' }
|
27
|
+
end
|
28
|
+
|
29
|
+
def validate!
|
30
|
+
super
|
31
|
+
|
32
|
+
if @search_specs.length != 3
|
33
|
+
help = <<-HELP
|
34
|
+
Usage: GITHUB_TOKEN=<github_token> cerebro search <repo_owner> <repo_name> <search_term>
|
35
|
+
HELP
|
36
|
+
help! help
|
37
|
+
end
|
38
|
+
if !@github_token
|
39
|
+
puts <<-HELP
|
40
|
+
Please specify or pass in GITHUB_TOKEN as an environment variable.
|
41
|
+
Usage: GITHUB_TOKEN=<github_token> cerebro search <repo_owner> <repo_name> <search_term>
|
42
|
+
HELP
|
43
|
+
exit 1
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def run
|
48
|
+
# Setup Github API
|
49
|
+
Octokit.auto_paginate = true
|
50
|
+
Octokit.configure do |c|
|
51
|
+
c.access_token = @github_token
|
52
|
+
end
|
53
|
+
|
54
|
+
full_repo_name = "#{@owner}/#{@repo}"
|
55
|
+
forks_with_term = []
|
56
|
+
|
57
|
+
# Get all forks
|
58
|
+
forks = Octokit.forks(full_repo_name)
|
59
|
+
forks_directory = File.join(Cerebro.storage_directory, "#{@repo}-forks")
|
60
|
+
FileUtils.mkdir_p forks_directory
|
61
|
+
|
62
|
+
Dir.chdir(forks_directory) do
|
63
|
+
puts "Found #{forks.count} forks of #{full_repo_name}"
|
64
|
+
puts "All forks will be stored in #{forks_directory}"
|
65
|
+
puts "Cloning or updating all local fork repos..."
|
66
|
+
forks.each do |git_fork|
|
67
|
+
forked_dir = File.join(forks_directory, "#{git_fork.owner.login}-#{git_fork.name}")
|
68
|
+
if Dir.exists?(forked_dir)
|
69
|
+
Dir.chdir(forked_dir) do
|
70
|
+
`git pull -r`
|
71
|
+
end
|
72
|
+
else
|
73
|
+
shallow = @deep_clone ? "" : "--depth 1"
|
74
|
+
`git clone #{shallow} #{git_fork.ssh_url} #{forked_dir}`
|
75
|
+
end
|
76
|
+
end
|
77
|
+
puts "Searching through these forks now..."
|
78
|
+
forks_with_term = Searcher.find(forks_directory, @search_term)
|
79
|
+
end
|
80
|
+
puts <<-RESULTS
|
81
|
+
|
82
|
+
----------------Search Results---------------------
|
83
|
+
RESULTS
|
84
|
+
forks_with_term.each do |repo_identifier|
|
85
|
+
puts "Found #{@search_term} in #{repo_identifier}"
|
86
|
+
end
|
87
|
+
puts
|
88
|
+
puts "Found \"#{@search_term}\" in #{forks_with_term.count} forks out of total #{forks.count} forks of #{full_repo_name}"
|
89
|
+
puts
|
90
|
+
puts "Clones of forked repos are located in #{forks_directory}"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Cerebro
|
2
|
+
class Searcher
|
3
|
+
attr_accessor :forks_dir
|
4
|
+
attr_accessor :search_term
|
5
|
+
|
6
|
+
def self.find(forks_dir, search_term)
|
7
|
+
new(forks_dir, search_term).matched_forks
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(forks_dir, search_term)
|
11
|
+
@forks_dir = forks_dir
|
12
|
+
@search_term = search_term
|
13
|
+
end
|
14
|
+
|
15
|
+
def matched_forks
|
16
|
+
forks_with_term = []
|
17
|
+
Dir.chdir(@forks_dir) do
|
18
|
+
Dir["*"].each do |fork_dir|
|
19
|
+
forks_with_term << fork_dir if search_in_fork(fork_dir)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
forks_with_term
|
23
|
+
end
|
24
|
+
|
25
|
+
def search_in_fork(fork_dir)
|
26
|
+
`grep -IR '#{@search_term}' #{fork_dir}`
|
27
|
+
$?.success?
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cerebro
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Wen
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-06-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: claide
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.0
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.0
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: octokit
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 4.0.0
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '5.0'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 4.0.0
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '5.0'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: bundler
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.12'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '1.12'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rake
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '10.0'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '10.0'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rspec
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '3.0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '3.0'
|
95
|
+
description: Description
|
96
|
+
email:
|
97
|
+
- jrw2175@columbia.edu
|
98
|
+
executables:
|
99
|
+
- cerebro
|
100
|
+
extensions: []
|
101
|
+
extra_rdoc_files: []
|
102
|
+
files:
|
103
|
+
- ".gitignore"
|
104
|
+
- ".rspec"
|
105
|
+
- ".travis.yml"
|
106
|
+
- Gemfile
|
107
|
+
- LICENSE.txt
|
108
|
+
- README.md
|
109
|
+
- Rakefile
|
110
|
+
- bin/console
|
111
|
+
- bin/setup
|
112
|
+
- cerebro.gemspec
|
113
|
+
- exe/cerebro
|
114
|
+
- lib/cerebro.rb
|
115
|
+
- lib/cerebro/command.rb
|
116
|
+
- lib/cerebro/command/clean.rb
|
117
|
+
- lib/cerebro/command/search.rb
|
118
|
+
- lib/cerebro/searcher.rb
|
119
|
+
- lib/cerebro/version.rb
|
120
|
+
homepage: ''
|
121
|
+
licenses:
|
122
|
+
- MIT
|
123
|
+
metadata: {}
|
124
|
+
post_install_message:
|
125
|
+
rdoc_options: []
|
126
|
+
require_paths:
|
127
|
+
- lib
|
128
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
requirements: []
|
139
|
+
rubyforge_project:
|
140
|
+
rubygems_version: 2.6.3
|
141
|
+
signing_key:
|
142
|
+
specification_version: 4
|
143
|
+
summary: A tool for searching through forks of github repos for information.
|
144
|
+
test_files: []
|