ruby_chopped 0.0.4 → 0.0.6
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.
- data/README +12 -4
- data/bin/ruby_chopped +10 -1
- data/lib/ruby_chopped.rb +57 -10
- data/lib/ruby_chopped/version.rb +1 -1
- metadata +9 -5
data/README
CHANGED
@@ -6,15 +6,22 @@ Usage
|
|
6
6
|
|
7
7
|
gem install ruby_chopped
|
8
8
|
|
9
|
-
then
|
9
|
+
then to create a new basket that pull 2 of the 50 most popular gems on rubygems.org
|
10
10
|
|
11
11
|
ruby_chopped --name whyday_basket
|
12
12
|
|
13
|
-
|
13
|
+
|
14
|
+
or to get more than 2 gems
|
14
15
|
|
15
16
|
ruby_chopped -n whyday_basket2 --limit 4
|
16
17
|
|
17
|
-
|
18
|
+
|
19
|
+
or to choose from your locally installed gems instead of rubygems.org
|
20
|
+
|
21
|
+
ruby_chopped -n whyday_basket2 --installed
|
22
|
+
|
23
|
+
|
24
|
+
or to view more of the great options
|
18
25
|
|
19
26
|
ruby_chopped
|
20
27
|
|
@@ -25,4 +32,5 @@ markmcspadden
|
|
25
32
|
|
26
33
|
badboy
|
27
34
|
agile
|
28
|
-
smnickerson
|
35
|
+
smnickerson
|
36
|
+
jwarzech
|
data/bin/ruby_chopped
CHANGED
@@ -6,16 +6,25 @@ require 'optparse'
|
|
6
6
|
|
7
7
|
@options = {}
|
8
8
|
parser = OptionParser.new do |o|
|
9
|
+
# Option: Set Name
|
9
10
|
o.on('-n', '--name [name]', 'name of project to create') do |n|
|
10
11
|
@options[:name] = n
|
11
12
|
end
|
13
|
+
# Option: Force overwrite
|
12
14
|
o.on('-f', '--force', 'force overwriting existing project') do
|
13
15
|
@options[:force] = true
|
14
16
|
end
|
15
|
-
|
16
17
|
o.on('-l', '--limit [limit]', 'number of gems to add to the basket') do |l|
|
17
18
|
@options[:limit] = l
|
18
19
|
end
|
20
|
+
# Option: Select only from locally installed gems
|
21
|
+
o.on('-i', '--installed', 'only select gems that are locally installed') do
|
22
|
+
@options[:installed_gems] = true
|
23
|
+
end
|
24
|
+
# Option: Select from all gems
|
25
|
+
o.on('-a', '--all', 'select from all existing gems') do
|
26
|
+
@options[:all_gems] = true
|
27
|
+
end
|
19
28
|
end
|
20
29
|
parser.parse!
|
21
30
|
|
data/lib/ruby_chopped.rb
CHANGED
@@ -6,6 +6,16 @@ module RubyChopped
|
|
6
6
|
extend self
|
7
7
|
|
8
8
|
def create(opts={})
|
9
|
+
|
10
|
+
# Set pool of gems to fetch from
|
11
|
+
if opts[:installed_gems]
|
12
|
+
@gem_pool = :installed
|
13
|
+
elsif opts[:all_gems]
|
14
|
+
@gem_pool = :all
|
15
|
+
else
|
16
|
+
@gem_pool = :popular
|
17
|
+
end
|
18
|
+
|
9
19
|
folder = opts[:name]
|
10
20
|
if File.exist?(folder)
|
11
21
|
unless opts[:force]
|
@@ -38,14 +48,21 @@ module RubyChopped
|
|
38
48
|
|
39
49
|
gems = random_gems(limit)
|
40
50
|
gems.each do |g|
|
41
|
-
#
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
51
|
+
# Fetch detailed information for selected gems
|
52
|
+
info_json = JSON.parse(RestClient.get("http://rubygems.org/api/v1/gems/#{g}.json", :accepts => :json))
|
53
|
+
number = info_json["version"]
|
54
|
+
summary = info_json["info"].gsub("\n","\n# ")
|
55
|
+
project_uri = info_json["project_uri"]
|
56
|
+
documentation_uri = info_json["documentation_uri"]
|
57
|
+
wiki_uri = info_json["wiki_uri"]
|
58
|
+
mailing_list_uri = info_json["mailing_list_uri"]
|
46
59
|
|
47
|
-
gas << "# #{
|
48
|
-
gas << "
|
60
|
+
gas << "# #{g}: #{summary}"
|
61
|
+
gas << "# - Project page: #{project_uri}" unless project_uri.nil? || project_uri.empty?
|
62
|
+
gas << "# - Documentation: #{documentation_uri}" unless documentation_uri.nil? || documentation_uri.empty?
|
63
|
+
gas << "# - Wiki: #{wiki_uri}" unless wiki_uri.nil? || wiki_uri.empty?
|
64
|
+
gas << "# - Mailing List: #{mailing_list_uri}" unless mailing_list_uri.nil? || mailing_list_uri.empty?
|
65
|
+
gas << "gem \"#{g}\", \"#{number}\""
|
49
66
|
gas << ""
|
50
67
|
end
|
51
68
|
|
@@ -68,7 +85,7 @@ module RubyChopped
|
|
68
85
|
g = gems.delete_at(rand(gems.size))
|
69
86
|
|
70
87
|
# Skip bundler and rails
|
71
|
-
if g.
|
88
|
+
if g.match(/bundler|rails/)
|
72
89
|
pick_gems(gems, 1).first
|
73
90
|
else
|
74
91
|
g
|
@@ -77,8 +94,38 @@ module RubyChopped
|
|
77
94
|
end
|
78
95
|
|
79
96
|
def fetch_gems
|
80
|
-
|
81
|
-
|
97
|
+
case @gem_pool
|
98
|
+
when :installed
|
99
|
+
fetch_local_gems
|
100
|
+
when :all
|
101
|
+
fetch_all_gems
|
102
|
+
when :popular
|
103
|
+
fetch_popular_gems
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def fetch_all_gems
|
108
|
+
puts "This might take awhile..."
|
109
|
+
gems = Array.new
|
110
|
+
gem_list = `gem list --remote`
|
111
|
+
|
112
|
+
gem_list.split("\n").each { |g| gems << g.split(' ').first }
|
82
113
|
gems
|
83
114
|
end
|
115
|
+
|
116
|
+
def fetch_local_gems
|
117
|
+
gems = Array.new
|
118
|
+
gem_list = `gem list`
|
119
|
+
|
120
|
+
gem_list.split("\n").each { |g| gems << g.split(' ').first }
|
121
|
+
gems
|
122
|
+
end
|
123
|
+
|
124
|
+
def fetch_popular_gems
|
125
|
+
gems = Array.new
|
126
|
+
gems_json = JSON.parse(RestClient.get("http://rubygems.org/api/v1/downloads/top.json", :accepts => :json))
|
127
|
+
|
128
|
+
gems_json["gems"].each { |g| gems << g.first["full_name"].split(/-\d\.\d\.\d/).first }
|
129
|
+
gems.uniq!
|
130
|
+
end
|
84
131
|
end
|
data/lib/ruby_chopped/version.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_chopped
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Mark McSpadden
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2011-08-
|
18
|
+
date: 2011-08-26 00:00:00 -05:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
@@ -25,6 +26,7 @@ dependencies:
|
|
25
26
|
requirements:
|
26
27
|
- - "="
|
27
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 9
|
28
30
|
segments:
|
29
31
|
- 1
|
30
32
|
- 6
|
@@ -64,6 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
64
66
|
requirements:
|
65
67
|
- - ">="
|
66
68
|
- !ruby/object:Gem::Version
|
69
|
+
hash: 3
|
67
70
|
segments:
|
68
71
|
- 0
|
69
72
|
version: "0"
|
@@ -72,13 +75,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
75
|
requirements:
|
73
76
|
- - ">="
|
74
77
|
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
75
79
|
segments:
|
76
80
|
- 0
|
77
81
|
version: "0"
|
78
82
|
requirements: []
|
79
83
|
|
80
84
|
rubyforge_project: ruby_chopped
|
81
|
-
rubygems_version: 1.
|
85
|
+
rubygems_version: 1.5.2
|
82
86
|
signing_key:
|
83
87
|
specification_version: 3
|
84
88
|
summary: Creates a ruby project with two random gems
|