asproject 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/CHANGELOG.txt +0 -0
  2. data/History.txt +0 -0
  3. data/MIT-LICENSE.txt +20 -0
  4. data/Manifest.txt +16 -0
  5. data/README.txt +3 -0
  6. data/TODO.txt +10 -0
  7. data/bin/asclass +16 -0
  8. data/bin/asproject +16 -0
  9. data/lib/asclass.rb +254 -0
  10. data/lib/asclass_arguments.rb +147 -0
  11. data/lib/asproject.rb +248 -0
  12. data/lib/asproject/version.rb +9 -0
  13. data/lib/asproject_arguments.rb +175 -0
  14. data/lib/asproject_base.rb +43 -0
  15. data/lib/asproject_utils.rb +57 -0
  16. data/lib/eclipse_project.rb +32 -0
  17. data/lib/path_finder.rb +286 -0
  18. data/lib/platform.rb +107 -0
  19. data/lib/project.rb +82 -0
  20. data/lib/template_resolver.rb +144 -0
  21. data/lib/test_suite_generator.rb +128 -0
  22. data/rakefile.rb +85 -0
  23. data/setup.rb +1585 -0
  24. data/templates/asclass/as2/Class.as +11 -0
  25. data/templates/asclass/as2/Component.as +8 -0
  26. data/templates/asclass/as2/Interface.as +3 -0
  27. data/templates/asclass/as2/TestCase.as +30 -0
  28. data/templates/asclass/as2/TestSuite.as +15 -0
  29. data/templates/asclass/as3/Class.as +9 -0
  30. data/templates/asclass/as3/Component.as +9 -0
  31. data/templates/asclass/as3/Component.mxml +1 -0
  32. data/templates/asclass/as3/Interface.as +6 -0
  33. data/templates/asclass/as3/TestCase.as +30 -0
  34. data/templates/asclass/as3/TestSuite.as +18 -0
  35. data/templates/asproject/as2/project/rakefile.rb +18 -0
  36. data/templates/asproject/as2/project/src/AsProject.as +13 -0
  37. data/templates/asproject/as2/project/test/AsProjectRunner.as +12 -0
  38. data/templates/asproject/as3/project/rakefile.rb +18 -0
  39. data/templates/asproject/as3/project/src/AsProject.as +9 -0
  40. data/templates/asproject/as3/project/src/AsProjectRunner.as +11 -0
  41. data/templates/asproject/asunit2/project/lib/asunit/AsUnitUi.swf +0 -0
  42. data/templates/asproject/asunit2/project/lib/asunit/Sys.as +70 -0
  43. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanel.as +182 -0
  44. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTest.as +84 -0
  45. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTextArea.as +111 -0
  46. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTextAreaTest.as +26 -0
  47. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTitleBar.as +81 -0
  48. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ResizeHandle.as +35 -0
  49. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollArrow.as +34 -0
  50. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollHandle.as +43 -0
  51. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollListener.as +10 -0
  52. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/TextScroller.as +169 -0
  53. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/shapes/Rectangle.as +29 -0
  54. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/shapes/Triangle.as +27 -0
  55. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/AsUnit.as +19 -0
  56. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Assert.as +408 -0
  57. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Assertion.as +27 -0
  58. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Reflection.as +68 -0
  59. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Test.as +3 -0
  60. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestCase.as +191 -0
  61. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestCaseXml.as +31 -0
  62. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestFailure.as +15 -0
  63. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestResult.as +15 -0
  64. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestRunner.as +41 -0
  65. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestSetup.as +19 -0
  66. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestSuite.as +22 -0
  67. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/Main.as +325 -0
  68. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/RemoteVersion.as +24 -0
  69. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/SuccessMeter.as +32 -0
  70. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/Comparable.as +7 -0
  71. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/EventListener.as +29 -0
  72. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/EventSource.as +89 -0
  73. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnClient.as +42 -0
  74. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnGateway.as +47 -0
  75. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnServer.as +61 -0
  76. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalMessageBroker.as +58 -0
  77. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/Observable.as +11 -0
  78. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/TextFile.as +30 -0
  79. data/templates/asproject/asunit25/project/lib/asunit/AsUnitTestRunner.as +13 -0
  80. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/AssertionFailedError.as +7 -0
  81. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/AssertionPassedError.as +7 -0
  82. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/ClassNotFoundError.as +7 -0
  83. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/IllegalOperationError.as +7 -0
  84. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/InstanceNotFoundError.as +7 -0
  85. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/InvocationTargetError.as +7 -0
  86. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/UnimplementedFeatureError.as +7 -0
  87. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/Assert.as +376 -0
  88. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/AssertMock.as +15 -0
  89. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/AssertTest.as +59 -0
  90. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/ITestListener.as +13 -0
  91. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/Test.as +11 -0
  92. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCase.as +277 -0
  93. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseMock.as +23 -0
  94. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseTest.as +29 -0
  95. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseXml.as +38 -0
  96. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestFailure.as +47 -0
  97. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestResult.as +168 -0
  98. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestSuite.as +102 -0
  99. data/templates/asproject/asunit25/project/lib/asunit/asunit/runner/BaseTestRunner.as +101 -0
  100. data/templates/asproject/asunit25/project/lib/asunit/asunit/runner/IResultPrinter.as +8 -0
  101. data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/ResultPrinter.as +254 -0
  102. data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/SuccessBar.as +41 -0
  103. data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/TestRunner.as +17 -0
  104. data/templates/asproject/asunit25/project/lib/asunit/asunit/util/ArrayIterator.as +24 -0
  105. data/templates/asproject/asunit25/project/lib/asunit/asunit/util/ArrayIteratorTest.as +52 -0
  106. data/templates/asproject/asunit25/project/lib/asunit/asunit/util/Iterator.as +5 -0
  107. data/templates/asproject/asunit3/project/lib/asunit/AsUnitTestRunner.as +10 -0
  108. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/AbstractMemberCalledError.as +10 -0
  109. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/AssertionFailedError.as +10 -0
  110. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/ClassNotFoundError.as +10 -0
  111. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/InstanceNotFoundError.as +10 -0
  112. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/UnimplementedFeatureError.as +10 -0
  113. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/Assert.as +271 -0
  114. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/AsynchronousTestCase.as +52 -0
  115. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/AsynchronousTestCaseExample.as +71 -0
  116. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/Test.as +15 -0
  117. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestCase.as +351 -0
  118. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestCaseExample.as +73 -0
  119. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestFailure.as +47 -0
  120. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestListener.as +22 -0
  121. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestResult.as +158 -0
  122. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestSuite.as +115 -0
  123. data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/BaseTestRunner.as +15 -0
  124. data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/TestSuiteLoader.as +9 -0
  125. data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/Version.as +11 -0
  126. data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/FlexRunner.as +19 -0
  127. data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/FlexTestRunner.as +55 -0
  128. data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/ResultPrinter.as +245 -0
  129. data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/TestRunner.as +121 -0
  130. data/templates/asproject/asunit3/project/lib/asunit/asunit/util/ArrayIterator.as +26 -0
  131. data/templates/asproject/asunit3/project/lib/asunit/asunit/util/Iterator.as +9 -0
  132. data/templates/asproject/asunit3/project/lib/asunit/asunit/util/Properties.as +30 -0
  133. data/templates/asproject/asunit3/project/lib/asunit/mx/managers/LayoutManager.as +945 -0
  134. data/templates/asproject/config/project/config/asclass_config.rb +58 -0
  135. data/templates/asproject/fb2as/project/.actionScriptProperties +21 -0
  136. data/templates/asproject/fb2as/project/.project +29 -0
  137. data/templates/asproject/fdt/project/.as2_classpath +6 -0
  138. data/templates/asproject/fdt/project/.project +19 -0
  139. data/templates/ide/mate/Create Class.tmCommand +37 -0
  140. data/templates/ide/mate/Rebuild Test Suites.tmCommand +33 -0
  141. data/templates/ide/mate/Run Rake Task.tmCommand +127 -0
  142. metadata +266 -0
@@ -0,0 +1,57 @@
1
+
2
+ module AsProject
3
+
4
+ ##########################
5
+ # Custom Errors
6
+ class ProjectError < StandardError; end
7
+ class UsageError < ProjectError; end
8
+ end
9
+
10
+ RAND_CHARS = ['A','B','C','D','E','F','a','b','c','d','e','f']
11
+
12
+ def Dir::unique_tmpdir(application='RubyApplication')
13
+ rand_max = RAND_CHARS.size
14
+ uniqueish_name = ''
15
+ 24.times{ uniqueish_name << RAND_CHARS[rand(rand_max)] }
16
+
17
+ tmp = Dir.tmpdir
18
+ app_tmp = File.join(tmp, application)
19
+ if(!File.exists?(app_tmp))
20
+ Dir.mkdir(app_tmp)
21
+ end
22
+
23
+ tmp = File.expand_path(File.join(app_tmp, uniqueish_name))
24
+ if(File.exists?(tmp) && is_retry)
25
+ raise ProjectError.new('Dir.unique_tmpdir attempted to create a new dir over an existing dir')
26
+ # else if(File.exists?(tmp))
27
+ # Try again once before failing, uniqueish names aren't too unique...
28
+ # Dir.unique_tmpdir(application, true)
29
+ end
30
+ Dir.mkdir(tmp)
31
+ return tmp
32
+ end
33
+
34
+ def Dir::tmpdir
35
+ tmp = nil
36
+ for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'],
37
+ ENV['USERPROFILE'], '/tmp']
38
+ if dir and File.directory?(dir) and File.writable?(dir)
39
+ tmp = dir
40
+ break
41
+ end
42
+ end
43
+ if(tmp.nil?)
44
+ raise ProjectError.new('AsProject was unable to find a valid temporary directory on this computer.')
45
+ end
46
+ # Has to actually CD to the dir, because
47
+ # on os x, tmp == /tmp until you're in it,
48
+ # then it's /private/tmp?!
49
+ # TestCases are relying on this value to
50
+ # Be identical when you retrieve it and
51
+ # when you are 'in' it...
52
+ start = Dir.pwd
53
+ Dir.chdir(tmp)
54
+ tmp = Dir.pwd
55
+ Dir.chdir(start)
56
+ return tmp
57
+ end
@@ -0,0 +1,32 @@
1
+
2
+ require 'rexml/document'
3
+
4
+ module AsProject
5
+ class EclipseProject < Project
6
+
7
+ def initialize(dir=nil)
8
+ super(dir)
9
+ @project_name = ''
10
+ @file_path = nil
11
+ if(!dir.nil?)
12
+ self.file_path = File.join(dir, '.project')
13
+ end
14
+ end
15
+
16
+ def file_path=(path)
17
+ @file_path = path
18
+ file = File.open(path, 'r')
19
+ parse(file.read)
20
+ file.close
21
+ end
22
+
23
+ def parse(str)
24
+ xml = REXML::Document.new(str)
25
+ @project_name = REXML::XPath.first(xml, '//projectDescription/name').text
26
+ end
27
+
28
+ def file_path
29
+ return @file_path
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,286 @@
1
+
2
+ module AsProject
3
+ class PathFinder < TemplateResolver
4
+ attr_accessor :execution_dir
5
+
6
+ def initialize(execution_dir)
7
+ super()
8
+ @execution_dir = execution_dir
9
+ @current_project = nil
10
+ @user = create_user
11
+ end
12
+
13
+ def gem_asproject_home
14
+ parent = File.dirname(File.dirname(__FILE__))
15
+ return File.expand_path(parent)
16
+ end
17
+
18
+ def user_library
19
+ return @user.library
20
+ end
21
+
22
+ def user_home
23
+ return @user.home
24
+ end
25
+
26
+ def user_asproject_home
27
+ return @user.asproject_home
28
+ end
29
+
30
+ def current_project=(dir)
31
+ @current_project = dir
32
+ end
33
+
34
+ # Don't store the 'inspected' current_project
35
+ # Only store it if the value was set from
36
+ # outside
37
+ def current_project
38
+ if(@current_project.nil?)
39
+ return find_project(@execution_dir)
40
+ else
41
+ return @current_project
42
+ end
43
+ end
44
+
45
+ def get_children(dir)
46
+ list = []
47
+ if(dir.nil?)
48
+ return list
49
+ end
50
+ Dir.open(dir).each do |child|
51
+ if(!AsProject.ignore_file? child)
52
+ list << child
53
+ end
54
+ end
55
+ return list
56
+ end
57
+
58
+ # Collect and return all available templates from:
59
+ # (PROJECT_PATH)/config/templates/(TYPE)/
60
+ # (USER_HOME)/(ASPROJECT_HOME)/templates/
61
+ # (ASPROJECT_GEM_HOME)/templates
62
+ def get_available_templates(type)
63
+ project_templates = get_children(get_project_template(type, ''))
64
+ user_templates = get_children(get_user_template(type, ''))
65
+ gem_templates = get_children(get_gem_template(type, ''))
66
+ result = []
67
+ project_templates.each do |template|
68
+ result << template
69
+ end
70
+ user_templates.each do |template|
71
+ if(!result.index(template))
72
+ result << template
73
+ end
74
+ end
75
+ gem_templates.each do |template|
76
+ if(!result.index(template))
77
+ result << template
78
+ end
79
+ end
80
+ return result
81
+ end
82
+
83
+ # @type: 'class' or 'project'
84
+ # @name: 'as3', 'mxml', 'fb2', or user-created folder name
85
+ # Represents folders inside of the appropriate template type dir
86
+ def get_template(type, name)
87
+ template = get_project_template(type, name)
88
+ if(template.nil?)
89
+ template = get_user_template(type, name)
90
+ end
91
+ if(template.nil?)
92
+ template = get_gem_template(type, name)
93
+ end
94
+ return template
95
+ end
96
+
97
+ def get_project_template(type, name)
98
+ begin
99
+ if(@execution_dir.nil?)
100
+ dir = Dir.pwd
101
+ else
102
+ dir = @execution_dir
103
+ end
104
+ project = find_project(dir)
105
+ template = File.join(project, 'config', 'templates', type, name)
106
+ if(File.exists? template)
107
+ return template
108
+ else
109
+ return nil
110
+ end
111
+ rescue
112
+ return nil
113
+ end
114
+ end
115
+
116
+ def get_user_template(type, name)
117
+ template = File.expand_path(File.join(user_asproject_home, 'templates', type, name))
118
+ if(File.exists? template)
119
+ return template
120
+ else
121
+ return nil
122
+ end
123
+ end
124
+
125
+ def get_gem_template(type, name)
126
+ template = File.expand_path(File.join(gem_asproject_home, 'templates', type, name))
127
+ if(File.exists? template)
128
+ return template
129
+ end
130
+ raise ProjectError.new('Requested template not found at ' + template)
131
+ end
132
+
133
+ private
134
+ def find_project(dir)
135
+ if(is_project? dir)
136
+ return dir
137
+ elsif(File.dirname(dir) == dir)
138
+ raise ProjectError.new('AsProject::PathFinder reached the root of the file system without finding a valid project.')
139
+ else
140
+ find_project(File.dirname(dir))
141
+ end
142
+ end
143
+
144
+ # Why wouldn't RDT let me spread this if statement
145
+ # Over multiple lines?
146
+ private
147
+ def is_project?(dir)
148
+ return (has_config_yaml?(dir) || has_eclipse_project?(dir) || has_src_eclipse_project?(dir) || has_src_and_test?(dir))
149
+ end
150
+
151
+ def has_config_yaml?(dir)
152
+ return File.exists?(File.join(dir, 'config', 'asproject.yaml'))
153
+ end
154
+
155
+ def has_eclipse_project?(dir)
156
+ return File.exists?(File.join(dir, '.project'))
157
+ end
158
+
159
+ def has_src_eclipse_project?(dir)
160
+ return File.exists?(File.join(dir, 'src', '.project'))
161
+ end
162
+
163
+ def has_src_and_test?(dir)
164
+ return File.directory?(File.join(dir, 'src')) && File.directory?(File.join(dir, 'test'))
165
+ end
166
+
167
+ private
168
+ def create_user
169
+ os = Platform::OS
170
+ impl = Platform::IMPL
171
+ if(os == :win32 || os == :unix && impl == :cygwin)
172
+ @user = WinUser.new
173
+ elsif(os == :unix && impl == :macosx)
174
+ @user = OSXUser.new
175
+ else
176
+ @user = User.new
177
+ end
178
+ end
179
+ end
180
+
181
+ #############################
182
+ # User class
183
+ class User
184
+
185
+ def initialize
186
+ @default_asproject = '.asproject'
187
+ end
188
+
189
+ def asproject_home
190
+ return get_or_create(File.join(home, @default_asproject))
191
+ end
192
+
193
+ def library
194
+ return home
195
+ end
196
+
197
+ def home
198
+ ["HOME", "USERPROFILE"].each do |homekey|
199
+ return ENV[homekey] if ENV[homekey]
200
+ end
201
+
202
+ if ENV["HOMEDRIVE"] && ENV["HOMEPATH"]
203
+ return "#{ENV["HOMEDRIVE"]}:#{ENV["HOMEPATH"]}"
204
+ end
205
+
206
+ begin
207
+ File.expand_path("~")
208
+ rescue StandardError => ex
209
+ if File::ALT_SEPARATOR
210
+ "C:/"
211
+ else
212
+ "/"
213
+ end
214
+ end
215
+ end
216
+
217
+ def file_exists?(file)
218
+ return File.exists?(file)
219
+ end
220
+
221
+ def get_or_create dir
222
+ if(!file_exists? dir)
223
+ Dir.mkdir dir
224
+ end
225
+ return dir
226
+ end
227
+ end
228
+
229
+ class WinUser < User
230
+ @@LOCAL_SETTINGS = "Local\ Settings"
231
+ @@APPLICATION_DATA = "Application\ Data"
232
+
233
+ def initialize
234
+ super
235
+ @win_asproject = 'AsProject'
236
+ end
237
+
238
+ def library
239
+ usr = home
240
+ # For some reason, my homepath returns inside 'My Documents'...
241
+ if(usr.index "My Documents")
242
+ usr = File.dirname(usr)
243
+ end
244
+ application_data = File.join(usr, @@LOCAL_SETTINGS, @@APPLICATION_DATA)
245
+ if(File.exists?(application_data))
246
+ return application_data
247
+ else
248
+ return super
249
+ end
250
+ end
251
+
252
+ def asproject_home
253
+ if(library == home)
254
+ return super
255
+ end
256
+ ap_home = File.join(library, @win_asproject);
257
+ return get_or_create(ap_home)
258
+ end
259
+ end
260
+
261
+ class OSXUser < User
262
+ @@LIBRARY = 'Library'
263
+
264
+ def initialize
265
+ super
266
+ @osx_asproject = 'AsProject'
267
+ end
268
+
269
+ def library
270
+ lib = File.join(home, @@LIBRARY)
271
+ if(File.exists?(lib))
272
+ return lib
273
+ else
274
+ return super
275
+ end
276
+ end
277
+
278
+ def asproject_home
279
+ if(library == home)
280
+ return super
281
+ end
282
+ ap_home = File.join(library, @osx_asproject)
283
+ get_or_create(ap_home)
284
+ end
285
+ end
286
+ end
@@ -0,0 +1,107 @@
1
+ #
2
+ # platform.rb: naive platform detection for Ruby
3
+ # author: Matt Mower <self@mattmower.com>
4
+ #
5
+
6
+ # == Platform
7
+ #
8
+ # Platform is a simple module which parses the Ruby constant
9
+ # RUBY_PLATFORM and works out the OS, it's implementation,
10
+ # and the architecture it's running on.
11
+ #
12
+ # The motivation for writing this was coming across a case where
13
+ #
14
+ # +if RUBY_PLATFORM =~ /win/+
15
+ #
16
+ # didn't behave as expected (i.e. on powerpc-darwin-8.1.0)
17
+ #
18
+ # It is hoped that providing a library for parsing the platform
19
+ # means that we can cover all the cases and have something which
20
+ # works reliably 99% of the time.
21
+ #
22
+ # Please report any anomalies or new combinations to the author(s).
23
+ #
24
+ # == Use
25
+ #
26
+ # require "platform"
27
+ #
28
+ # defines
29
+ #
30
+ # Platform::OS (:unix,:win32,:vms,:os2)
31
+ # Platform::impl (:macosx,:linux,:mswin)
32
+ # Platform::arch (:powerpc,:x86,:alpha)
33
+ #
34
+ # if an unknown configuration is encountered any (or all) of
35
+ # these constant may have the value :unknown.
36
+ #
37
+ # To display the combination for your setup run
38
+ #
39
+ # ruby platform.rb
40
+ #
41
+ module Platform
42
+ os = nil
43
+ impl = nil
44
+ arch = nil
45
+
46
+ if RUBY_PLATFORM =~ /darwin/i
47
+ os = :unix
48
+ impl = :macosx
49
+ elsif RUBY_PLATFORM =~ /linux/i
50
+ os = :unix
51
+ impl = :linux
52
+ elsif RUBY_PLATFORM =~ /freebsd/i
53
+ os = :unix
54
+ impl = :freebsd
55
+ elsif RUBY_PLATFORM =~ /netbsd/i
56
+ os = :unix
57
+ impl = :netbsd
58
+ elsif RUBY_PLATFORM =~ /mswin/i
59
+ os = :win32
60
+ impl = :mswin
61
+ elsif RUBY_PLATFORM =~ /cygwin/i
62
+ os = :unix
63
+ impl = :cygwin
64
+ elsif RUBY_PLATFORM =~ /mingw/i
65
+ os = :win32
66
+ impl = :mingw
67
+ elsif RUBY_PLATFORM =~ /bccwin/i
68
+ os = :win32
69
+ impl = :bccwin
70
+ elsif RUBY_PLATFORM =~ /wince/i
71
+ os = :win32
72
+ impl = :wince
73
+ elsif RUBY_PLATFORM =~ /vms/i
74
+ os = :vms
75
+ impl = :vms
76
+ elsif RUBY_PLATFORM =~ /os2/i
77
+ os = :os2
78
+ impl = :os2 # maybe there is some better choice here?
79
+ else
80
+ os = :unknown
81
+ impl = :unknown
82
+ end
83
+
84
+ # whither AIX, SOLARIS, and the other unixen?
85
+
86
+ if RUBY_PLATFORM =~ /(i\d86)/i
87
+ arch = :x86
88
+ elsif RUBY_PLATFORM =~ /ia64/i
89
+ arch = :ia64
90
+ elsif RUBY_PLATFORM =~ /powerpc/i
91
+ arch = :powerpc
92
+ elsif RUBY_PLATFORM =~ /alpha/i
93
+ arch = :alpha
94
+ else
95
+ arch = :unknown
96
+ end
97
+
98
+ OS = os
99
+ IMPL = impl
100
+ ARCH = arch
101
+ # What about AMD, Turion, Motorola, etc..?
102
+
103
+ end
104
+
105
+ if __FILE__ == $0
106
+ puts "Platform OS=#{Platform::OS}, impl=#{Platform::IMPL}, arch=#{Platform::ARCH}"
107
+ end