RDI 0.1.0.20091020
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/AUTHORS +3 -0
- data/ChangeLog +46 -0
- data/Credits +21 -0
- data/LICENSE +31 -0
- data/README +18 -0
- data/TODO +17 -0
- data/lib/rdi/Installer.rb +678 -0
- data/lib/rdi/Model/ContextModifier.rb +20 -0
- data/lib/rdi/Model/DependencyDescription.rb +154 -0
- data/lib/rdi/Model/DependencyUserChoice.rb +202 -0
- data/lib/rdi/Model/Installer.rb +24 -0
- data/lib/rdi/Model/LocationSelector.rb +16 -0
- data/lib/rdi/Model/ProgressView.rb +16 -0
- data/lib/rdi/Model/Tester.rb +20 -0
- data/lib/rdi/Model/View.rb +16 -0
- data/lib/rdi/Plugins/ContextModifiers/GemPath.desc.rb +13 -0
- data/lib/rdi/Plugins/ContextModifiers/GemPath.rb +106 -0
- data/lib/rdi/Plugins/ContextModifiers/LibraryPath.rb +74 -0
- data/lib/rdi/Plugins/ContextModifiers/RubyLoadPath.rb +76 -0
- data/lib/rdi/Plugins/ContextModifiers/SystemPath.rb +74 -0
- data/lib/rdi/Plugins/GemCommon.rb +127 -0
- data/lib/rdi/Plugins/Installers/Download.rb +72 -0
- data/lib/rdi/Plugins/Installers/DownloadAndInstall.desc.rb +11 -0
- data/lib/rdi/Plugins/Installers/DownloadAndInstall.rb +54 -0
- data/lib/rdi/Plugins/Installers/Gem.desc.rb +13 -0
- data/lib/rdi/Plugins/Installers/Gem.rb +67 -0
- data/lib/rdi/Plugins/Installers/Icons/Download.png +0 -0
- data/lib/rdi/Plugins/Installers/Icons/DownloadAndInstall.png +0 -0
- data/lib/rdi/Plugins/Installers/Icons/Gem.png +0 -0
- data/lib/rdi/Plugins/Installers/Yum.rb +52 -0
- data/lib/rdi/Plugins/ProgressViews/SimpleWxGUI.desc.rb +13 -0
- data/lib/rdi/Plugins/ProgressViews/SimpleWxGUI.rb +58 -0
- data/lib/rdi/Plugins/ProgressViews/Text.rb +68 -0
- data/lib/rdi/Plugins/RubyGemsDepDesc.rb +41 -0
- data/lib/rdi/Plugins/Testers/Binaries.rb +56 -0
- data/lib/rdi/Plugins/Testers/DynamicLibraries.rb +56 -0
- data/lib/rdi/Plugins/Testers/RubyRequires.rb +76 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI/DependenciesLoaderDialog.rb +147 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI/DependencyPanel.rb +301 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI/Icons/Dependency.png +0 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI/Icons/Ignore.png +0 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI/Icons/ValidKO.png +0 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI/Icons/ValidOK.png +0 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI/LocationSelectors/Directory.desc.rb +13 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI/LocationSelectors/Directory.rb +45 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI.desc.rb +13 -0
- data/lib/rdi/Plugins/Views/SimpleWxGUI.rb +60 -0
- data/lib/rdi/Plugins/Views/Text/LocationSelectors/Directory.rb +44 -0
- data/lib/rdi/Plugins/Views/Text.rb +257 -0
- data/lib/rdi/Plugins/WxCommon.rb +69 -0
- data/lib/rdi/Plugins/WxRubyDepDesc.rb +36 -0
- data/lib/rdi/rdi.rb +8 -0
- data/test/Common.rb +796 -0
- data/test/Flows/BasicFlows.rb +114 -0
- data/test/Flows/UIFlows.rb +460 -0
- data/test/Plugins/ContextModifiers/GemPath.rb +44 -0
- data/test/Plugins/ContextModifiers/LibraryPath.rb +36 -0
- data/test/Plugins/ContextModifiers/RubyLoadPath.rb +36 -0
- data/test/Plugins/ContextModifiers/SystemPath.rb +36 -0
- data/test/Plugins/Installers/Download.rb +65 -0
- data/test/Plugins/Installers/DownloadAndInstall.rb +73 -0
- data/test/Plugins/Installers/Gem.rb +79 -0
- data/test/Plugins/LocationSelectors/Directory.rb +34 -0
- data/test/Plugins/Testers/Binaries.rb +46 -0
- data/test/Plugins/Testers/DynamicLibraries.rb +46 -0
- data/test/Plugins/Testers/RubyRequires.rb +48 -0
- data/test/Plugins/Views/SimpleWxGUI.rb +190 -0
- data/test/Plugins/Views/Text.rb +112 -0
- data/test/Plugins/WxEnv.rb +58 -0
- data/test/Plugins/WxEnvApp.rb +53 -0
- data/test/Repository/Binaries/DummyBinary +1 -0
- data/test/Repository/Libraries/DummyLibrary.so +1 -0
- data/test/Repository/RubyGems/DummyGem-0.0.1.20090828.gem +0 -0
- data/test/Repository/RubyGems/GemsSources/DummyGem/DummyGem.gemspec.rb +23 -0
- data/test/Repository/RubyGems/GemsSources/DummyGem/lib/DummyGemMain.rb +5 -0
- data/test/Repository/RubyLibraries/DummyRubyLib.rb +1 -0
- data/test/run.rb +23 -0
- metadata +145 -0
@@ -0,0 +1,154 @@
|
|
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 Model
|
9
|
+
|
10
|
+
# Class storing information about a dependency
|
11
|
+
class DependencyDescription
|
12
|
+
|
13
|
+
# ID of the description
|
14
|
+
# String
|
15
|
+
attr_reader :ID
|
16
|
+
|
17
|
+
# List of the testers that must be resolved to ensure this dependency (list of couples [ TesterName, TesterContent ])
|
18
|
+
# list< [ String, Object ] >
|
19
|
+
attr_reader :Testers
|
20
|
+
|
21
|
+
# List of the possible installers
|
22
|
+
# list< [ String, Object, list< [ String, Object ] > ] >
|
23
|
+
# list< [ InstallerName, InstallerContent, list< [ ContextModifierName, ContextModifierContent ] > ] >
|
24
|
+
attr_reader :Installers
|
25
|
+
|
26
|
+
# Constructor
|
27
|
+
#
|
28
|
+
# Parameters:
|
29
|
+
# * *iID* (_String_): ID of this description. This can be used for example to further associate context modifiers to previously installed dependencies
|
30
|
+
def initialize(iID)
|
31
|
+
@ID = iID
|
32
|
+
@Testers = []
|
33
|
+
@Installers = []
|
34
|
+
end
|
35
|
+
|
36
|
+
# Add given testers and installers lists
|
37
|
+
#
|
38
|
+
# Parameters:
|
39
|
+
# * *iTesters* (<em>list<TesterInfo></em>): List of Testers
|
40
|
+
# * *iInstallers* (<em>list<InstallerInfo></em>): List of Installers
|
41
|
+
# Return:
|
42
|
+
# * _DependencyDescription_: self, useful to concatenate such method calls
|
43
|
+
def addTestersAndInstallers(iTesters, iInstallers)
|
44
|
+
iTesters.each do |iTesterInfo|
|
45
|
+
addTesterInfo(iTesterInfo)
|
46
|
+
end
|
47
|
+
iInstallers.each do |iInstallerInfo|
|
48
|
+
addInstallerInfo(iInstallerInfo)
|
49
|
+
end
|
50
|
+
|
51
|
+
return self
|
52
|
+
end
|
53
|
+
|
54
|
+
# Add a complete description.
|
55
|
+
# Here are the formats authorized:
|
56
|
+
# * { :Testers => list< TesterInfo >, :Installers => list< InstallerInfo > }
|
57
|
+
# * [ list< TesterInfo >, list< InstallerInfo > ]
|
58
|
+
#
|
59
|
+
# Parameters:
|
60
|
+
# * *iDescription* (_Object_): The description
|
61
|
+
# Return:
|
62
|
+
# * _DependencyDescription_: self, useful to concatenate such method calls
|
63
|
+
def addDescription(iDescription)
|
64
|
+
if (iDescription.is_a?(Array))
|
65
|
+
addTestersAndInstallers(iDescription[0], iDescription[1])
|
66
|
+
elsif (iDescription.is_a?(Hash))
|
67
|
+
addTestersAndInstallers(iDescription[:Testers], iDescription[:Installers])
|
68
|
+
else
|
69
|
+
logBug "Invalid Description: #{iDescription.inspect}."
|
70
|
+
end
|
71
|
+
|
72
|
+
return self
|
73
|
+
end
|
74
|
+
|
75
|
+
# Add a tester info
|
76
|
+
# Here are the following formats accepted for each Tester info:
|
77
|
+
# * [ String, Object ]
|
78
|
+
# * { :Type => String, :Content => Object }
|
79
|
+
#
|
80
|
+
# Parameters:
|
81
|
+
# * *iTesterInfo* (_Object_): The tester info
|
82
|
+
# Return:
|
83
|
+
# * _DependencyDescription_: self, useful to concatenate such method calls
|
84
|
+
def addTesterInfo(iTesterInfo)
|
85
|
+
if (iTesterInfo.is_a?(Array))
|
86
|
+
@Testers << iTesterInfo
|
87
|
+
elsif (iTesterInfo.is_a?(Hash))
|
88
|
+
@Testers << [ iTesterInfo[:Type], iTesterInfo[:Content] ]
|
89
|
+
else
|
90
|
+
logBug "Invalid TesterInfo: #{iTesterInfo.inspect}."
|
91
|
+
end
|
92
|
+
|
93
|
+
return self
|
94
|
+
end
|
95
|
+
|
96
|
+
# Add an installer info
|
97
|
+
# Here are the following formats accepted for each Installer info:
|
98
|
+
# * [ String, Object, list< ContextModifierInfo > ]
|
99
|
+
# * [ :Type => String, :Content => Object, :ContextModifiers => list< ContextModifierInfo > ]
|
100
|
+
#
|
101
|
+
# Parameters:
|
102
|
+
# * *iInstallerInfo* (_Object_): The installer info
|
103
|
+
# Return:
|
104
|
+
# * _DependencyDescription_: self, useful to concatenate such method calls
|
105
|
+
def addInstallerInfo(iInstallerInfo)
|
106
|
+
if (iInstallerInfo.is_a?(Array))
|
107
|
+
lNewInstallerInfo = [ iInstallerInfo[0], iInstallerInfo[1], [] ]
|
108
|
+
iInstallerInfo[2].each do |iContextModifierInfo|
|
109
|
+
lNewInstallerInfo[2] << getContextModifierInfo(iContextModifierInfo)
|
110
|
+
end
|
111
|
+
@Installers << lNewInstallerInfo
|
112
|
+
elsif (iInstallerInfo.is_a?(Hash))
|
113
|
+
lNewInstallerInfo = [ iInstallerInfo[:Type], iInstallerInfo[:Content], [] ]
|
114
|
+
iInstallerInfo[:ContextModifiers].each do |iContextModifierInfo|
|
115
|
+
lNewInstallerInfo[2] << getContextModifierInfo(iContextModifierInfo)
|
116
|
+
end
|
117
|
+
@Installers << lNewInstallerInfo
|
118
|
+
else
|
119
|
+
logBug "Invalid InstallerInfo: #{iInstallerInfo.inspect}."
|
120
|
+
end
|
121
|
+
|
122
|
+
return self
|
123
|
+
end
|
124
|
+
|
125
|
+
private
|
126
|
+
|
127
|
+
# Get the corresponding context modifier info
|
128
|
+
# Here are the following formats accepted for each ContextModifier info:
|
129
|
+
# * [ String, Object ]
|
130
|
+
# * { :Type => String, :Content => Object }
|
131
|
+
#
|
132
|
+
# Parameters:
|
133
|
+
# * *iContextModifierInfo* (_Object_): The context modifier info
|
134
|
+
# Return:
|
135
|
+
# * _Object_: The resulting context modifier info as stored internally
|
136
|
+
def getContextModifierInfo(iContextModifierInfo)
|
137
|
+
rContextModifierInfo = nil
|
138
|
+
|
139
|
+
if (iContextModifierInfo.is_a?(Array))
|
140
|
+
rContextModifierInfo = iContextModifierInfo
|
141
|
+
elsif (iContextModifierInfo.is_a?(Hash))
|
142
|
+
rContextModifierInfo = [ iContextModifierInfo[:Type], iContextModifierInfo[:Content] ]
|
143
|
+
else
|
144
|
+
logBug "Invalid ContextModifierInfo: #{iContextModifierInfo.inspect}."
|
145
|
+
end
|
146
|
+
|
147
|
+
return rContextModifierInfo
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
@@ -0,0 +1,202 @@
|
|
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 Model
|
9
|
+
|
10
|
+
# Class used to store user decisions associated to a dependency
|
11
|
+
class DependencyUserChoice
|
12
|
+
|
13
|
+
# The corresponding dependency's description
|
14
|
+
# DependencyDescription
|
15
|
+
attr_reader :DepDesc
|
16
|
+
|
17
|
+
# Ignore flag
|
18
|
+
# Boolean
|
19
|
+
attr_reader :Ignore
|
20
|
+
|
21
|
+
# Locate flag
|
22
|
+
# Boolean
|
23
|
+
attr_reader :Locate
|
24
|
+
|
25
|
+
# Installer index chosen for this dependency (can be nil if not to be installed)
|
26
|
+
# Integer
|
27
|
+
attr_reader :IdxInstaller
|
28
|
+
|
29
|
+
# Destination index chosen for this dependency (can be nil if not to be installed)
|
30
|
+
# Integer
|
31
|
+
attr_reader :IdxDestination
|
32
|
+
|
33
|
+
# The resolved testers (indexes), with their respective ContextModifier name and Location used to resolve them
|
34
|
+
# map< Integer, [ String, Object ] >
|
35
|
+
attr_reader :ResolvedTesters
|
36
|
+
|
37
|
+
# The other location
|
38
|
+
# Object
|
39
|
+
attr_reader :OtherLocation
|
40
|
+
|
41
|
+
# The list of ContextModifiers that could help resolving the Testers
|
42
|
+
# list< String >
|
43
|
+
attr_reader :AffectingContextModifiers
|
44
|
+
|
45
|
+
# Constructor
|
46
|
+
#
|
47
|
+
# Parameters:
|
48
|
+
# * *ioInstaller* (_Installer_): RDI's installer used to query plugins
|
49
|
+
# * *iViewName* (_String_): Name of the view to use
|
50
|
+
# * *iDepDesc* (_DependencyDescription_): The dependency description to handle
|
51
|
+
def initialize(ioInstaller, iViewName, iDepDesc)
|
52
|
+
@Installer, @ViewName, @DepDesc = ioInstaller, iViewName, iDepDesc
|
53
|
+
@Ignore = false
|
54
|
+
@Locate = false
|
55
|
+
@IdxInstaller = 0
|
56
|
+
@IdxDestination = 0
|
57
|
+
@ResolvedTesters = {}
|
58
|
+
@OtherLocation = nil
|
59
|
+
@AffectingContextModifiers = DependencyUserChoice::getAffectingContextModifiers(@Installer, @DepDesc)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Compute the list of AffectingContextModifiers
|
63
|
+
#
|
64
|
+
# Parameters:
|
65
|
+
# * *ioInstaller* (_Installer_): The installer
|
66
|
+
# * *iDepDesc* (_DependencyDescription_): The dependency description
|
67
|
+
# Return:
|
68
|
+
# * <em>list<String></em>: The list of ContextModifiers names
|
69
|
+
def self.getAffectingContextModifiers(ioInstaller, iDepDesc)
|
70
|
+
rAffectingContextModifiers = []
|
71
|
+
|
72
|
+
# Gather the list of affecting ContextModifiers by parsing every Tester.
|
73
|
+
iDepDesc.Testers.each do |iTesterInfo|
|
74
|
+
iTesterName, iTesterContent = iTesterInfo
|
75
|
+
ioInstaller.accessPlugin('Testers', iTesterName) do |iPlugin|
|
76
|
+
rAffectingContextModifiers = (rAffectingContextModifiers + iPlugin.AffectingContextModifiers).uniq
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
return rAffectingContextModifiers
|
81
|
+
end
|
82
|
+
|
83
|
+
# Ask the user to change the context of a given context modifier to resolve this dependency
|
84
|
+
#
|
85
|
+
# Parameters:
|
86
|
+
# * *iCMName* (_String_): Name of the ContextModifier we want to use
|
87
|
+
def affectContextModifier(iCMName)
|
88
|
+
@Installer.accessPlugin('ContextModifiers', iCMName) do |ioPlugin|
|
89
|
+
# Get the name of LocationSelector class to use
|
90
|
+
lLocationSelectorName = ioPlugin.LocationSelectorName
|
91
|
+
@Installer.accessPlugin("LocationSelectors_#{@ViewName}", lLocationSelectorName) do |iLSPlugin|
|
92
|
+
# Get the location from the plugin
|
93
|
+
lLocationToTry = iLSPlugin.getNewLocation
|
94
|
+
if (lLocationToTry != nil)
|
95
|
+
# Try adding this new location if not already there
|
96
|
+
if (ioPlugin.isLocationInContext?(lLocationToTry))
|
97
|
+
logMsg "Location #{lLocationToTry} is already part of #{iCMName}"
|
98
|
+
else
|
99
|
+
# Add it
|
100
|
+
ioPlugin.addLocationToContext(lLocationToTry)
|
101
|
+
# Test Testers that were not already resolved
|
102
|
+
lIdxTester = 0
|
103
|
+
@DepDesc.Testers.each do |iTesterInfo|
|
104
|
+
if (!@ResolvedTesters.has_key?(lIdxTester))
|
105
|
+
# Test this one
|
106
|
+
iTesterName, iTesterContent = iTesterInfo
|
107
|
+
@Installer.accessPlugin('Testers', iTesterName) do |iTesterPlugin|
|
108
|
+
# Consider it only if it declares iCMName as an AffectingContextModifier
|
109
|
+
if (iTesterPlugin.AffectingContextModifiers.include?(iCMName))
|
110
|
+
if (iTesterPlugin.isContentResolved?(iTesterContent))
|
111
|
+
# Yes, it resolved this one
|
112
|
+
@ResolvedTesters[lIdxTester] = [ iCMName, lLocationToTry ]
|
113
|
+
logMsg "Location #{lLocationToTry} resolves correctly #{iTesterName} - #{iTesterContent}"
|
114
|
+
else
|
115
|
+
logErr "Location #{lLocationToTry} does not resolve #{iTesterName} - #{iTesterContent}"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
lIdxTester += 1
|
121
|
+
end
|
122
|
+
# Remove it
|
123
|
+
ioPlugin.removeLocationFromContext(lLocationToTry)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# Select a different install location for this dependency
|
131
|
+
#
|
132
|
+
# Parameters:
|
133
|
+
# * *iLocationSelectorName* (_String_): The location selector name
|
134
|
+
# Return:
|
135
|
+
# * _Boolean_: Is the selection valid ?
|
136
|
+
def selectOtherInstallLocation(iLocationSelectorName)
|
137
|
+
rSuccess = false
|
138
|
+
|
139
|
+
@Installer.accessPlugin("LocationSelectors_#{@ViewName}", iLocationSelectorName) do |iPlugin|
|
140
|
+
# Get the location from the plugin
|
141
|
+
lInstallLocation = iPlugin.getNewLocation
|
142
|
+
if (lInstallLocation != nil)
|
143
|
+
@OtherLocation = lInstallLocation
|
144
|
+
rSuccess = true
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
return rSuccess
|
149
|
+
end
|
150
|
+
|
151
|
+
# Set this choice to be "locate it"
|
152
|
+
def setLocate
|
153
|
+
@Ignore = false
|
154
|
+
@Locate = true
|
155
|
+
@IdxInstaller = nil
|
156
|
+
@IdxDestination = nil
|
157
|
+
end
|
158
|
+
|
159
|
+
# Set this choice to be "ignore it"
|
160
|
+
def setIgnore
|
161
|
+
@Ignore = true
|
162
|
+
@Locate = false
|
163
|
+
@IdxInstaller = nil
|
164
|
+
@IdxDestination = nil
|
165
|
+
end
|
166
|
+
|
167
|
+
# Set this choice to be "install it"
|
168
|
+
#
|
169
|
+
# Parameters:
|
170
|
+
# * *iIdxInstaller* (_Integer_): The Installer's index
|
171
|
+
# * *iIdxDestination* (_Integer_): The destination's index
|
172
|
+
def setInstaller(iIdxInstaller, iIdxDestination)
|
173
|
+
@Ignore = false
|
174
|
+
@Locate = false
|
175
|
+
@IdxInstaller = iIdxInstaller
|
176
|
+
@IdxDestination = iIdxDestination
|
177
|
+
end
|
178
|
+
|
179
|
+
# Do we equal another user choice ?
|
180
|
+
# Used by the regression
|
181
|
+
#
|
182
|
+
# Parameters:
|
183
|
+
# * *iOtherDUC* (_DependencyOtherChoice_): The other one
|
184
|
+
# Return:
|
185
|
+
# * _Boolean_: Do we equal another user choice ?
|
186
|
+
def ==(iOtherDUC)
|
187
|
+
return (
|
188
|
+
(@DepDesc == iOtherDUC.DepDesc) and
|
189
|
+
(@Ignore == iOtherDUC.Ignore) and
|
190
|
+
(@Locate == iOtherDUC.Locate) and
|
191
|
+
(@IdxInstaller == iOtherDUC.IdxInstaller) and
|
192
|
+
(@IdxDestination == iOtherDUC.IdxDestination) and
|
193
|
+
(@ResolvedTesters == iOtherDUC.ResolvedTesters) and
|
194
|
+
(@OtherLocation == iOtherDUC.OtherLocation)
|
195
|
+
)
|
196
|
+
end
|
197
|
+
|
198
|
+
end
|
199
|
+
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
@@ -0,0 +1,24 @@
|
|
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 Model
|
9
|
+
|
10
|
+
class Installer
|
11
|
+
|
12
|
+
# The Installer
|
13
|
+
# Installer
|
14
|
+
attr_accessor :Installer
|
15
|
+
|
16
|
+
# The list of possible destinations, and the directories they point to
|
17
|
+
# map< Integer, String >
|
18
|
+
attr_accessor :PossibleDestinations
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
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 Model
|
9
|
+
|
10
|
+
class LocationSelector
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
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 Model
|
9
|
+
|
10
|
+
class ProgressView
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,20 @@
|
|
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 Model
|
9
|
+
|
10
|
+
class Tester
|
11
|
+
|
12
|
+
# The list of affecting context modifier names
|
13
|
+
# list< String >
|
14
|
+
attr_accessor :AffectingContextModifiers
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,13 @@
|
|
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 'rdi/Plugins/RubyGemsDepDesc'
|
7
|
+
|
8
|
+
{
|
9
|
+
:Dependencies => [
|
10
|
+
# RubyGems
|
11
|
+
::RDI::getRubyGemsDepDesc
|
12
|
+
]
|
13
|
+
}
|
@@ -0,0 +1,106 @@
|
|
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 'rdi/Model/ContextModifier'
|
7
|
+
require 'rdi/Plugins/GemCommon'
|
8
|
+
|
9
|
+
module RDI
|
10
|
+
|
11
|
+
module ContextModifiers
|
12
|
+
|
13
|
+
class GemPath < RDI::Model::ContextModifier
|
14
|
+
|
15
|
+
# To get the complete list of loadable paths through RubyGems:
|
16
|
+
# > Gem.all_loaded_paths
|
17
|
+
# C:/Program Files/ruby/lib/ruby/gems/1.8/gems/win32-process-0.5.1/lib
|
18
|
+
# C:/Program Files/ruby/lib/ruby/gems/1.8/gems/win32-sapi-0.1.3-mswin32/lib
|
19
|
+
# C:/Program Files/ruby/lib/ruby/gems/1.8/gems/win32-sound-0.4.0/lib
|
20
|
+
# C:/Program Files/ruby/lib/ruby/gems/1.8/gems/windows-pr-0.5.3/lib
|
21
|
+
# E:/Documents and Settings/Muriel Salvan/toto/gems/crated-0.2.1/lib
|
22
|
+
#
|
23
|
+
# Find if a file is accessible
|
24
|
+
# > Gem.find_files('crate')
|
25
|
+
#
|
26
|
+
# To add a new Gems repository:
|
27
|
+
# > Gem.path << 'E:/Documents and Settings/Muriel Salvan/toto'
|
28
|
+
#
|
29
|
+
# To remove a Gems repository:
|
30
|
+
# > Gem.clear_paths
|
31
|
+
# Then re-add others than the one we want to remove
|
32
|
+
|
33
|
+
# Get the name of classes that provide selection facility for locations
|
34
|
+
#
|
35
|
+
# Return:
|
36
|
+
# * _String_: The name of the LocationSelector class
|
37
|
+
def getLocationSelectorName
|
38
|
+
return 'Directory'
|
39
|
+
end
|
40
|
+
|
41
|
+
# Transform a given content based on an installation environment.
|
42
|
+
# This is called to pass some specific installation parameters to a more generic content (useful for installation directories for example)
|
43
|
+
#
|
44
|
+
# Parameters:
|
45
|
+
# * *iLocation* (_Object_): Location to transform
|
46
|
+
# * *iInstallEnv* (<em>map<Symbol,Object></em>): The installation environment that called this context modification
|
47
|
+
# Return:
|
48
|
+
# * _Object_: The location transformed with the installation environment
|
49
|
+
def transformContentWithInstallEnv(iLocation, iInstallEnv)
|
50
|
+
rNewLocation = iLocation
|
51
|
+
|
52
|
+
lInstallDir = iInstallEnv[:InstallDir]
|
53
|
+
if (lInstallDir != nil)
|
54
|
+
rNewLocation = iLocation.gsub(/%INSTALLDIR%/, lInstallDir)
|
55
|
+
end
|
56
|
+
|
57
|
+
return rNewLocation
|
58
|
+
end
|
59
|
+
|
60
|
+
# Is a given location present in the context ?
|
61
|
+
#
|
62
|
+
# Parameters:
|
63
|
+
# * *iLocation* (_Object_): Location to add
|
64
|
+
# Return:
|
65
|
+
# * _Boolean_: Is the location already present ?
|
66
|
+
def isLocationInContext?(iLocation)
|
67
|
+
# * *iLocation* (_String_): Directory
|
68
|
+
return Gem.path.include?(iLocation)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Add a given location to the context
|
72
|
+
#
|
73
|
+
# Parameters:
|
74
|
+
# * *iLocation* (_Object_): Location to add
|
75
|
+
def addLocationToContext(iLocation)
|
76
|
+
# * *iLocation* (_String_): Directory
|
77
|
+
Gem.path << iLocation
|
78
|
+
# TODO (RubyGems): Make the extra source_index modification useless. Adding to path should reflect changes internally.
|
79
|
+
Gem.source_index.spec_dirs << "#{iLocation}/specifications"
|
80
|
+
Gem.refresh
|
81
|
+
end
|
82
|
+
|
83
|
+
# Remove a given location from the context
|
84
|
+
#
|
85
|
+
# Parameters:
|
86
|
+
# * *iLocation* (_Object_): Location to remove
|
87
|
+
def removeLocationFromContext(iLocation)
|
88
|
+
# * *iLocation* (_String_): Directory
|
89
|
+
lLastPaths = Gem.path.clone
|
90
|
+
Gem.clear_paths
|
91
|
+
lLastPaths.each do |iLastDir|
|
92
|
+
if ((iLastDir != iLocation) and
|
93
|
+
(!Gem.path.include?(iLastDir)))
|
94
|
+
Gem.path << iLastDir
|
95
|
+
# TODO (RubyGems): Make the extra source_index modification useless. Adding to path should reflect changes internally.
|
96
|
+
Gem.source_index.spec_dirs << "#{iLastDir}/specifications"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
Gem.refresh
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
@@ -0,0 +1,74 @@
|
|
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 'rdi/Model/ContextModifier'
|
7
|
+
|
8
|
+
module RDI
|
9
|
+
|
10
|
+
module ContextModifiers
|
11
|
+
|
12
|
+
class LibraryPath < RDI::Model::ContextModifier
|
13
|
+
|
14
|
+
# Get the name of classes that provide selection facility for locations
|
15
|
+
#
|
16
|
+
# Return:
|
17
|
+
# * _String_: The name of the LocationSelector class
|
18
|
+
def getLocationSelectorName
|
19
|
+
return 'Directory'
|
20
|
+
end
|
21
|
+
|
22
|
+
# Transform a given content based on an installation environment.
|
23
|
+
# This is called to pass some specific installation parameters to a more generic content (useful for installation directories for example)
|
24
|
+
#
|
25
|
+
# Parameters:
|
26
|
+
# * *iLocation* (_Object_): Location to transform
|
27
|
+
# * *iInstallEnv* (<em>map<Symbol,Object></em>): The installation environment that called this context modification
|
28
|
+
# Return:
|
29
|
+
# * _Object_: The location transformed with the installation environment
|
30
|
+
def transformContentWithInstallEnv(iLocation, iInstallEnv)
|
31
|
+
rNewLocation = iLocation
|
32
|
+
|
33
|
+
lInstallDir = iInstallEnv[:InstallDir]
|
34
|
+
if (lInstallDir != nil)
|
35
|
+
rNewLocation = iLocation.gsub(/%INSTALLDIR%/, lInstallDir)
|
36
|
+
end
|
37
|
+
|
38
|
+
return rNewLocation
|
39
|
+
end
|
40
|
+
|
41
|
+
# Is a given location present in the context ?
|
42
|
+
#
|
43
|
+
# Parameters:
|
44
|
+
# * *iLocation* (_Object_): Location to add
|
45
|
+
# Return:
|
46
|
+
# * _Boolean_: Is the location already present ?
|
47
|
+
def isLocationInContext?(iLocation)
|
48
|
+
# * *iLocation* (_String_): Directory
|
49
|
+
return $rUtilAnts_Platform_Info.getSystemLibsPath.include?(iLocation)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Add a given location to the context
|
53
|
+
#
|
54
|
+
# Parameters:
|
55
|
+
# * *iLocation* (_Object_): Location to add
|
56
|
+
def addLocationToContext(iLocation)
|
57
|
+
# * *iLocation* (_String_): Directory
|
58
|
+
$rUtilAnts_Platform_Info.setSystemLibsPath($rUtilAnts_Platform_Info.getSystemLibsPath + [ iLocation ])
|
59
|
+
end
|
60
|
+
|
61
|
+
# Remove a given location from the context
|
62
|
+
#
|
63
|
+
# Parameters:
|
64
|
+
# * *iLocation* (_Object_): Location to remove
|
65
|
+
def removeLocationFromContext(iLocation)
|
66
|
+
# * *iLocation* (_String_): Directory
|
67
|
+
$rUtilAnts_Platform_Info.setSystemLibsPath($rUtilAnts_Platform_Info.getSystemLibsPath - [ iLocation ])
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|