runcoderun-gem_sync 0.5.15 → 1.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.
- data/.gitignore +1 -0
- data/LICENSE +22 -0
- data/README.txt +1 -1
- data/Rakefile +17 -12
- data/VERSION +1 -0
- data/bin/gem_sync +5 -3
- data/examples/example_helper.rb +30 -0
- data/examples/rcr/gem_parser_example.rb +121 -0
- data/examples/rcr/gem_sync_example.rb +100 -0
- data/examples/rcr/option_parsing_example.rb +22 -0
- data/gem_sync.gemspec +46 -18
- data/lib/rcr/gem_parser.rb +42 -0
- data/lib/rcr/gem_sync.rb +64 -82
- data/lib/rcr/option_parsing.rb +35 -0
- data/lib/runcoderun_gems.txt +80 -72
- metadata +33 -28
- data/spec/gem_sync_spec.rb +0 -139
data/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pkg
|
data/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2008 Relevance, Inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
|
4
|
+
obtaining a copy of this software and associated documentation
|
|
5
|
+
files (the "Software"), to deal in the Software without
|
|
6
|
+
restriction, including without limitation the rights to use,
|
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the
|
|
9
|
+
Software is furnished to do so, subject to the following
|
|
10
|
+
conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be
|
|
13
|
+
included in all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README.txt
CHANGED
|
@@ -14,7 +14,7 @@ sudo gem install runcoderun-gem_sync --source http://gems.github.com
|
|
|
14
14
|
|
|
15
15
|
(The MIT License)
|
|
16
16
|
|
|
17
|
-
Copyright (c)
|
|
17
|
+
Copyright (c) 2009 Relevance, Inc.
|
|
18
18
|
|
|
19
19
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
20
20
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
require 'rubygems'
|
|
2
|
-
require '
|
|
3
|
-
require './lib/rcr/gem_sync.rb'
|
|
4
|
-
gem "spicycode-micronaut"
|
|
5
|
-
require 'micronaut'
|
|
2
|
+
require 'rake'
|
|
6
3
|
require 'micronaut/rake_task'
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
begin
|
|
6
|
+
require 'jeweler'
|
|
7
|
+
Jeweler::Tasks.new do |gem|
|
|
8
|
+
gem.name = "gem_sync"
|
|
9
|
+
gem.summary = %Q{gem_sync}
|
|
10
|
+
gem.description = %Q{Tool to install rubygems for RunCodeRun, though it could be used to bootstrap your own machines as well.}
|
|
11
|
+
gem.email = "rob@runcoderun.com"
|
|
12
|
+
gem.homepage = "http://github.com/runcoderun/gem_sync"
|
|
13
|
+
gem.authors = ["Rob Sanheim"]
|
|
14
|
+
gem.add_development_dependency "spicycode-micronaut"
|
|
15
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
|
16
|
+
end
|
|
17
|
+
rescue LoadError
|
|
18
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
Micronaut::RakeTask.new(:examples)
|
|
@@ -31,3 +34,5 @@ desc 'Load the library in an IRB session'
|
|
|
31
34
|
task :console do
|
|
32
35
|
sh %(irb -r lib/rcr/gem_sync.rb)
|
|
33
36
|
end
|
|
37
|
+
|
|
38
|
+
task :default => [:check_dependencies, :examples]
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.1.0
|
data/bin/gem_sync
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
-
|
|
2
|
+
lib_path = File.join(File.dirname(__FILE__), *%w[.. lib])
|
|
3
|
+
$LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
require 'rcr/gem_sync'
|
|
6
|
+
|
|
7
|
+
Rcr::GemSync.new(ARGV).sync
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
lib_path = File.expand_path(File.dirname(__FILE__) + "/../lib")
|
|
2
|
+
$LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
|
|
3
|
+
|
|
4
|
+
require 'rubygems'
|
|
5
|
+
gem "spicycode-micronaut"
|
|
6
|
+
gem "mocha"
|
|
7
|
+
require 'micronaut'
|
|
8
|
+
require 'mocha'
|
|
9
|
+
require 'log_buddy'
|
|
10
|
+
require 'rcr/gem_sync'
|
|
11
|
+
|
|
12
|
+
LogBuddy.init
|
|
13
|
+
|
|
14
|
+
def not_in_editor?
|
|
15
|
+
['TM_MODE', 'EMACS', 'VIM'].all? { |k| !ENV.has_key?(k) }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def in_runcoderun?
|
|
19
|
+
ENV["RUN_CODE_RUN"]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Micronaut.configure do |c|
|
|
23
|
+
c.formatter = :documentation if in_runcoderun?
|
|
24
|
+
c.alias_example_to :fit, :focused => true
|
|
25
|
+
c.alias_example_to :xit, :disabled => true
|
|
26
|
+
c.mock_with :mocha
|
|
27
|
+
c.color_enabled = not_in_editor?
|
|
28
|
+
c.filter_run :focused => true
|
|
29
|
+
end
|
|
30
|
+
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
require 'examples/example_helper'
|
|
2
|
+
|
|
3
|
+
describe Rcr::GemParser do
|
|
4
|
+
|
|
5
|
+
describe "converting a gem list" do
|
|
6
|
+
it "parses gems without a version" do
|
|
7
|
+
list = %[wirble]
|
|
8
|
+
gems = Rcr::GemParser.convert_gem_list(list)
|
|
9
|
+
gems[0].name.should == "wirble"
|
|
10
|
+
gems[0].version.should == nil
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "parses okay with commented lines" do
|
|
14
|
+
list = %[# here is a comment
|
|
15
|
+
# and another
|
|
16
|
+
|
|
17
|
+
xml-simple (1.0.11)]
|
|
18
|
+
gems = Rcr::GemParser.convert_gem_list(list)
|
|
19
|
+
gems.size.should == 1
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "parses gem list" do
|
|
23
|
+
list = %[wirble (0.1.2)
|
|
24
|
+
xml-simple (1.0.11)
|
|
25
|
+
ZenTest (3.10.0, 3.9.2, 3.9.1, 3.8.0, 3.6.0)]
|
|
26
|
+
gems = Rcr::GemParser.convert_gem_list(list)
|
|
27
|
+
gems[0].name.should == "wirble"
|
|
28
|
+
gems[0].version.should == "0.1.2"
|
|
29
|
+
gems[1].name.should == "xml-simple"
|
|
30
|
+
gems[1].version.should == "1.0.11"
|
|
31
|
+
gems[2..-1].each { |gem| gem.name.should == "ZenTest"}
|
|
32
|
+
gems[2].version.should == "3.10.0"
|
|
33
|
+
gems[3].version.should == "3.9.2"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "can use version strings" do
|
|
37
|
+
list = %[do_sqlite3 (<= 0.9.8)]
|
|
38
|
+
gems = Rcr::GemParser.convert_gem_list(list)
|
|
39
|
+
gems.first.version.should == '<= 0.9.8'
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "parsing platforms" do
|
|
44
|
+
it "is parses a single platform" do
|
|
45
|
+
list = %[rambow_likes_gerbils (<= 7.3.2) +ruby186]
|
|
46
|
+
gem = Rcr::GemParser.convert_gem_list(list).first
|
|
47
|
+
gem.platforms.should == %w{ruby186}
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "parses multiple platforms" do
|
|
51
|
+
list = %[some-gem-foo (<= 7.3.2) +ruby186 +jruby130]
|
|
52
|
+
gem = Rcr::GemParser.convert_gem_list(list).first
|
|
53
|
+
gem.platforms.should == %w{ruby186 jruby130}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "parses platforms with dashes and underscores" do
|
|
57
|
+
list = %[rambow_likes_gerbils (1.0, 2.0) +ruby-186 +jruby_130]
|
|
58
|
+
gem = Rcr::GemParser.convert_gem_list(list).first
|
|
59
|
+
gem.platforms.should == %w{ruby-186 jruby_130}
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe "parsing versions" do
|
|
64
|
+
it "parses without a version" do
|
|
65
|
+
versions = Rcr::GemParser.parse_versions("foo")
|
|
66
|
+
versions[0].should == nil
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "parses single version" do
|
|
70
|
+
versions = Rcr::GemParser.parse_versions("foo (1.0.10)")
|
|
71
|
+
versions[0].should == "1.0.10"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "parses single digit version" do
|
|
75
|
+
versions = Rcr::GemParser.parse_versions("echoe (3)")
|
|
76
|
+
versions[0].should == "3"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "parses four digit versions" do
|
|
80
|
+
versions = Rcr::GemParser.parse_versions("fiveruns-memcache-client (1.5.0.3)")
|
|
81
|
+
versions[0].should == "1.5.0.3"
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "parses with multiple versions" do
|
|
85
|
+
versions = Rcr::GemParser.parse_versions("foo (1.0.10, 1.0.11)")
|
|
86
|
+
versions[0].should == "1.0.10"
|
|
87
|
+
versions[1].should == "1.0.11"
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "parses gems with numbers in the name" do
|
|
91
|
+
Rcr::GemParser.parse_versions("open4 (0.9.6)")[0].should == "0.9.6"
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
describe "parsing gem names" do
|
|
96
|
+
it "returns nil for comments" do
|
|
97
|
+
Rcr::GemParser.parse_name("# I hate factory-girl").should be_nil
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "returns nil for empty lines" do
|
|
101
|
+
Rcr::GemParser.parse_name(" ").should be_nil
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "parses gem name without versions" do
|
|
105
|
+
Rcr::GemParser.parse_name("factory-girl").should == "factory-girl"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "parses simple gem name" do
|
|
109
|
+
Rcr::GemParser.parse_name("daemons (1.0.10)").should == "daemons"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "parses name with dashes" do
|
|
113
|
+
Rcr::GemParser.parse_name("diff-lcs (1.0.10)").should == "diff-lcs"
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "parses name with underscores" do
|
|
117
|
+
Rcr::GemParser.parse_name("spec_converter_foo (1.0.10)").should == "spec_converter_foo"
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require 'examples/example_helper'
|
|
2
|
+
|
|
3
|
+
describe Rcr::GemSync do
|
|
4
|
+
|
|
5
|
+
describe "creating a gem_sync" do
|
|
6
|
+
it "saves github gem list source" do
|
|
7
|
+
Rcr::GemSync.new(["--github"]).gem_list.should == Rcr::GemSync::RCR_GITHUB_GEM_LIST
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "sync" do
|
|
12
|
+
it "should read gem list, install each gem, ..." do
|
|
13
|
+
gem_sync = Rcr::GemSync.new(["--github"])
|
|
14
|
+
gem_sync.expects(:read_gem_list)
|
|
15
|
+
gem_sync.expects(:parse_gems)
|
|
16
|
+
gem_sync.expects(:install_gems)
|
|
17
|
+
gem_sync.sync
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "install_gems" do
|
|
22
|
+
it "should iterate over each gem, and install unless already installed" do
|
|
23
|
+
gem_sync = Rcr::GemSync.new(["--github"])
|
|
24
|
+
gem_sync.expects(:read_gem_list).returns(<<-EOL)
|
|
25
|
+
gem1 (1.0.0)
|
|
26
|
+
gem2 (1.0.0)
|
|
27
|
+
EOL
|
|
28
|
+
gem_sync.stubs(:installed?).returns(true, false)
|
|
29
|
+
gem_sync.expects(:install!).once
|
|
30
|
+
gem_sync.sync
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "shoud do nothing if the platform does not match" do
|
|
34
|
+
gem_sync = Rcr::GemSync.new(["-p ruby191"])
|
|
35
|
+
gem_sync.expects(:read_gem_list).returns(<<-EOL)
|
|
36
|
+
gem1 (1.0.0) +jruby130
|
|
37
|
+
EOL
|
|
38
|
+
gem_sync.expects(:install!).never
|
|
39
|
+
gem_sync.sync
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "install!" do
|
|
44
|
+
it "should try installing as rubyforge first" do
|
|
45
|
+
gem = OpenStruct.new(:name => "foo", :version => "1.0.0")
|
|
46
|
+
gem_sync = Rcr::GemSync.new
|
|
47
|
+
gem_sync.expects(:run).with("gem install foo --no-ri --no-rdoc --version 1.0.0").returns(true)
|
|
48
|
+
gem_sync.install!(gem)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should fall back to github if not found on rubyforge" do
|
|
52
|
+
gem = OpenStruct.new(:name => "johndoe-foo", :version => "1.0.0")
|
|
53
|
+
gem_sync = Rcr::GemSync.new
|
|
54
|
+
gem_sync.expects(:run).with("gem install johndoe-foo --no-ri --no-rdoc --version 1.0.0").returns(false)
|
|
55
|
+
gem_sync.expects(:run).with("gem install johndoe-foo --no-ri --no-rdoc --version 1.0.0 --source http://gems.github.com")
|
|
56
|
+
gem_sync.install!(gem)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe "platform_matches?" do
|
|
61
|
+
it "should return true if there is no platform" do
|
|
62
|
+
Rcr::GemSync.new.platform_matches?(OpenStruct.new).should == true
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should return false gem sync and gem platform do not match" do
|
|
66
|
+
gem_sync = Rcr::GemSync.new(["-p ruby191"])
|
|
67
|
+
gem_sync.platform_matches?(OpenStruct.new(:platforms => ["jruby130"])).should == false
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "should return true if gem platform and current platform match" do
|
|
71
|
+
gem_sync = Rcr::GemSync.new(["-p ruby191"])
|
|
72
|
+
gem_sync.platform_matches?(OpenStruct.new(:platforms => ["ruby191"])).should == true
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "should return if gem platforms includes the current platform" do
|
|
76
|
+
gem_sync = Rcr::GemSync.new(["-p ruby191"])
|
|
77
|
+
gem_sync.platform_matches?(OpenStruct.new(:platforms => ["jruby130", "ruby191"])).should == true
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe "read gem list" do
|
|
82
|
+
it "should read the gem list" do
|
|
83
|
+
gem_sync = Rcr::GemSync.new(["--github"])
|
|
84
|
+
gem_sync.expects(:open).with(Rcr::GemSync::RCR_GITHUB_GEM_LIST).returns(StringIO.new)
|
|
85
|
+
gem_sync.read_gem_list
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
describe "failed installation" do
|
|
90
|
+
xit "should skip the gem and move on if failed due to permission denied" do
|
|
91
|
+
out = "Permission denied - /opt/local/lib/ruby/gems/1.8/cache/activesupport-1.4.4.gem"
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
xit "logs connection refused and skips gem, usually due to firewall blocking or gem mirrir is down"
|
|
95
|
+
|
|
96
|
+
xit "should try to install from github if gem was not found in default source(s)" do
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'examples/example_helper'
|
|
2
|
+
|
|
3
|
+
describe Rcr::OptionParsing do
|
|
4
|
+
|
|
5
|
+
describe "gem list" do
|
|
6
|
+
it "uses github list for -g" do
|
|
7
|
+
opts = Rcr::OptionParsing.parse(["-g"])
|
|
8
|
+
opts[:github].should be_true
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "defaults to non github" do
|
|
12
|
+
opts = Rcr::OptionParsing.parse([])
|
|
13
|
+
opts[:github].should be_nil
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "returns github source url if github list selected" do
|
|
17
|
+
opts = Rcr::OptionParsing.parse(["-g"])
|
|
18
|
+
opts[:gem_list].should == Rcr::GemSync::RCR_GITHUB_GEM_LIST
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
data/gem_sync.gemspec
CHANGED
|
@@ -1,37 +1,65 @@
|
|
|
1
|
+
# Generated by jeweler
|
|
2
|
+
# DO NOT EDIT THIS FILE
|
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
|
1
4
|
# -*- encoding: utf-8 -*-
|
|
2
5
|
|
|
3
6
|
Gem::Specification.new do |s|
|
|
4
7
|
s.name = %q{gem_sync}
|
|
5
|
-
s.version = "
|
|
8
|
+
s.version = "1.1.0"
|
|
6
9
|
|
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">=
|
|
8
|
-
s.authors = ["Rob Sanheim
|
|
9
|
-
s.date = %q{
|
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
|
+
s.authors = ["Rob Sanheim"]
|
|
12
|
+
s.date = %q{2009-09-04}
|
|
10
13
|
s.default_executable = %q{gem_sync}
|
|
11
|
-
s.description = %q{Tool to install
|
|
14
|
+
s.description = %q{Tool to install rubygems for RunCodeRun, though it could be used to bootstrap your own machines as well.}
|
|
12
15
|
s.email = %q{rob@runcoderun.com}
|
|
13
16
|
s.executables = ["gem_sync"]
|
|
14
|
-
s.extra_rdoc_files = [
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
s.
|
|
17
|
+
s.extra_rdoc_files = [
|
|
18
|
+
"LICENSE",
|
|
19
|
+
"README.txt"
|
|
20
|
+
]
|
|
21
|
+
s.files = [
|
|
22
|
+
".gitignore",
|
|
23
|
+
"History.txt",
|
|
24
|
+
"LICENSE",
|
|
25
|
+
"Manifest",
|
|
26
|
+
"Manifest.txt",
|
|
27
|
+
"README.txt",
|
|
28
|
+
"Rakefile",
|
|
29
|
+
"VERSION",
|
|
30
|
+
"bin/gem_sync",
|
|
31
|
+
"examples/example_helper.rb",
|
|
32
|
+
"examples/rcr/gem_parser_example.rb",
|
|
33
|
+
"examples/rcr/gem_sync_example.rb",
|
|
34
|
+
"examples/rcr/option_parsing_example.rb",
|
|
35
|
+
"gem_sync.gemspec",
|
|
36
|
+
"lib/rcr/gem_parser.rb",
|
|
37
|
+
"lib/rcr/gem_sync.rb",
|
|
38
|
+
"lib/rcr/option_parsing.rb",
|
|
39
|
+
"lib/runcoderun_gems.txt"
|
|
40
|
+
]
|
|
41
|
+
s.homepage = %q{http://github.com/runcoderun/gem_sync}
|
|
42
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
|
19
43
|
s.require_paths = ["lib"]
|
|
20
|
-
s.
|
|
21
|
-
s.
|
|
22
|
-
s.
|
|
23
|
-
|
|
44
|
+
s.rubygems_version = %q{1.3.5}
|
|
45
|
+
s.summary = %q{gem_sync}
|
|
46
|
+
s.test_files = [
|
|
47
|
+
"examples/example_helper.rb",
|
|
48
|
+
"examples/rcr/gem_parser_example.rb",
|
|
49
|
+
"examples/rcr/gem_sync_example.rb",
|
|
50
|
+
"examples/rcr/option_parsing_example.rb"
|
|
51
|
+
]
|
|
24
52
|
|
|
25
53
|
if s.respond_to? :specification_version then
|
|
26
54
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
27
|
-
s.specification_version =
|
|
55
|
+
s.specification_version = 3
|
|
28
56
|
|
|
29
57
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
30
|
-
s.add_development_dependency(%q<
|
|
58
|
+
s.add_development_dependency(%q<spicycode-micronaut>, [">= 0"])
|
|
31
59
|
else
|
|
32
|
-
s.add_dependency(%q<
|
|
60
|
+
s.add_dependency(%q<spicycode-micronaut>, [">= 0"])
|
|
33
61
|
end
|
|
34
62
|
else
|
|
35
|
-
s.add_dependency(%q<
|
|
63
|
+
s.add_dependency(%q<spicycode-micronaut>, [">= 0"])
|
|
36
64
|
end
|
|
37
65
|
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'ostruct'
|
|
2
|
+
|
|
3
|
+
module Rcr
|
|
4
|
+
class GemParser
|
|
5
|
+
|
|
6
|
+
def self.convert_gem_list(string)
|
|
7
|
+
gems = []
|
|
8
|
+
string.each do |line|
|
|
9
|
+
name = parse_name(line)
|
|
10
|
+
next unless name
|
|
11
|
+
versions = parse_versions(line)
|
|
12
|
+
platforms = parse_platforms(line)
|
|
13
|
+
if versions.empty?
|
|
14
|
+
gems << OpenStruct.new(:name => name, :platforms => platforms)
|
|
15
|
+
else
|
|
16
|
+
versions.each do |version|
|
|
17
|
+
gems << OpenStruct.new(:name => name, :version => version.strip, :platforms => platforms)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
gems
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.parse_name(string)
|
|
25
|
+
result = string.gsub(/#.*/, "").match(/[\w\-_]*/)[0]
|
|
26
|
+
result != "" ? result : nil
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.parse_versions(string)
|
|
30
|
+
output = string.scan(/\((.*?)\)/).flatten
|
|
31
|
+
output = output.map {|s| s.split(",") }.flatten
|
|
32
|
+
output = output.map {|s| s.strip}
|
|
33
|
+
output
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.parse_platforms(string)
|
|
37
|
+
string.scan(/\+[\w-]+\b/).map! { |platform| platform.gsub!('+', '') }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
end
|
data/lib/rcr/gem_sync.rb
CHANGED
|
@@ -1,114 +1,96 @@
|
|
|
1
|
-
require 'ostruct'
|
|
2
1
|
require 'open-uri'
|
|
2
|
+
require 'rcr/option_parsing'
|
|
3
|
+
require 'rcr/gem_parser'
|
|
3
4
|
|
|
4
5
|
module Rcr
|
|
5
6
|
class GemSync
|
|
6
|
-
VERSION = '0.5.13'
|
|
7
7
|
GITHUB = "http://gems.github.com"
|
|
8
8
|
RCR_DEFAULT_GEM_LIST = File.expand_path(File.join(File.dirname(__FILE__), *%w[.. runcoderun_gems.txt]))
|
|
9
9
|
RCR_GITHUB_GEM_LIST = "http://github.com/runcoderun/gem_sync/raw/master/lib/runcoderun_gems.txt"
|
|
10
10
|
RCR_GITHUB_GEM_BLACKLIST = "http://github.com/runcoderun/gem_sync/raw/master/lib/gem_blacklist.txt"
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
attr_accessor :gem_list
|
|
13
|
+
def initialize(args = ["--github"])
|
|
14
|
+
options = Rcr::OptionParsing.parse(args)
|
|
15
|
+
@platform = options[:platform]
|
|
16
|
+
@verbose = options[:verbose]
|
|
17
|
+
@dry_run = options[:dry_run]
|
|
18
|
+
@gem_list = options[:gem_list]
|
|
19
|
+
system("gem env") if verbose?
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def
|
|
23
|
-
|
|
24
|
-
# puts "Uninstalling any gems on the blacklist..."
|
|
25
|
-
blacklist = open(RCR_GITHUB_GEM_BLACKLIST).read
|
|
26
|
-
convert_gem_list(blacklist).each do |rubygem|
|
|
27
|
-
cmd = "gem uninstall #{rubygem.name} -I -a -x"
|
|
28
|
-
cmd << " --version '#{rubygem.version}'" if rubygem.version
|
|
29
|
-
puts cmd
|
|
30
|
-
`#{cmd}`
|
|
31
|
-
end
|
|
22
|
+
def verbose?
|
|
23
|
+
@verbose
|
|
32
24
|
end
|
|
33
25
|
|
|
34
|
-
def
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
def dry_run?
|
|
27
|
+
@dry_run
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def read_gem_list
|
|
31
|
+
open(gem_list).read
|
|
39
32
|
end
|
|
40
33
|
|
|
41
|
-
def
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
def platform_matches?(gem)
|
|
35
|
+
if gem.platforms && @platform
|
|
36
|
+
gem.platforms.include?(@platform)
|
|
37
|
+
else
|
|
38
|
+
true
|
|
39
|
+
end
|
|
44
40
|
end
|
|
45
41
|
|
|
46
|
-
def
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
@@gem_list = open(list).read
|
|
42
|
+
def sync
|
|
43
|
+
@gem_list = read_gem_list
|
|
44
|
+
@gems = parse_gems
|
|
45
|
+
install_gems
|
|
51
46
|
end
|
|
52
47
|
|
|
53
|
-
def
|
|
54
|
-
|
|
55
|
-
puts `gem update`
|
|
48
|
+
def parse_gems
|
|
49
|
+
@gems = Rcr::GemParser.convert_gem_list(@gem_list)
|
|
56
50
|
end
|
|
57
51
|
|
|
58
|
-
def
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
end
|
|
64
|
-
cmd = "gem install #{rubygem.name} --no-ri --no-rdoc"
|
|
65
|
-
cmd << " --version #{rubygem.version}" if rubygem.version
|
|
66
|
-
puts cmd
|
|
67
|
-
puts `#{cmd}`
|
|
68
|
-
unless $?.success?
|
|
69
|
-
cmd << " --source #{GITHUB}"
|
|
70
|
-
puts "***** WARNING Trying to install gem #{rubygem.name} from github - watch for security issues."
|
|
71
|
-
puts cmd
|
|
72
|
-
puts `#{cmd}`
|
|
73
|
-
end
|
|
52
|
+
def install_gems
|
|
53
|
+
@gems.each do |rubygem|
|
|
54
|
+
next unless platform_matches?(rubygem)
|
|
55
|
+
next if installed?(rubygem)
|
|
56
|
+
install!(rubygem)
|
|
74
57
|
end
|
|
75
58
|
end
|
|
76
|
-
|
|
77
|
-
def
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if versions.empty?
|
|
84
|
-
gems << OpenStruct.new(:name => name)
|
|
85
|
-
else
|
|
86
|
-
versions.each do |version|
|
|
87
|
-
gems << OpenStruct.new(:name => name, :version => version.strip)
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
gems
|
|
59
|
+
|
|
60
|
+
def installed?(rubygem)
|
|
61
|
+
installed_gems.detect {|gem| gem.name == rubygem.name && gem.version == rubygem.version}
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def installed_gems
|
|
65
|
+
@installed_gems ||= Rcr::GemParser.convert_gem_list(`gem list`)
|
|
92
66
|
end
|
|
93
67
|
|
|
94
|
-
def
|
|
95
|
-
|
|
68
|
+
def install!(rubygem)
|
|
69
|
+
install_from_rubyforge(rubygem) || install_from_github(rubygem)
|
|
96
70
|
end
|
|
97
71
|
|
|
98
|
-
def
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
output
|
|
72
|
+
def install_from_rubyforge(rubygem)
|
|
73
|
+
cmd = "gem install #{rubygem.name} --no-ri --no-rdoc"
|
|
74
|
+
cmd << " --version #{rubygem.version}" if rubygem.version
|
|
75
|
+
run(cmd)
|
|
103
76
|
end
|
|
104
|
-
|
|
105
|
-
def
|
|
106
|
-
|
|
77
|
+
|
|
78
|
+
def install_from_github(rubygem)
|
|
79
|
+
cmd = "gem install #{rubygem.name} --no-ri --no-rdoc"
|
|
80
|
+
cmd << " --version #{rubygem.version}" if rubygem.version
|
|
81
|
+
cmd << " --source #{GITHUB}"
|
|
82
|
+
run(cmd)
|
|
107
83
|
end
|
|
108
|
-
|
|
109
|
-
def
|
|
110
|
-
|
|
84
|
+
|
|
85
|
+
def run(cmd)
|
|
86
|
+
if dry_run?
|
|
87
|
+
puts cmd
|
|
88
|
+
true
|
|
89
|
+
else
|
|
90
|
+
puts cmd if verbose?
|
|
91
|
+
system(cmd)
|
|
92
|
+
end
|
|
111
93
|
end
|
|
112
|
-
|
|
94
|
+
|
|
113
95
|
end
|
|
114
96
|
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module Rcr
|
|
4
|
+
class OptionParsing
|
|
5
|
+
|
|
6
|
+
def self.parse(args)
|
|
7
|
+
options = {}
|
|
8
|
+
|
|
9
|
+
OptionParser.new do |opts|
|
|
10
|
+
opts.banner = "Usage: gem_sync [options]"
|
|
11
|
+
|
|
12
|
+
opts.on('-p', '--platform [PLATFORM]', 'Specify an optional platform') do |o|
|
|
13
|
+
options[:platform] = o.strip
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
opts.on('-g', '--github', 'Pull the list of gems to install from github') do |o|
|
|
17
|
+
options[:github] = o
|
|
18
|
+
options[:gem_list] = Rcr::GemSync::RCR_GITHUB_GEM_LIST
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
opts.on('-v', '--verbose', 'Run in verbose mode') do |o|
|
|
22
|
+
options[:verbose] = o
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
opts.on('-n', '--dry-run', 'Do a dry run without executing actions') do |o|
|
|
26
|
+
options[:dry_run] = o
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end.parse!(args)
|
|
30
|
+
|
|
31
|
+
options
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
data/lib/runcoderun_gems.txt
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# Don't add these gems -- they break things bad:
|
|
2
|
+
# watir
|
|
3
|
+
# do_sqlite3 (<= 0.9.8)
|
|
4
|
+
|
|
1
5
|
actionmailer (2.3.2, 2.2.2, 2.1.2, 2.1.0, 2.0.2, 2.0.1, 1.3.6)
|
|
2
6
|
actionpack (2.3.2, 2.2.2, 2.1.2, 2.1.0, 2.0.2, 2.0.1, 1.13.6)
|
|
3
7
|
actionwebservice (1.2.6)
|
|
@@ -10,6 +14,7 @@ addressable (2.0.2, 1.0.4)
|
|
|
10
14
|
allison (2.0.3)
|
|
11
15
|
andand
|
|
12
16
|
andre-geokit
|
|
17
|
+
antage-postgres +ruby_191
|
|
13
18
|
archive-tar-minitar (0.5.2)
|
|
14
19
|
ar-extensions
|
|
15
20
|
arrayfields (4.7.3, 4.6.0)
|
|
@@ -29,23 +34,23 @@ cgi_multipart_eof_fix (2.5.0)
|
|
|
29
34
|
chrisk-fakeweb
|
|
30
35
|
chronic
|
|
31
36
|
coderay
|
|
32
|
-
|
|
37
|
+
colors
|
|
33
38
|
configatron (2.2.2, 2.1.5)
|
|
34
39
|
configuration (0.0.5)
|
|
35
40
|
context
|
|
36
|
-
crack
|
|
41
|
+
crack
|
|
37
42
|
csv-mapper (0.0.3)
|
|
38
43
|
cucumber (0.3.96, 0.3.94, 0.3.92, 0.3.9, 0.3.11, 0.3.0)
|
|
39
|
-
curb
|
|
40
|
-
daemons
|
|
41
|
-
dancroak-clearance
|
|
42
|
-
dancroak-clearance-admin
|
|
43
|
-
dancroak-ruby-summize
|
|
44
|
-
dancroak-twitter-search
|
|
45
|
-
dancroak-validates_email_format_of
|
|
44
|
+
curb +ruby_186 +ruby_191
|
|
45
|
+
daemons
|
|
46
|
+
dancroak-clearance
|
|
47
|
+
dancroak-clearance-admin
|
|
48
|
+
dancroak-ruby-summize
|
|
49
|
+
dancroak-twitter-search
|
|
50
|
+
dancroak-validates_email_format_of
|
|
46
51
|
data_objects (0.9.12, 0.9.6)
|
|
47
|
-
dbd-mysql
|
|
48
|
-
dbd-sqlite3
|
|
52
|
+
dbd-mysql +ruby_186 +ruby_191
|
|
53
|
+
dbd-sqlite3 +ruby_186 +ruby_191
|
|
49
54
|
dbi
|
|
50
55
|
dfl-factories-and-workers
|
|
51
56
|
diff-lcs (1.1.2)
|
|
@@ -53,13 +58,13 @@ dm-core (0.9.11)
|
|
|
53
58
|
dm-tags (0.9.11)
|
|
54
59
|
dm-validations (0.9.11)
|
|
55
60
|
dnsruby (1.26, 1.24, 1.2)
|
|
56
|
-
do_mysql
|
|
61
|
+
do_mysql +ruby_186 +ruby_191
|
|
57
62
|
echoe (3.1.1, 3.0.2, 3)
|
|
58
63
|
editalign
|
|
59
64
|
erubis
|
|
60
65
|
eventmachine
|
|
61
|
-
expectations
|
|
62
|
-
extensions
|
|
66
|
+
expectations
|
|
67
|
+
extensions
|
|
63
68
|
extlib (0.9.12, 0.9.5)
|
|
64
69
|
ezamar
|
|
65
70
|
facets (2.5.2, 2.5.0, 2.4.5, 2.4.4, 2.4.1, 2.3.0, 2.2.1, 2.2.0, 2.1.3, 2.0.5)
|
|
@@ -69,7 +74,7 @@ faker
|
|
|
69
74
|
fakeweb
|
|
70
75
|
fastercsv (1.4.0, 1.2.3)
|
|
71
76
|
fastthread (1.0.7, 1.0.1)
|
|
72
|
-
fattr
|
|
77
|
+
fattr
|
|
73
78
|
feed-normalizer
|
|
74
79
|
feedvalidator
|
|
75
80
|
ferret
|
|
@@ -80,12 +85,12 @@ flog (2.1.0, 2.0.0, 1.1.0)
|
|
|
80
85
|
freelancing-god-ginger
|
|
81
86
|
freelancing-god-thinking-sphinx
|
|
82
87
|
geminstaller
|
|
83
|
-
gem_plugin
|
|
88
|
+
gem_plugin
|
|
84
89
|
geokit
|
|
85
90
|
giraffesoft-resource_controller
|
|
86
|
-
git
|
|
87
|
-
god
|
|
88
|
-
google-geocode
|
|
91
|
+
git
|
|
92
|
+
god
|
|
93
|
+
google-geocode
|
|
89
94
|
grancher
|
|
90
95
|
grempe-amazon-ec2
|
|
91
96
|
haml (2.2.1, 2.0.9, 2.0.7, 2.0.2, 2.0.1)
|
|
@@ -94,43 +99,45 @@ hashtostruct
|
|
|
94
99
|
heckle (1.4.2, 1.4.1)
|
|
95
100
|
highline (1.5.0, 1.4.0)
|
|
96
101
|
hoe (1.12.2, 1.8.3, 1.8.2, 1.7.0)
|
|
97
|
-
hpricot (0.8.1, 0.6.164, 0.6)
|
|
102
|
+
hpricot (0.8.1, 0.6.164, 0.6) +ruby_186 +ruby_191
|
|
98
103
|
htmlentities (4.0.0)
|
|
99
104
|
httparty
|
|
100
105
|
httpauth
|
|
101
106
|
httpclient
|
|
107
|
+
ianwhite-garlic
|
|
102
108
|
icalendar (1.1.0, 1.0.2)
|
|
103
|
-
image_science (1.1.3)
|
|
109
|
+
image_science (1.1.3) +ruby_186 +ruby_191
|
|
104
110
|
innate
|
|
105
|
-
javan-whenever
|
|
106
|
-
jeremymcanally-context
|
|
107
|
-
jeremymcanally-matchy
|
|
108
|
-
jeremymcanally-pending
|
|
109
|
-
jeremymcanally-stump
|
|
110
|
-
jnunemaker-twitter
|
|
111
|
+
javan-whenever
|
|
112
|
+
jeremymcanally-context
|
|
113
|
+
jeremymcanally-matchy
|
|
114
|
+
jeremymcanally-pending
|
|
115
|
+
jeremymcanally-stump
|
|
116
|
+
jnunemaker-twitter
|
|
117
|
+
jruby-openssl +jruby
|
|
118
|
+
jruby-rcov +jruby
|
|
111
119
|
jscruggs-metric_fu (1.1.4, 1.0.2)
|
|
112
|
-
json (1.1.4, 1.1.3)
|
|
120
|
+
json (1.1.4, 1.1.3) +ruby_186 +ruby_191
|
|
113
121
|
jsonbuilder
|
|
114
122
|
juggernaut
|
|
115
|
-
kematzy-sinatra-cache
|
|
116
|
-
lame_encoder
|
|
123
|
+
kematzy-sinatra-cache
|
|
124
|
+
lame_encoder
|
|
117
125
|
launchy (0.3.3, 0.3.2)
|
|
118
126
|
less
|
|
119
|
-
libxml-ruby (1.1.3, 0.9.8, 0.8.3)
|
|
127
|
+
libxml-ruby (1.1.3, 0.9.8, 0.8.3) +ruby_186 +ruby_191
|
|
120
128
|
Linguistics
|
|
121
129
|
liquid
|
|
122
130
|
locale
|
|
123
131
|
log4r
|
|
124
|
-
log_buddy
|
|
132
|
+
log_buddy
|
|
125
133
|
main (2.8.3, 2.8.2)
|
|
126
|
-
markaby
|
|
134
|
+
markaby
|
|
127
135
|
maruku
|
|
128
|
-
mash
|
|
136
|
+
mash
|
|
129
137
|
mbleigh-acts-as-taggable-on
|
|
130
138
|
mdoel-cukesteps
|
|
131
139
|
mechanize
|
|
132
140
|
memcache-client
|
|
133
|
-
memcached (0.12, 0.11)
|
|
134
141
|
merb-core (0.9.9)
|
|
135
142
|
merb-exceptions (0.9.9)
|
|
136
143
|
merb-freezer (0.9.5)
|
|
@@ -152,7 +159,7 @@ mixlib-cli (1.0.4)
|
|
|
152
159
|
mixlib-config (1.0.9)
|
|
153
160
|
mixlib-log (1.0.3)
|
|
154
161
|
mocha (0.9.5, 0.9.4, 0.9.0)
|
|
155
|
-
mojombo-chronic
|
|
162
|
+
mojombo-chronic
|
|
156
163
|
mojombo-grit (1.1.1, 0.9.4)
|
|
157
164
|
mojombo-jekyll
|
|
158
165
|
money
|
|
@@ -160,16 +167,16 @@ mongrel
|
|
|
160
167
|
mosquito (0.1.4, 0.1.3)
|
|
161
168
|
mwmitchell-rsolr
|
|
162
169
|
mwmitchell-material_girl
|
|
163
|
-
mysql (2.7)
|
|
170
|
+
mysql (2.7) +ruby_186 +ruby_191
|
|
164
171
|
nagoro
|
|
165
172
|
net-ssh (2.0.11, 2.0.4)
|
|
166
173
|
newgem (1.3.0, 1.2.3, 1.1.0)
|
|
167
174
|
nokogiri (1.3.2)
|
|
168
|
-
oauth
|
|
175
|
+
oauth
|
|
169
176
|
obsidian
|
|
170
177
|
ohai
|
|
171
|
-
oniguruma (1.1.0)
|
|
172
|
-
open4
|
|
178
|
+
oniguruma (1.1.0) +ruby_186
|
|
179
|
+
open4
|
|
173
180
|
opscode-ohai
|
|
174
181
|
opscode-mixlib-cli (1.0.4)
|
|
175
182
|
opscode-mixlib-config (1.0.9)
|
|
@@ -178,12 +185,13 @@ patron
|
|
|
178
185
|
orderedhash (0.0.6, 0.0.4)
|
|
179
186
|
packet (0.1.15, 0.1.14)
|
|
180
187
|
ParseTree (3.0.3, 2.2.0)
|
|
188
|
+
pauldix-sax-machine
|
|
181
189
|
pdf-writer (1.1.8)
|
|
182
190
|
peterwald-git (1.1.4)
|
|
183
191
|
picnic (0.8.0, 0.7.1, 0.6.4)
|
|
184
192
|
plist
|
|
185
193
|
polyglot (0.2.6, 0.2.5, 0.2.3)
|
|
186
|
-
postgres
|
|
194
|
+
postgres +ruby_186
|
|
187
195
|
populator
|
|
188
196
|
prawn
|
|
189
197
|
PriorityQueue
|
|
@@ -191,48 +199,48 @@ quietbacktrace
|
|
|
191
199
|
rack (1.0.0, 0.9.1, 0.4.0)
|
|
192
200
|
rack-test (0.2.0, 0.1.0)
|
|
193
201
|
rails (2.3.2, 2.3.1, 2.2.2, 2.1.2, 2.1.1, 2.1.0, 2.0.5, 2.0.4, 2.0.2, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0)
|
|
194
|
-
rake (0.8.7, 0.8.4, 0.8.3
|
|
202
|
+
rake (0.8.7, 0.8.4, 0.8.3)
|
|
195
203
|
railroad
|
|
196
|
-
rc-rest
|
|
204
|
+
rc-rest
|
|
197
205
|
rdiscount
|
|
198
206
|
RedCloth (4.1.9, 4.1.1, 4.0.3, 4.0.1, 3.0.4, 3.0.3)
|
|
199
|
-
redgreen
|
|
207
|
+
redgreen
|
|
200
208
|
reek (1.1.3)
|
|
201
|
-
relevance-cap_gun
|
|
209
|
+
relevance-cap_gun
|
|
202
210
|
relevance-castronaut (0.3.6)
|
|
203
|
-
relevance-github_hook
|
|
204
|
-
relevance-grit
|
|
205
|
-
relevance-log_buddy
|
|
206
|
-
relevance-multi_rails
|
|
207
|
-
relevance-rcov
|
|
208
|
-
relevance-rubycas-server
|
|
211
|
+
relevance-github_hook
|
|
212
|
+
relevance-grit
|
|
213
|
+
relevance-log_buddy
|
|
214
|
+
relevance-multi_rails
|
|
215
|
+
relevance-rcov +ruby_186 +ruby_191
|
|
216
|
+
relevance-rubycas-server
|
|
209
217
|
relevance-tarantula
|
|
210
218
|
relevance-test-spec
|
|
211
|
-
remarkable
|
|
212
|
-
remarkable_activerecord
|
|
219
|
+
remarkable
|
|
220
|
+
remarkable_activerecord
|
|
213
221
|
remarkable_rails
|
|
214
222
|
remarkably
|
|
215
223
|
rest-client (0.9.2, 0.7)
|
|
216
|
-
right_aws
|
|
224
|
+
right_aws
|
|
217
225
|
rio
|
|
218
|
-
rmagick (2.10.0, 2.9.1, 2.6.0
|
|
226
|
+
rmagick (2.10.0, 2.9.1, 2.6.0) +ruby_186 +ruby_191
|
|
219
227
|
roman-merb_cucumber
|
|
220
228
|
roo
|
|
221
229
|
roodi (1.4.0)
|
|
222
230
|
rr
|
|
223
|
-
rspec (1.2.7, 1.2.4, 1.1.8, 1.1.4
|
|
231
|
+
rspec (1.2.7, 1.2.4, 1.1.8, 1.1.4)
|
|
224
232
|
rspec-rails (1.2.7.1, 1.2.4, 1.2.2, 1.2.0, 1.1.12, 1.1.11)
|
|
225
233
|
rspec_hpricot_matchers
|
|
226
234
|
rubigen
|
|
227
235
|
ruby-aaws
|
|
228
236
|
ruby-debug (0.10.2)
|
|
229
237
|
ruby-hmac (0.3.2)
|
|
230
|
-
ruby-json
|
|
231
|
-
ruby-net-ldap
|
|
238
|
+
ruby-json
|
|
239
|
+
ruby-net-ldap
|
|
232
240
|
ruby-openid
|
|
233
241
|
ruby2ruby (1.2.2, 1.1.9)
|
|
234
242
|
rubyforge (1.0.3, 1.0.2, 1.0.1, 1.0.0)
|
|
235
|
-
rubygems-update
|
|
243
|
+
rubygems-update
|
|
236
244
|
RubyInline (3.8.1, 3.7.0)
|
|
237
245
|
rubyzip
|
|
238
246
|
ruby_parser (2.0.3, 2.0.2)
|
|
@@ -251,8 +259,8 @@ sinatra
|
|
|
251
259
|
spicycode-micronaut
|
|
252
260
|
spicycode-micronaut-rails
|
|
253
261
|
spork
|
|
254
|
-
sql-parser
|
|
255
|
-
sqlite3-ruby (1.2.4, 1.2.3, 1.2.1)
|
|
262
|
+
sql-parser
|
|
263
|
+
sqlite3-ruby (1.2.4, 1.2.3, 1.2.1) +ruby_186 +ruby_191
|
|
256
264
|
starling
|
|
257
265
|
starling-starling
|
|
258
266
|
stomp
|
|
@@ -262,32 +270,32 @@ systemu (1.2.0)
|
|
|
262
270
|
system_timer (1.0)
|
|
263
271
|
taf2-curb
|
|
264
272
|
tagz
|
|
265
|
-
technicalpickles-echoe
|
|
273
|
+
technicalpickles-echoe
|
|
266
274
|
technicalpickles-jeweler
|
|
267
|
-
term-ansicolor
|
|
268
|
-
termios
|
|
275
|
+
term-ansicolor
|
|
276
|
+
termios
|
|
269
277
|
test-spec (0.10.0, 0.9.0)
|
|
270
278
|
thin
|
|
271
279
|
thinking_sphinx
|
|
272
|
-
thoughtbot-clearance
|
|
280
|
+
thoughtbot-clearance
|
|
273
281
|
thoughtbot-factory_girl (1.2.1, 1.1.3)
|
|
274
282
|
thoughtbot-paperclip (2.3.0, 2.3.1)
|
|
275
|
-
thoughtbot-quietbacktrace
|
|
276
|
-
thoughtbot-shoulda
|
|
283
|
+
thoughtbot-quietbacktrace
|
|
284
|
+
thoughtbot-shoulda
|
|
277
285
|
timcharper-spork
|
|
278
|
-
tidy
|
|
286
|
+
tidy
|
|
279
287
|
tinder (1.2.0, 1.1.7)
|
|
280
288
|
tmm1-amqp
|
|
281
|
-
topfunky-gruff
|
|
282
|
-
transaction-simple
|
|
289
|
+
topfunky-gruff
|
|
290
|
+
transaction-simple
|
|
283
291
|
treetop (1.2.6, 1.2.5, 1.2.4)
|
|
284
292
|
twitter
|
|
285
293
|
tzinfo
|
|
286
294
|
unit_record
|
|
287
295
|
uuidtools (1.0.7, 1.0.3)
|
|
288
|
-
validatable
|
|
296
|
+
validatable
|
|
289
297
|
webrat
|
|
290
|
-
will_paginate
|
|
298
|
+
will_paginate
|
|
291
299
|
xmlelements
|
|
292
300
|
xml-simple
|
|
293
301
|
yajl-ruby
|
metadata
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: runcoderun-gem_sync
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
- Rob Sanheim
|
|
7
|
+
- Rob Sanheim
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date:
|
|
12
|
+
date: 2009-09-04 00:00:00 -07:00
|
|
13
13
|
default_executable: gem_sync
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
|
-
name:
|
|
16
|
+
name: spicycode-micronaut
|
|
17
17
|
type: :development
|
|
18
18
|
version_requirement:
|
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -22,38 +22,40 @@ dependencies:
|
|
|
22
22
|
- !ruby/object:Gem::Version
|
|
23
23
|
version: "0"
|
|
24
24
|
version:
|
|
25
|
-
description: Tool to install
|
|
25
|
+
description: Tool to install rubygems for RunCodeRun, though it could be used to bootstrap your own machines as well.
|
|
26
26
|
email: rob@runcoderun.com
|
|
27
27
|
executables:
|
|
28
28
|
- gem_sync
|
|
29
29
|
extensions: []
|
|
30
30
|
|
|
31
31
|
extra_rdoc_files:
|
|
32
|
-
-
|
|
33
|
-
- lib/rcr/gem_sync.rb
|
|
34
|
-
- lib/runcoderun_gems.txt
|
|
32
|
+
- LICENSE
|
|
35
33
|
- README.txt
|
|
36
34
|
files:
|
|
37
|
-
-
|
|
38
|
-
- gem_sync.gemspec
|
|
35
|
+
- .gitignore
|
|
39
36
|
- History.txt
|
|
40
|
-
-
|
|
41
|
-
- lib/runcoderun_gems.txt
|
|
37
|
+
- LICENSE
|
|
42
38
|
- Manifest
|
|
43
39
|
- Manifest.txt
|
|
44
|
-
- Rakefile
|
|
45
40
|
- README.txt
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
- Rakefile
|
|
42
|
+
- VERSION
|
|
43
|
+
- bin/gem_sync
|
|
44
|
+
- examples/example_helper.rb
|
|
45
|
+
- examples/rcr/gem_parser_example.rb
|
|
46
|
+
- examples/rcr/gem_sync_example.rb
|
|
47
|
+
- examples/rcr/option_parsing_example.rb
|
|
48
|
+
- gem_sync.gemspec
|
|
49
|
+
- lib/rcr/gem_parser.rb
|
|
50
|
+
- lib/rcr/gem_sync.rb
|
|
51
|
+
- lib/rcr/option_parsing.rb
|
|
52
|
+
- lib/runcoderun_gems.txt
|
|
53
|
+
has_rdoc: false
|
|
54
|
+
homepage: http://github.com/runcoderun/gem_sync
|
|
55
|
+
licenses:
|
|
49
56
|
post_install_message:
|
|
50
57
|
rdoc_options:
|
|
51
|
-
- --
|
|
52
|
-
- --inline-source
|
|
53
|
-
- --title
|
|
54
|
-
- Gem_sync
|
|
55
|
-
- --main
|
|
56
|
-
- README.txt
|
|
58
|
+
- --charset=UTF-8
|
|
57
59
|
require_paths:
|
|
58
60
|
- lib
|
|
59
61
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
@@ -66,14 +68,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
66
68
|
requirements:
|
|
67
69
|
- - ">="
|
|
68
70
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: "
|
|
71
|
+
version: "0"
|
|
70
72
|
version:
|
|
71
73
|
requirements: []
|
|
72
74
|
|
|
73
|
-
rubyforge_project:
|
|
74
|
-
rubygems_version: 1.
|
|
75
|
+
rubyforge_project:
|
|
76
|
+
rubygems_version: 1.3.5
|
|
75
77
|
signing_key:
|
|
76
|
-
specification_version:
|
|
77
|
-
summary:
|
|
78
|
+
specification_version: 3
|
|
79
|
+
summary: gem_sync
|
|
78
80
|
test_files:
|
|
79
|
-
-
|
|
81
|
+
- examples/example_helper.rb
|
|
82
|
+
- examples/rcr/gem_parser_example.rb
|
|
83
|
+
- examples/rcr/gem_sync_example.rb
|
|
84
|
+
- examples/rcr/option_parsing_example.rb
|
data/spec/gem_sync_spec.rb
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
gem 'spicycode-micronaut'
|
|
3
|
-
require 'micronaut'
|
|
4
|
-
require 'mocha'
|
|
5
|
-
require File.join(File.dirname(__FILE__), *%w[.. lib rcr gem_sync])
|
|
6
|
-
require File.join(File.dirname(__FILE__), *%w[example_helper])
|
|
7
|
-
|
|
8
|
-
describe 'GemSync' do
|
|
9
|
-
|
|
10
|
-
describe "calling gem_sync" do
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
describe "reading file" do
|
|
14
|
-
before do
|
|
15
|
-
Rcr::GemSync.stubs :update_self
|
|
16
|
-
Rcr::GemSync.stubs :install_gems_from_list
|
|
17
|
-
Rcr::GemSync.stubs :update_gems
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "uses default gem list for nil gem list" do
|
|
21
|
-
Rcr::GemSync.expects(:open).with(Rcr::GemSync::RCR_DEFAULT_GEM_LIST).returns(StringIO.new)
|
|
22
|
-
Rcr::GemSync.install_gems
|
|
23
|
-
Rcr::GemSync.expects(:open).with(Rcr::GemSync::RCR_DEFAULT_GEM_LIST).returns(StringIO.new)
|
|
24
|
-
Rcr::GemSync.install_gems nil
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "allows overriding gem list file" do
|
|
28
|
-
Rcr::GemSync.stubs(:fail_if_gem_list_doesnt_exist).returns(true)
|
|
29
|
-
Rcr::GemSync.expects(:open).with("/my/gems.txt").returns(StringIO.new)
|
|
30
|
-
Rcr::GemSync.install_gems "/my/gems.txt"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it "reads file for gem list" do
|
|
34
|
-
Rcr::GemSync.stubs(:fail_if_gem_list_doesnt_exist).returns(true)
|
|
35
|
-
Rcr::GemSync.expects(:open).with("/my/gems.txt").returns(StringIO.new)
|
|
36
|
-
Rcr::GemSync.read_gem_list "/my/gems.txt"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it "reads from gem list and blacklist on github if passed github param" do
|
|
40
|
-
Rcr::GemSync.expects(:open).with(Rcr::GemSync::RCR_GITHUB_GEM_LIST).returns(StringIO.new)
|
|
41
|
-
Rcr::GemSync.expects(:open).with(Rcr::GemSync::RCR_GITHUB_GEM_BLACKLIST).returns(StringIO.new)
|
|
42
|
-
|
|
43
|
-
Rcr::GemSync.install_gems "__from_github__"
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
describe "parsing a gem list" do
|
|
49
|
-
it "parses gems without a version" do
|
|
50
|
-
list = %[wirble]
|
|
51
|
-
gems = Rcr::GemSync.convert_gem_list(list)
|
|
52
|
-
gems[0].name.should == "wirble"
|
|
53
|
-
gems[0].version.should == nil
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it "parses gem list" do
|
|
57
|
-
list = %[wirble (0.1.2)
|
|
58
|
-
xml-simple (1.0.11)
|
|
59
|
-
ZenTest (3.10.0, 3.9.2, 3.9.1, 3.8.0, 3.6.0)]
|
|
60
|
-
gems = Rcr::GemSync.convert_gem_list(list)
|
|
61
|
-
gems[0].name.should == "wirble"
|
|
62
|
-
gems[0].version.should == "0.1.2"
|
|
63
|
-
gems[1].name.should == "xml-simple"
|
|
64
|
-
gems[1].version.should == "1.0.11"
|
|
65
|
-
gems[2..-1].each { |gem| gem.name.should == "ZenTest"}
|
|
66
|
-
gems[2].version.should == "3.10.0"
|
|
67
|
-
gems[3].version.should == "3.9.2"
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "can use version strings" do
|
|
71
|
-
list = %[do_sqlite3 (<= 0.9.8)]
|
|
72
|
-
gems = Rcr::GemSync.convert_gem_list(list)
|
|
73
|
-
gems.first.version.should == '<= 0.9.8'
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
describe "parsing versions" do
|
|
78
|
-
it "parses without a version" do
|
|
79
|
-
versions = Rcr::GemSync.parse_versions("foo")
|
|
80
|
-
versions[0].should == nil
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it "parses single version" do
|
|
84
|
-
versions = Rcr::GemSync.parse_versions("foo (1.0.10)")
|
|
85
|
-
versions[0].should == "1.0.10"
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "parses single digit version" do
|
|
89
|
-
versions = Rcr::GemSync.parse_versions("echoe (3)")
|
|
90
|
-
versions[0].should == "3"
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
it "parses four digit versions" do
|
|
94
|
-
versions = Rcr::GemSync.parse_versions("fiveruns-memcache-client (1.5.0.3)")
|
|
95
|
-
versions[0].should == "1.5.0.3"
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
it "parses with multiple versions" do
|
|
99
|
-
versions = Rcr::GemSync.parse_versions("foo (1.0.10, 1.0.11)")
|
|
100
|
-
versions[0].should == "1.0.10"
|
|
101
|
-
versions[1].should == "1.0.11"
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
it "parses gems with numbers in the name" do
|
|
105
|
-
Rcr::GemSync.parse_versions("open4 (0.9.6)")[0].should == "0.9.6"
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
describe "parsing gem names" do
|
|
110
|
-
|
|
111
|
-
it "parses gem name without versions" do
|
|
112
|
-
Rcr::GemSync.parse_name("factory-girl").should == "factory-girl"
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
it "parses simple gem name" do
|
|
116
|
-
Rcr::GemSync.parse_name("daemons (1.0.10)").should == "daemons"
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it "parses name with dashes" do
|
|
120
|
-
Rcr::GemSync.parse_name("diff-lcs (1.0.10)").should == "diff-lcs"
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it "parses name with underscores" do
|
|
124
|
-
Rcr::GemSync.parse_name("spec_converter_foo (1.0.10)").should == "spec_converter_foo"
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe "failed installation" do
|
|
129
|
-
xit "should skip the gem and move on if failed due to permission denied" do
|
|
130
|
-
out = "Permission denied - /opt/local/lib/ruby/gems/1.8/cache/activesupport-1.4.4.gem"
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
xit "logs connection refused and skips gem, usually due to firewall blocking or gem mirrir is down"
|
|
134
|
-
|
|
135
|
-
xit "should try to install from github if gem was not found in default source(s)" do
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
end
|