RDI 0.1.0.20091020

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. data/AUTHORS +3 -0
  2. data/ChangeLog +46 -0
  3. data/Credits +21 -0
  4. data/LICENSE +31 -0
  5. data/README +18 -0
  6. data/TODO +17 -0
  7. data/lib/rdi/Installer.rb +678 -0
  8. data/lib/rdi/Model/ContextModifier.rb +20 -0
  9. data/lib/rdi/Model/DependencyDescription.rb +154 -0
  10. data/lib/rdi/Model/DependencyUserChoice.rb +202 -0
  11. data/lib/rdi/Model/Installer.rb +24 -0
  12. data/lib/rdi/Model/LocationSelector.rb +16 -0
  13. data/lib/rdi/Model/ProgressView.rb +16 -0
  14. data/lib/rdi/Model/Tester.rb +20 -0
  15. data/lib/rdi/Model/View.rb +16 -0
  16. data/lib/rdi/Plugins/ContextModifiers/GemPath.desc.rb +13 -0
  17. data/lib/rdi/Plugins/ContextModifiers/GemPath.rb +106 -0
  18. data/lib/rdi/Plugins/ContextModifiers/LibraryPath.rb +74 -0
  19. data/lib/rdi/Plugins/ContextModifiers/RubyLoadPath.rb +76 -0
  20. data/lib/rdi/Plugins/ContextModifiers/SystemPath.rb +74 -0
  21. data/lib/rdi/Plugins/GemCommon.rb +127 -0
  22. data/lib/rdi/Plugins/Installers/Download.rb +72 -0
  23. data/lib/rdi/Plugins/Installers/DownloadAndInstall.desc.rb +11 -0
  24. data/lib/rdi/Plugins/Installers/DownloadAndInstall.rb +54 -0
  25. data/lib/rdi/Plugins/Installers/Gem.desc.rb +13 -0
  26. data/lib/rdi/Plugins/Installers/Gem.rb +67 -0
  27. data/lib/rdi/Plugins/Installers/Icons/Download.png +0 -0
  28. data/lib/rdi/Plugins/Installers/Icons/DownloadAndInstall.png +0 -0
  29. data/lib/rdi/Plugins/Installers/Icons/Gem.png +0 -0
  30. data/lib/rdi/Plugins/Installers/Yum.rb +52 -0
  31. data/lib/rdi/Plugins/ProgressViews/SimpleWxGUI.desc.rb +13 -0
  32. data/lib/rdi/Plugins/ProgressViews/SimpleWxGUI.rb +58 -0
  33. data/lib/rdi/Plugins/ProgressViews/Text.rb +68 -0
  34. data/lib/rdi/Plugins/RubyGemsDepDesc.rb +41 -0
  35. data/lib/rdi/Plugins/Testers/Binaries.rb +56 -0
  36. data/lib/rdi/Plugins/Testers/DynamicLibraries.rb +56 -0
  37. data/lib/rdi/Plugins/Testers/RubyRequires.rb +76 -0
  38. data/lib/rdi/Plugins/Views/SimpleWxGUI/DependenciesLoaderDialog.rb +147 -0
  39. data/lib/rdi/Plugins/Views/SimpleWxGUI/DependencyPanel.rb +301 -0
  40. data/lib/rdi/Plugins/Views/SimpleWxGUI/Icons/Dependency.png +0 -0
  41. data/lib/rdi/Plugins/Views/SimpleWxGUI/Icons/Ignore.png +0 -0
  42. data/lib/rdi/Plugins/Views/SimpleWxGUI/Icons/ValidKO.png +0 -0
  43. data/lib/rdi/Plugins/Views/SimpleWxGUI/Icons/ValidOK.png +0 -0
  44. data/lib/rdi/Plugins/Views/SimpleWxGUI/LocationSelectors/Directory.desc.rb +13 -0
  45. data/lib/rdi/Plugins/Views/SimpleWxGUI/LocationSelectors/Directory.rb +45 -0
  46. data/lib/rdi/Plugins/Views/SimpleWxGUI.desc.rb +13 -0
  47. data/lib/rdi/Plugins/Views/SimpleWxGUI.rb +60 -0
  48. data/lib/rdi/Plugins/Views/Text/LocationSelectors/Directory.rb +44 -0
  49. data/lib/rdi/Plugins/Views/Text.rb +257 -0
  50. data/lib/rdi/Plugins/WxCommon.rb +69 -0
  51. data/lib/rdi/Plugins/WxRubyDepDesc.rb +36 -0
  52. data/lib/rdi/rdi.rb +8 -0
  53. data/test/Common.rb +796 -0
  54. data/test/Flows/BasicFlows.rb +114 -0
  55. data/test/Flows/UIFlows.rb +460 -0
  56. data/test/Plugins/ContextModifiers/GemPath.rb +44 -0
  57. data/test/Plugins/ContextModifiers/LibraryPath.rb +36 -0
  58. data/test/Plugins/ContextModifiers/RubyLoadPath.rb +36 -0
  59. data/test/Plugins/ContextModifiers/SystemPath.rb +36 -0
  60. data/test/Plugins/Installers/Download.rb +65 -0
  61. data/test/Plugins/Installers/DownloadAndInstall.rb +73 -0
  62. data/test/Plugins/Installers/Gem.rb +79 -0
  63. data/test/Plugins/LocationSelectors/Directory.rb +34 -0
  64. data/test/Plugins/Testers/Binaries.rb +46 -0
  65. data/test/Plugins/Testers/DynamicLibraries.rb +46 -0
  66. data/test/Plugins/Testers/RubyRequires.rb +48 -0
  67. data/test/Plugins/Views/SimpleWxGUI.rb +190 -0
  68. data/test/Plugins/Views/Text.rb +112 -0
  69. data/test/Plugins/WxEnv.rb +58 -0
  70. data/test/Plugins/WxEnvApp.rb +53 -0
  71. data/test/Repository/Binaries/DummyBinary +1 -0
  72. data/test/Repository/Libraries/DummyLibrary.so +1 -0
  73. data/test/Repository/RubyGems/DummyGem-0.0.1.20090828.gem +0 -0
  74. data/test/Repository/RubyGems/GemsSources/DummyGem/DummyGem.gemspec.rb +23 -0
  75. data/test/Repository/RubyGems/GemsSources/DummyGem/lib/DummyGemMain.rb +5 -0
  76. data/test/Repository/RubyLibraries/DummyRubyLib.rb +1 -0
  77. data/test/run.rb +23 -0
  78. metadata +145 -0
@@ -0,0 +1,112 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ module RDI
7
+
8
+ module Test
9
+
10
+ module Views
11
+
12
+ class Text < RDITestCase
13
+
14
+ include RDITestCase_Views
15
+
16
+ # Constructor
17
+ def setup
18
+ super
19
+ @ViewPluginName = 'Text'
20
+ end
21
+
22
+ # Initialize the context to inject the following scenario to the View plugin
23
+ #
24
+ # Parameters:
25
+ # * *ioPlugin* (_Object_): The View plugin
26
+ # * *iScenario* (<em>list<[Integer,String,Object]></em>): The scenario
27
+ # * *iMissingDependencies* (<em>list<DependencyDescription></em>): The missing dependencies list
28
+ def initScenario(ioPlugin, iScenario, iMissingDependencies)
29
+ # Index the dependencies ID
30
+ # map< String, Integer >
31
+ lDepsIndex = {}
32
+ lIdx = 0
33
+ iMissingDependencies.each do |iDepDesc|
34
+ lDepsIndex[iDepDesc.ID] = lIdx
35
+ lIdx += 1
36
+ end
37
+ # Get the list of commands to perform
38
+ # list< String >
39
+ lCmdList = []
40
+ # Display it to the user for him to perform the actions
41
+ iScenario.each do |iActionInfo|
42
+ iAction, iDepID, iParameters = iActionInfo
43
+ lStr = ''
44
+ if (iDepID != nil)
45
+ lStr += "#{lDepsIndex[iDepID]+1}."
46
+ end
47
+ case iAction
48
+ when ACTION_LOCATE
49
+ lStr += '1.'
50
+ when ACTION_IGNORE
51
+ lStr += '2.'
52
+ when ACTION_INSTALL
53
+ lStr += "3.#{iParameters[0]+1}.#{iParameters[1]+1}."
54
+ if (iParameters[2] != nil)
55
+ lCmdList << lStr
56
+ lStr = iParameters[2]
57
+ end
58
+ when ACTION_APPLY
59
+ lStr = "#{iMissingDependencies.size+1}."
60
+ when ACTION_SELECT_AFFECTING_CONTEXTMODIFIER
61
+ # Find the position of ContextModifier named iParameters[0] in the UI display
62
+ lStr += "1.#{RDI::Model::DependencyUserChoice::getAffectingContextModifiers(@Installer, iMissingDependencies[lDepsIndex[iDepID]]).index(iParameters[0])+1}."
63
+ lCmdList << lStr
64
+ lStr = iParameters[1]
65
+ else
66
+ logBug "Unknown Action: #{iAction}"
67
+ end
68
+ lCmdList << lStr
69
+ end
70
+ # Write the file that will serve $stdin
71
+ File.open("#{@Installer.TempDir}/stdin", 'w') do |iFile|
72
+ iFile << lCmdList.join("\n")
73
+ end
74
+ # Now we redirect $stdin and $stdout on files
75
+ @StdOutOrg = $stdout
76
+ $stdout = File.open("#{@Installer.TempDir}/stdout", 'w')
77
+ @StdInOrg = $stdin
78
+ $stdin = File.open("#{@Installer.TempDir}/stdin", 'r')
79
+ end
80
+
81
+ # Finalize scenarion.
82
+ # If context was modified by initScenario, revert it here.
83
+ #
84
+ # Parameters:
85
+ # * *ioPlugin* (_Object_): The View plugin
86
+ def finalScenario(ioPlugin)
87
+ # We direct back $stdin and $stdout
88
+ $stdout.close
89
+ $stdin.close
90
+ $stdout = @StdOutOrg
91
+ $stdin = @StdInOrg
92
+ end
93
+
94
+ # Call the execute method of the plugin.
95
+ #
96
+ # Parameters:
97
+ # * *ioPlugin* (_Object_): The View plugin
98
+ # * *ioInstaller* (_Installer_): The RDI installer
99
+ # * *iMissingDependencies* (<em>list<DependencyDescription></em>): The missing dependencies list
100
+ # Return:
101
+ # * <em>list<DependencyUserChoice></em>: The corresponding user choices
102
+ def executeScenario(ioPlugin, ioInstaller, iMissingDependencies)
103
+ return ioPlugin.execute(ioInstaller, iMissingDependencies)
104
+ end
105
+
106
+ end
107
+
108
+ end
109
+
110
+ end
111
+
112
+ end
@@ -0,0 +1,58 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ module RDI
7
+
8
+ module Test
9
+
10
+ module RDIWx
11
+
12
+ # Setup the Wx environment. Here are the constraints to respect:
13
+ # * It is impossible to call main_loop several times (the second times, Wx::Bitmap objects can't recognize image handlers anymore)
14
+ # * It is impossible to unload wx library and reload it (the .so library does not reload constants like Wxruby2::WXWIDGETS_MAJOR_VERSION)
15
+ # * It is impossible to fork the process (does not work on Windows)
16
+ # Therefore the solution found is to use Threads:
17
+ # * Create 1 thread that will run the main_loop
18
+ # * Make the on_init method process a kind of events loop that will be fed by test usecases
19
+ def self.installTestWxEnv
20
+ lWxRubyInstallLocation = "#{Dir.tmpdir}/RDITest/WxRubyTestInstall"
21
+ if (defined?($RDI_Test_WxApp) == nil)
22
+ require 'rdi/Plugins/WxRubyDepDesc'
23
+ RDI::Installer.new(lWxRubyInstallLocation).ensureDependencies(
24
+ [ ::RDI::getWxRubyDepDesc ],
25
+ {
26
+ :AutoInstall => DEST_OTHER,
27
+ :AutoInstallLocation => lWxRubyInstallLocation,
28
+ :PreferredViews => [ 'Text' ]
29
+ } )
30
+ # TODO: Re-enable it when WxRuby will be more stable
31
+ GC.disable
32
+ require 'wx'
33
+ setGUIForDialogs(RUtilAnts::Logging::Logger::GUI_WX)
34
+ # Create the main application
35
+ require 'Plugins/WxEnvApp'
36
+ $RDI_Test_WxApp = TestApp.new
37
+ # Create the thread that will run the application
38
+ Thread.new do
39
+ $RDI_Test_WxApp.main_loop
40
+ end
41
+ # Wait for the thread to be ready
42
+ while (!$RDI_Test_WxApp.Ready)
43
+ sleep(1)
44
+ end
45
+ else
46
+ # It is already loaded.
47
+ # Add the direcotry to the Gem path.
48
+ RDI::Installer.new(lWxRubyInstallLocation).accessPlugin('ContextModifiers', 'GemPath') do |ioPlugin|
49
+ ioPlugin.addLocationToContext(lWxRubyInstallLocation)
50
+ end
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+
58
+ end
@@ -0,0 +1,53 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ module RDI
7
+
8
+ module Test
9
+
10
+ module RDIWx
11
+
12
+ # The application that will run tests
13
+ class TestApp < Wx::App
14
+
15
+ # Exit flag
16
+ # Boolean
17
+ attr_accessor :Exit
18
+
19
+ # Ready flag
20
+ # Boolean
21
+ attr_reader :Ready
22
+
23
+ # Constructor
24
+ def initialize
25
+ super
26
+ @Exit = false
27
+ @Ready = false
28
+ end
29
+
30
+ # Init
31
+ def on_init
32
+ # Make sure other threads will be called during looping.
33
+ # We have to use this workaround, as WxRuby's threads are different than Ruby's threads
34
+ lThreadsTimer = Wx::Timer.new(self, 42)
35
+ evt_timer(42) do
36
+ Thread.pass
37
+ end
38
+ # Trigger every 100 ms
39
+ lThreadsTimer.start(100)
40
+ while (!@Exit)
41
+ @Ready = true
42
+ sleep(1)
43
+ end
44
+ return false
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1 @@
1
+ This file is a dummy binary.
@@ -0,0 +1 @@
1
+ This file is a dummy library.
@@ -0,0 +1,23 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ require 'rubygems'
7
+
8
+ # Return the Gem specification
9
+ #
10
+ # Return:
11
+ # * <em>Gem::Specification</em>: The Gem specification
12
+ Gem::Specification.new do |iSpec|
13
+ iSpec.name = 'DummyGem'
14
+ iSpec.version = '0.0.1.20090828'
15
+ iSpec.author = 'Muriel Salvan'
16
+ iSpec.email = 'murielsalvan@users.sourceforge.net'
17
+ iSpec.homepage = 'http://rdi.sourceforge.net/'
18
+ iSpec.platform = Gem::Platform::RUBY
19
+ iSpec.summary = 'A dummy Gem.'
20
+ iSpec.description = 'This Gem is used to test RubyGems functionnality only.'
21
+ iSpec.files = [ 'lib/DummyGemMain.rb' ]
22
+ iSpec.require_path = 'lib'
23
+ end
@@ -0,0 +1,5 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
@@ -0,0 +1 @@
1
+ This file is a dummy Ruby library.
data/test/run.rb ADDED
@@ -0,0 +1,23 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ # Run the test suite of RDI
7
+
8
+ lTestDir = File.dirname(__FILE__)
9
+ $LOAD_PATH << lTestDir
10
+
11
+ require 'Common'
12
+
13
+ (
14
+ Dir.glob("#{lTestDir}/Flows/*.rb") +
15
+ Dir.glob("#{lTestDir}/Plugins/Views/*.rb") +
16
+ Dir.glob("#{lTestDir}/Plugins/Testers/*.rb") +
17
+ Dir.glob("#{lTestDir}/Plugins/Installers/*.rb") +
18
+ Dir.glob("#{lTestDir}/Plugins/LocationSelectors/*.rb") +
19
+ Dir.glob("#{lTestDir}/Plugins/ContextModifiers/*.rb")
20
+ ).each do |iFileName|
21
+ # Remove the test dir from the file name, and require it.
22
+ require iFileName[lTestDir.size+1..-1]
23
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: RDI
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.20091020
5
+ platform: ruby
6
+ authors:
7
+ - Muriel Salvan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-20 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rUtilAnts
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0.1"
24
+ version:
25
+ description: "RDI is a library that gives your application the ability to install its dependencies at runtime. Perfect for plugins oriented architectures. Many kind of deps: RPMs, DEBs, .so, .dll, RubyGems... Easily extensible to new kinds."
26
+ email: murielsalvan@users.sourceforge.net
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - README
33
+ - TODO
34
+ - ChangeLog
35
+ - LICENSE
36
+ - AUTHORS
37
+ - Credits
38
+ files:
39
+ - lib/rdi/Model/DependencyDescription.rb
40
+ - lib/rdi/Model/Installer.rb
41
+ - lib/rdi/Model/Tester.rb
42
+ - lib/rdi/Model/ContextModifier.rb
43
+ - lib/rdi/Model/DependencyUserChoice.rb
44
+ - lib/rdi/Model/View.rb
45
+ - lib/rdi/Model/LocationSelector.rb
46
+ - lib/rdi/Model/ProgressView.rb
47
+ - lib/rdi/rdi.rb
48
+ - lib/rdi/Installer.rb
49
+ - lib/rdi/Plugins/Testers/RubyRequires.rb
50
+ - lib/rdi/Plugins/Testers/DynamicLibraries.rb
51
+ - lib/rdi/Plugins/Testers/Binaries.rb
52
+ - lib/rdi/Plugins/Installers/Gem.rb
53
+ - lib/rdi/Plugins/Installers/Gem.desc.rb
54
+ - lib/rdi/Plugins/Installers/Download.rb
55
+ - lib/rdi/Plugins/Installers/DownloadAndInstall.rb
56
+ - lib/rdi/Plugins/Installers/DownloadAndInstall.desc.rb
57
+ - lib/rdi/Plugins/Installers/Icons/Download.png
58
+ - lib/rdi/Plugins/Installers/Icons/Gem.png
59
+ - lib/rdi/Plugins/Installers/Icons/DownloadAndInstall.png
60
+ - lib/rdi/Plugins/Installers/Yum.rb
61
+ - lib/rdi/Plugins/RubyGemsDepDesc.rb
62
+ - lib/rdi/Plugins/ContextModifiers/GemPath.rb
63
+ - lib/rdi/Plugins/ContextModifiers/LibraryPath.rb
64
+ - lib/rdi/Plugins/ContextModifiers/GemPath.desc.rb
65
+ - lib/rdi/Plugins/ContextModifiers/RubyLoadPath.rb
66
+ - lib/rdi/Plugins/ContextModifiers/SystemPath.rb
67
+ - lib/rdi/Plugins/Views/SimpleWxGUI/DependenciesLoaderDialog.rb
68
+ - lib/rdi/Plugins/Views/SimpleWxGUI/LocationSelectors/Directory.rb
69
+ - lib/rdi/Plugins/Views/SimpleWxGUI/LocationSelectors/Directory.desc.rb
70
+ - lib/rdi/Plugins/Views/SimpleWxGUI/Icons/ValidKO.png
71
+ - lib/rdi/Plugins/Views/SimpleWxGUI/Icons/ValidOK.png
72
+ - lib/rdi/Plugins/Views/SimpleWxGUI/Icons/Dependency.png
73
+ - lib/rdi/Plugins/Views/SimpleWxGUI/Icons/Ignore.png
74
+ - lib/rdi/Plugins/Views/SimpleWxGUI/DependencyPanel.rb
75
+ - lib/rdi/Plugins/Views/Text/LocationSelectors/Directory.rb
76
+ - lib/rdi/Plugins/Views/SimpleWxGUI.rb
77
+ - lib/rdi/Plugins/Views/Text.rb
78
+ - lib/rdi/Plugins/Views/SimpleWxGUI.desc.rb
79
+ - lib/rdi/Plugins/WxRubyDepDesc.rb
80
+ - lib/rdi/Plugins/WxCommon.rb
81
+ - lib/rdi/Plugins/GemCommon.rb
82
+ - lib/rdi/Plugins/ProgressViews/SimpleWxGUI.rb
83
+ - lib/rdi/Plugins/ProgressViews/Text.rb
84
+ - lib/rdi/Plugins/ProgressViews/SimpleWxGUI.desc.rb
85
+ - test/Repository/Binaries/DummyBinary
86
+ - test/Repository/Libraries/DummyLibrary.so
87
+ - test/Repository/RubyGems/GemsSources/DummyGem/lib/DummyGemMain.rb
88
+ - test/Repository/RubyGems/GemsSources/DummyGem/DummyGem.gemspec.rb
89
+ - test/Repository/RubyGems/DummyGem-0.0.1.20090828.gem
90
+ - test/Repository/RubyLibraries/DummyRubyLib.rb
91
+ - test/Plugins/Installers/DownloadAndInstall.rb
92
+ - test/Plugins/Installers/Download.rb
93
+ - test/Plugins/Installers/Gem.rb
94
+ - test/Plugins/ContextModifiers/RubyLoadPath.rb
95
+ - test/Plugins/ContextModifiers/LibraryPath.rb
96
+ - test/Plugins/ContextModifiers/SystemPath.rb
97
+ - test/Plugins/ContextModifiers/GemPath.rb
98
+ - test/Plugins/Testers/DynamicLibraries.rb
99
+ - test/Plugins/Testers/RubyRequires.rb
100
+ - test/Plugins/Testers/Binaries.rb
101
+ - test/Plugins/LocationSelectors/Directory.rb
102
+ - test/Plugins/Views/SimpleWxGUI.rb
103
+ - test/Plugins/Views/Text.rb
104
+ - test/Plugins/WxEnv.rb
105
+ - test/Plugins/WxEnvApp.rb
106
+ - test/Flows/BasicFlows.rb
107
+ - test/Flows/UIFlows.rb
108
+ - test/run.rb
109
+ - test/Common.rb
110
+ - README
111
+ - TODO
112
+ - ChangeLog
113
+ - LICENSE
114
+ - AUTHORS
115
+ - Credits
116
+ has_rdoc: true
117
+ homepage: http://rdi.sourceforge.net/
118
+ licenses: []
119
+
120
+ post_install_message:
121
+ rdoc_options: []
122
+
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: "0"
130
+ version:
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: "0"
136
+ version:
137
+ requirements: []
138
+
139
+ rubyforge_project: rdi
140
+ rubygems_version: 1.3.5
141
+ signing_key:
142
+ specification_version: 3
143
+ summary: Library allowing applications to ensure their dependencies at runtime with UI support.
144
+ test_files:
145
+ - test/run.rb