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