pik 0.2.4 → 0.2.5
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/History.txt +12 -0
- data/Manifest.txt +2 -0
- data/Rakefile +4 -2
- data/features/add_command.feature +2 -2
- data/features/config_command.feature +1 -1
- data/features/default_command.feature +3 -4
- data/features/env.rb +2 -4
- data/features/list_command.feature +1 -1
- data/features/remove_command.feature +2 -9
- data/features/run_command.feature +4 -4
- data/features/step_definitions/pik_commands.rb +4 -0
- data/features/switch_command.feature +14 -1
- data/features/uninstall_command.feature +13 -0
- data/lib/pik.rb +11 -4
- data/lib/pik/commands/add_command.rb +8 -8
- data/lib/pik/commands/batch_file_editor.rb +16 -26
- data/lib/pik/commands/implode_command.rb +2 -2
- data/lib/pik/commands/install_command.rb +4 -4
- data/lib/pik/commands/remove_command.rb +6 -3
- data/lib/pik/commands/uninstall_command.rb +39 -0
- data/lib/pik/implementations.rb +13 -8
- data/spec/html/jruby.htm +182 -184
- data/spec/implementations_spec.rb +2 -2
- data/spec/remove_command_spec.rb +9 -1
- data/tools/pik/pik_runner.exe +0 -0
- data/tools/pik/pik_runner.exy +131 -64
- metadata +4 -2
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
|
2
|
+
=== 0.2.5 / 2009-10-29
|
3
|
+
|
4
|
+
* use upx (http://upx.sf.net/) to compress pik_runner.exe
|
5
|
+
* fixes uninstall story so it doesn't conflict with other stories
|
6
|
+
* bugfix in uninstall command
|
7
|
+
* made all prompts default to 'yes'. bugfix:interactive add would prompt for jruby\bin dirs twice because of the existence of jruby.exe and jruby.bat
|
8
|
+
* fixed downloading of seven_zip error
|
9
|
+
* uninstall command
|
10
|
+
* fixes bug in BatchFileEditor#switch_path_to
|
11
|
+
* switched to HPricot for package searches, requires rubygems and exerb-mingw - closes gh-30
|
12
|
+
|
1
13
|
=== 0.2.4 / 2009-10-28
|
2
14
|
|
3
15
|
* added rake command
|
data/Manifest.txt
CHANGED
@@ -18,6 +18,7 @@ features/run_command.feature
|
|
18
18
|
features/step_definitions/pik_commands.rb
|
19
19
|
features/switch_command.feature
|
20
20
|
features/tag_command.feature
|
21
|
+
features/uninstall_command.feature
|
21
22
|
features/version.feature
|
22
23
|
lib/pik.rb
|
23
24
|
lib/pik/batch_file.rb
|
@@ -39,6 +40,7 @@ lib/pik/commands/remove_command.rb
|
|
39
40
|
lib/pik/commands/run_command.rb
|
40
41
|
lib/pik/commands/switch_command.rb
|
41
42
|
lib/pik/commands/tag_command.rb
|
43
|
+
lib/pik/commands/uninstall_command.rb
|
42
44
|
lib/pik/config_file.rb
|
43
45
|
lib/pik/contrib/progressbar.rb
|
44
46
|
lib/pik/contrib/unzip.rb
|
data/Rakefile
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
+
require 'rbconfig'
|
4
5
|
require 'win32/process'
|
5
6
|
|
6
7
|
ENV['SPEC_OPTS']= '-O spec/spec.opts'
|
7
8
|
|
8
9
|
file 'tools/pik/pik_runner.exy' do
|
9
10
|
Dir.chdir 'tools/pik' do
|
10
|
-
sh('ruby -rexerb/mkexy pik_runner')
|
11
|
+
sh('ruby -rexerb/mkexy pik_runner -v')
|
11
12
|
end
|
12
13
|
exy = YAML.load(File.read('tools/pik/pik_runner.exy'))
|
13
14
|
zlib1 = {
|
14
|
-
'file' => '
|
15
|
+
'file' => File.join(RbConfig::CONFIG['bindir'], 'zlib1.dll'),
|
15
16
|
'type' => 'extension-library'
|
16
17
|
}
|
17
18
|
exy['file']['zlib1.dll'] = zlib1
|
@@ -21,6 +22,7 @@ end
|
|
21
22
|
file 'tools/pik/pik.exe', :needs => ['tools/pik/pik_runner.exy'] do
|
22
23
|
Dir.chdir 'tools/pik' do
|
23
24
|
sh('ruby -S exerb pik_runner.exy')
|
25
|
+
sh('upx -9 pik_runner.exe')
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
@@ -18,8 +18,8 @@ Feature: add command
|
|
18
18
|
And I should see "Located at: C:\ruby\186-p368-mingw32\bin"
|
19
19
|
|
20
20
|
Scenario: add a version that has already been added
|
21
|
-
Given I have already added "ruby 1.8.6 (2009-
|
22
|
-
When I run "pik add C:\ruby\186-
|
21
|
+
Given I have already added "ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32]"
|
22
|
+
When I run "pik add "C:\temp\more spaces in path\ruby\Ruby-186-p383\bin""
|
23
23
|
Then I should see "This version has already been added."
|
24
24
|
And nothing should be added to the config file.
|
25
25
|
|
@@ -5,7 +5,7 @@ Feature: config command
|
|
5
5
|
That allows her to configure pik's behavior.
|
6
6
|
|
7
7
|
Scenario: config gem_home
|
8
|
-
Given I have already added "ruby 1.8.6 (2009-
|
8
|
+
Given I have already added "ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32]"
|
9
9
|
And I am currently using it.
|
10
10
|
When I run "pik config gem_home default"
|
11
11
|
Then a gem_home option should be added to the config.
|
@@ -5,8 +5,7 @@ Feature: default command
|
|
5
5
|
That allows her to switch back to the system defined version.
|
6
6
|
|
7
7
|
Scenario: switching to the default version
|
8
|
-
|
9
|
-
And I am currently using "ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mingw32]"
|
8
|
+
Given I am currently using "ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mingw32]"
|
10
9
|
When I run "pik default -v" and check the path
|
11
|
-
Then I should see "ruby 1.8.6 (2009-
|
12
|
-
And the path should point to "c:\ruby\186-
|
10
|
+
Then I should see "ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32]"
|
11
|
+
And the path should point to "c:\ruby\Ruby-186-p383\bin"
|
data/features/env.rb
CHANGED
@@ -8,9 +8,6 @@ config=<<CONFIG
|
|
8
8
|
"140: jruby 1.4.0RC2 (ruby 1.8.7 patchlevel 174) (2009-10-21 7e77f32) (Java HotSpot(TM) Client VM 1.6.0_14) [x86-java]":
|
9
9
|
:path: !ruby/object:Pathname
|
10
10
|
path: C:/temp/more spaces in path/ruby/jruby-140RC2/bin
|
11
|
-
"186: ruby 1.8.6 (2009-03-31 patchlevel 368) [i386-mingw32]":
|
12
|
-
:path: !ruby/object:Pathname
|
13
|
-
path: c:/ruby/186-p368-mingw32/bin
|
14
11
|
"186: ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32]":
|
15
12
|
:path: !ruby/object:Pathname
|
16
13
|
path: c:/temp/more spaces in path/ruby/ruby-186-p383/bin
|
@@ -28,8 +25,9 @@ require 'yaml'
|
|
28
25
|
require 'pathname'
|
29
26
|
require 'fileutils'
|
30
27
|
require 'lib/pik'
|
28
|
+
require 'rbconfig'
|
31
29
|
|
32
|
-
REAL_PATH = ENV['PATH']
|
30
|
+
REAL_PATH = SearchPath.new(ENV['PATH']).replace(RbConfig::CONFIG['bindir'], 'c:/temp/more spaces in path/ruby/ruby-186-p383/bin').join
|
33
31
|
|
34
32
|
ENV['HOME'] = "C:\\temp\\path with spaces"
|
35
33
|
ENV['JAVA_HOME'] = "C:\\Program Files\\Java\\jre6"
|
@@ -5,14 +5,7 @@ Feature: remove command
|
|
5
5
|
So that she can remove versions.
|
6
6
|
|
7
7
|
Scenario: remove a version from the config
|
8
|
-
Given I have already added "ruby 1.8.6 (2009-
|
8
|
+
Given I have already added "ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32]"
|
9
9
|
When I run "pik remove 186 383 -f"
|
10
10
|
Then I should see "removed"
|
11
|
-
And the version should be removed.
|
12
|
-
|
13
|
-
Scenario: remove a version from the config and the filesystem
|
14
|
-
# Given I have already added "ruby 1.8.6 (2009-03-31 patchlevel 368) [i386-mingw32]"
|
15
|
-
# When I run "pik remove 186 min -f "
|
16
|
-
# Then I should see "removed"
|
17
|
-
# And the version should be removed.
|
18
|
-
|
11
|
+
And the version should be removed.
|
@@ -6,22 +6,22 @@ Feature: run command
|
|
6
6
|
|
7
7
|
Scenario: run code
|
8
8
|
When I run "pik run "path""
|
9
|
-
Then I should find "PATH="
|
9
|
+
Then I should find "PATH=" 4 times
|
10
10
|
And I should see each version's path listed
|
11
11
|
And I should see each version listed.
|
12
12
|
|
13
13
|
Scenario: ruby command
|
14
14
|
When I run "pik ruby -e "puts 'hello world!'" "
|
15
|
-
Then I should find "hello world!"
|
15
|
+
Then I should find "hello world!" 4 times
|
16
16
|
And I should see each version listed.
|
17
17
|
|
18
18
|
Scenario: gem command
|
19
19
|
When I run "pik gem -v"
|
20
|
-
Then I should find "\n\d\.\d\.\d\n"
|
20
|
+
Then I should find "\n\d\.\d\.\d\n" 4 times
|
21
21
|
And I should see each version listed.
|
22
22
|
|
23
23
|
Scenario: rake command
|
24
24
|
When I run "pik rake -V"
|
25
|
-
Then I should find "rake, version \d\.\d\.\d\n"
|
25
|
+
Then I should find "rake, version \d\.\d\.\d\n" 4 times
|
26
26
|
And I should see each version listed.
|
27
27
|
|
@@ -39,6 +39,10 @@ Given /^I have an empty config\.yml/ do
|
|
39
39
|
File.open(TEST_PIK_HOME + 'config.yml','w'){|f| }
|
40
40
|
end
|
41
41
|
|
42
|
+
Given /^there is no ruby version in the path$/ do
|
43
|
+
ENV['PATH'] = SearchPath.new(REAL_PATH).remove(Which::Ruby.find).join
|
44
|
+
end
|
45
|
+
|
42
46
|
Given /^I have not installed pik to (.+)$/ do |path|
|
43
47
|
FileUtils.rm_rf path if File.exist? path
|
44
48
|
FileUtils.mkdir_p path
|
@@ -30,4 +30,17 @@ Feature: switch command
|
|
30
30
|
| jruby 1.4.0RC2 (ruby 1.8.7 patchlevel 174) | jruby 1.4 |
|
31
31
|
| ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32] | 186 383 |
|
32
32
|
| ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mingw32] | 191 p2 |
|
33
|
-
|
33
|
+
|
34
|
+
Scenario Outline: Switching versions with no ruby in the path
|
35
|
+
Given I have added "<version>" to pik
|
36
|
+
And there is no ruby version in the path
|
37
|
+
When I run "pik <patterns>" and check the path
|
38
|
+
Then the path should point to it.
|
39
|
+
And the GEM_HOME might get set.
|
40
|
+
|
41
|
+
Examples:
|
42
|
+
| version | patterns |
|
43
|
+
| IronRuby 0.9.1.0 on .NET 2.0.0.0 | Ir 91 |
|
44
|
+
| jruby 1.4.0RC2 (ruby 1.8.7 patchlevel 174) | jruby 1.4 |
|
45
|
+
| ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32] | 186 383 |
|
46
|
+
| ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mingw32] | 191 p2 |
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Feature: uninstall command
|
2
|
+
In order to keep the filesystem clean
|
3
|
+
A developer
|
4
|
+
Wants a command line tool
|
5
|
+
So that he can download and uninstall older ruby versions
|
6
|
+
|
7
|
+
Scenario: uninstall IronRuby
|
8
|
+
When I run "pik rm Ir 91 -f -q"
|
9
|
+
And I run "pik add "C:\temp\path with spaces\IronRuby-091\bin""
|
10
|
+
And I run "pik unin Ir 91 -f"
|
11
|
+
Then I should see "** Deleting C:\temp\path with spaces\IronRuby-091"
|
12
|
+
And I should see "091: IronRuby 0.9.1.0 on .NET 2.0.0.0 has been uninstalled."
|
13
|
+
|
data/lib/pik.rb
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
module Pik
|
2
|
-
VERSION = '0.2.
|
2
|
+
VERSION = '0.2.5'
|
3
3
|
end
|
4
4
|
|
5
5
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
6
|
+
|
7
|
+
ENV['GEM_HOME'] = nil
|
8
|
+
ENV['GEM_PATH'] = nil
|
9
|
+
|
6
10
|
require 'yaml'
|
7
11
|
require 'pathname'
|
8
12
|
require 'fileutils'
|
13
|
+
require 'open-uri'
|
9
14
|
require 'rbconfig'
|
15
|
+
require 'rubygems'
|
16
|
+
require 'hpricot'
|
17
|
+
require 'highline'
|
10
18
|
|
11
19
|
require 'pik/pik'
|
12
20
|
require 'pik/batch_file'
|
@@ -28,14 +36,13 @@ require 'pik/commands/gemsync_command'
|
|
28
36
|
require 'pik/commands/default_command'
|
29
37
|
require 'pik/commands/implode_command'
|
30
38
|
require 'pik/commands/tag_command'
|
39
|
+
require 'pik/commands/uninstall_command'
|
31
40
|
require 'pik/config_file'
|
32
41
|
require 'pik/implementations'
|
42
|
+
require 'pik/search_path'
|
33
43
|
require 'pik/windows_env'
|
34
44
|
require 'pik/which'
|
35
45
|
|
36
|
-
require 'pik/search_path'
|
37
|
-
|
38
|
-
require 'highline'
|
39
46
|
|
40
47
|
PIK_HOME = Pathname.new( ENV['HOME'] || ENV['USERPROFILE'] ) + '.pik'
|
41
48
|
|
@@ -43,20 +43,20 @@ module Pik
|
|
43
43
|
def add_interactive
|
44
44
|
@hl.choose do |menu|
|
45
45
|
menu.prompt = ""
|
46
|
-
menu.choice('e]nter a path')
|
46
|
+
menu.choice('e]nter a path') do
|
47
47
|
dir = @hl.ask("Enter a path to a ruby/bin dir (enter to quit)")
|
48
|
-
execute(dir) unless dir.empty? || !@hl.agree("Add '#{dir}'?
|
48
|
+
execute(dir) unless dir.empty? || !@hl.agree("Add '#{dir}'?"){|answer| answer.default = 'yes' }
|
49
49
|
add_interactive
|
50
|
-
|
51
|
-
menu.choice('s]earch')
|
50
|
+
end
|
51
|
+
menu.choice('s]earch') do
|
52
52
|
search_dir = @hl.ask("Enter a search path")
|
53
53
|
files = Which::Ruby.glob(search_dir + '**')
|
54
|
-
files.each
|
54
|
+
files.uniq.each do |file|
|
55
55
|
dir = File.dirname(file)
|
56
|
-
add(dir) if @hl.agree("Add '#{dir}'?
|
57
|
-
|
56
|
+
add(dir) if @hl.agree("Add '#{dir}'?"){|answer| answer.default = 'yes' }
|
57
|
+
end
|
58
58
|
add_interactive
|
59
|
-
|
59
|
+
end
|
60
60
|
menu.choice('q]uit'){raise QuitError}
|
61
61
|
end
|
62
62
|
|
@@ -23,35 +23,25 @@ module Pik
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def switch_path_to(
|
27
|
-
|
28
|
-
|
26
|
+
def switch_path_to(other)
|
27
|
+
current = Which::Ruby.find
|
28
|
+
|
29
|
+
new_path = SearchPath.new(ENV['PATH'])
|
30
|
+
new_path.replace_or_add(current, other[:path])
|
31
|
+
|
32
|
+
# if there is currently a GEM_HOME, remove it's bin dir from the path
|
33
|
+
new_path.remove(Pathname.new(ENV['GEM_HOME']) + 'bin') if ENV['GEM_HOME']
|
34
|
+
|
35
|
+
# if the new version has a GEM_HOME, add it's bin dir to the path
|
36
|
+
new_path.add(Pathname.new(other[:gem_home]) + 'bin') if other[:gem_home]
|
29
37
|
|
30
|
-
new_path = SearchPath.new(ENV['PATH']).replace_or_add(dir, new_ver[:path])
|
31
|
-
if new_gem_home = new_ver[:gem_home]
|
32
|
-
|
33
|
-
new_gem_bin = Pathname.new(new_gem_home) + 'bin'
|
34
|
-
|
35
|
-
if current_gem_home = current_config[:gem_home]
|
36
|
-
current_gem_bin = Pathname.new(current_gem_home) + 'bin'
|
37
|
-
new_path.replace(current_gem_bin, new_gem_bin)
|
38
|
-
else
|
39
|
-
new_path.add(new_gem_bin)
|
40
|
-
end
|
41
|
-
else
|
42
|
-
if current_gem_home = current_config[:gem_home]
|
43
|
-
current_gem_bin = Pathname.new(current_gem_home) + 'bin'
|
44
|
-
new_path.remove(current_gem_bin)
|
45
|
-
end
|
46
|
-
end
|
47
38
|
@batch.set('PATH' => new_path.join )
|
48
39
|
end
|
49
|
-
|
50
|
-
def switch_gem_home_to(
|
51
|
-
|
52
|
-
|
53
|
-
@batch.set('
|
54
|
-
@batch.set('GEM_HOME' => gem_path )
|
40
|
+
|
41
|
+
def switch_gem_home_to(gem_home)
|
42
|
+
gem_home = Pathname(gem_home).to_windows rescue nil
|
43
|
+
@batch.set('GEM_PATH' => gem_home )
|
44
|
+
@batch.set('GEM_HOME' => gem_home )
|
55
45
|
end
|
56
46
|
|
57
47
|
def echo_ruby_version(path, verb='')
|
@@ -9,8 +9,8 @@ module Pik
|
|
9
9
|
|
10
10
|
def execute
|
11
11
|
msg = "Are you sure you want pik to implode? "
|
12
|
-
msg << "This will remove '#{PIK_HOME.to_ruby}'.
|
13
|
-
if @force || @hl.agree(msg)
|
12
|
+
msg << "This will remove '#{PIK_HOME.to_ruby}'."
|
13
|
+
if @force || @hl.agree(msg){|answer| answer.default = 'yes' }
|
14
14
|
PIK_HOME.rmtree
|
15
15
|
end
|
16
16
|
end
|
@@ -58,7 +58,7 @@ SEP
|
|
58
58
|
FileUtils.mkdir_p target
|
59
59
|
extract_(file, target)
|
60
60
|
else
|
61
|
-
|
61
|
+
download_seven_zip
|
62
62
|
extract(target, file)
|
63
63
|
end
|
64
64
|
end
|
@@ -80,9 +80,9 @@ SEP
|
|
80
80
|
|
81
81
|
def download_seven_zip
|
82
82
|
question = "You need the 7zip utility to extract this file.\n"
|
83
|
-
question << "Would you like me to download it?
|
84
|
-
if @hl.agree
|
85
|
-
uri
|
83
|
+
question << "Would you like me to download it? (yes/no)"
|
84
|
+
if @hl.agree(question){|answer| answer.default = 'yes' }
|
85
|
+
uri = 'http://downloads.sourceforge.net/sevenzip/7za465.zip'
|
86
86
|
file = download(uri)
|
87
87
|
Zip.fake_unzip(file.to_s, /\.exe|\.dll$/, PIK_BATCH.dirname.to_s)
|
88
88
|
else
|
@@ -6,14 +6,14 @@ module Pik
|
|
6
6
|
it "Removes a ruby location from pik."
|
7
7
|
include ConfigFileEditor
|
8
8
|
|
9
|
-
attr_reader :force
|
9
|
+
attr_reader :force, :quiet
|
10
10
|
|
11
11
|
def execute
|
12
12
|
to_remove = self.class.choose_from(@args, @config)
|
13
13
|
raise QuitError unless to_remove
|
14
|
-
if force || @hl.agree("Are you sure you'd like to remove '#{to_remove}'?
|
14
|
+
if force || @hl.agree("Are you sure you'd like to remove '#{to_remove}'?"){|answer| answer.default = 'yes' }
|
15
15
|
@config.delete(to_remove)
|
16
|
-
@hl.say("#{to_remove} removed")
|
16
|
+
@hl.say("#{to_remove} removed.") unless quiet
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -22,6 +22,9 @@ module Pik
|
|
22
22
|
options.on("--force", "-f", "Remove without prompting") do |value|
|
23
23
|
@force = value
|
24
24
|
end
|
25
|
+
options.on("--quiet", "-q", "Remove without a response") do |value|
|
26
|
+
@quiet = value
|
27
|
+
end
|
25
28
|
end
|
26
29
|
|
27
30
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
|
2
|
+
module Pik
|
3
|
+
|
4
|
+
class UnInstall < Command
|
5
|
+
|
6
|
+
aka :unin
|
7
|
+
it "Deletes a ruby version from the filesystem and removes it from Pik."
|
8
|
+
|
9
|
+
attr_reader :force
|
10
|
+
|
11
|
+
def execute
|
12
|
+
to_remove = self.class.choose_from(@args, @config)
|
13
|
+
raise QuitError unless to_remove
|
14
|
+
if force || @hl.agree("Are you sure you'd like to uninstall '#{to_remove}'?"){|answer| answer.default = 'yes' }
|
15
|
+
puts "** Deleting #{config[to_remove][:path].dirname}"
|
16
|
+
path = config[to_remove][:path].dirname
|
17
|
+
FileUtils.rm_rf(path) if path.exist?
|
18
|
+
remove
|
19
|
+
puts
|
20
|
+
@hl.say("#{to_remove} has been uninstalled.")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def remove
|
25
|
+
rm = Pik::Remove.new(@args + ['--force', '--quiet'], config)
|
26
|
+
rm.execute
|
27
|
+
rm.close
|
28
|
+
end
|
29
|
+
|
30
|
+
def command_options
|
31
|
+
super
|
32
|
+
options.on("--force", "-f", "Remove without prompting") do |value|
|
33
|
+
@force = value
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/lib/pik/implementations.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'open-uri'
|
2
1
|
|
3
2
|
module Pik
|
4
3
|
|
@@ -54,14 +53,19 @@ module Pik
|
|
54
53
|
end
|
55
54
|
|
56
55
|
def versions
|
57
|
-
|
58
|
-
|
59
|
-
|
56
|
+
h = {}
|
57
|
+
Hpricot(read).search("a") do |a|
|
58
|
+
if a_href = a.attributes['href']
|
59
|
+
href, link, version = *a_href.match(@re)
|
60
|
+
h[version] = @url + link if version
|
61
|
+
end
|
62
|
+
end
|
63
|
+
h
|
60
64
|
end
|
61
65
|
|
62
66
|
def read
|
63
67
|
uri = URI.parse(@url+@path)
|
64
|
-
uri.read
|
68
|
+
uri.read rescue ''
|
65
69
|
end
|
66
70
|
|
67
71
|
def subclass
|
@@ -75,7 +79,7 @@ module Pik
|
|
75
79
|
def initialize
|
76
80
|
super
|
77
81
|
@path = "/frs/?group_id=167"
|
78
|
-
@re =
|
82
|
+
@re = /(.+ruby\-(.+)\-i386\-mingw32\.7z)/
|
79
83
|
end
|
80
84
|
|
81
85
|
end
|
@@ -85,17 +89,18 @@ module Pik
|
|
85
89
|
def initialize
|
86
90
|
super
|
87
91
|
@path = "/frs/?group_id=4359"
|
88
|
-
@re =
|
92
|
+
@re = /(.+ironruby\-(\d\.\d\.\d)\.zip)/
|
89
93
|
end
|
90
94
|
|
91
95
|
end
|
92
96
|
|
93
97
|
class JRuby < Base
|
94
98
|
|
99
|
+
# <a href='http://jruby.kenai.com/downloads/1.4.0RC3/jruby-bin-1.4.0RC3.zip'>
|
95
100
|
def initialize
|
96
101
|
@url = ''
|
97
102
|
@path = "http://www.jruby.org/download"
|
98
|
-
@re =
|
103
|
+
@re = /(.+\-bin\-(.+)\.zip)/
|
99
104
|
end
|
100
105
|
end
|
101
106
|
|