asproject 0.1.92 → 0.1.118
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/lib/asclass_arguments.rb +1 -1
- data/lib/asproject.rb +3 -1
- data/lib/asproject/version.rb +1 -1
- data/lib/asproject_arguments.rb +5 -5
- data/lib/path_finder.rb +17 -7
- data/lib/tasks/asunit.rb +8 -0
- data/lib/tasks/flash_log.rb +2 -1
- data/lib/tasks/flash_player.rb +10 -6
- data/lib/tasks/mxmlc.rb +13 -2
- data/lib/tasks/remote_file_loader.rb +144 -0
- data/lib/tasks/remote_file_task.rb +2 -128
- data/lib/tasks/remote_library_task.rb +75 -0
- data/templates/asclass/as2/Class.as +1 -1
- data/templates/asproject/as2/{art → assets}/.crap_file +0 -0
- data/templates/asproject/as2/project/rakefile.rb +3 -2
- data/templates/asproject/as3/{art → assets}/.crap_file +0 -0
- data/templates/asproject/as3/project/rakefile.rb +3 -3
- data/templates/asproject/fdt/project/.as2_classpath +1 -1
- metadata +9 -129
- data/templates/asproject/asunit2/project/lib/asunit/AsUnitUi.swf +0 -0
- data/templates/asproject/asunit2/project/lib/asunit/Sys.as +0 -70
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanel.as +0 -182
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTest.as +0 -84
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTextArea.as +0 -111
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTextAreaTest.as +0 -26
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTitleBar.as +0 -81
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ResizeHandle.as +0 -35
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollArrow.as +0 -34
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollHandle.as +0 -43
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollListener.as +0 -10
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/TextScroller.as +0 -169
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/shapes/Rectangle.as +0 -29
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/shapes/Triangle.as +0 -27
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/AsUnit.as +0 -19
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Assert.as +0 -408
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Assertion.as +0 -27
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Reflection.as +0 -68
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Test.as +0 -3
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestCase.as +0 -191
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestCaseXml.as +0 -31
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestFailure.as +0 -15
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestResult.as +0 -15
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestRunner.as +0 -41
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestSetup.as +0 -19
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestSuite.as +0 -22
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/Main.as +0 -325
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/RemoteVersion.as +0 -24
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/SuccessMeter.as +0 -32
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/Comparable.as +0 -7
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/EventListener.as +0 -29
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/EventSource.as +0 -89
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnClient.as +0 -42
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnGateway.as +0 -47
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnServer.as +0 -61
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalMessageBroker.as +0 -58
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/Observable.as +0 -11
- data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/TextFile.as +0 -30
- data/templates/asproject/asunit25/project/lib/asunit/AsUnitTestRunner.as +0 -13
- data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/AssertionFailedError.as +0 -7
- data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/AssertionPassedError.as +0 -7
- data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/ClassNotFoundError.as +0 -7
- data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/IllegalOperationError.as +0 -7
- data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/InstanceNotFoundError.as +0 -7
- data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/InvocationTargetError.as +0 -7
- data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/UnimplementedFeatureError.as +0 -7
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/Assert.as +0 -376
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/AssertMock.as +0 -15
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/AssertTest.as +0 -59
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/ITestListener.as +0 -13
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/Test.as +0 -11
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCase.as +0 -278
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseMock.as +0 -23
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseTest.as +0 -29
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseXml.as +0 -38
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestFailure.as +0 -47
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestResult.as +0 -168
- data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestSuite.as +0 -102
- data/templates/asproject/asunit25/project/lib/asunit/asunit/runner/BaseTestRunner.as +0 -101
- data/templates/asproject/asunit25/project/lib/asunit/asunit/runner/IResultPrinter.as +0 -8
- data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/ResultPrinter.as +0 -254
- data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/SuccessBar.as +0 -41
- data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/TestRunner.as +0 -17
- data/templates/asproject/asunit25/project/lib/asunit/asunit/util/ArrayIterator.as +0 -24
- data/templates/asproject/asunit25/project/lib/asunit/asunit/util/ArrayIteratorTest.as +0 -52
- data/templates/asproject/asunit25/project/lib/asunit/asunit/util/Iterator.as +0 -5
- data/templates/asproject/asunit3/project/lib/asunit/AsUnitTestRunner.as +0 -10
- data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/AbstractMemberCalledError.as +0 -10
- data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/AssertionFailedError.as +0 -10
- data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/ClassNotFoundError.as +0 -10
- data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/InstanceNotFoundError.as +0 -10
- data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/UnimplementedFeatureError.as +0 -10
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/Assert.as +0 -271
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/AsynchronousTestCase.as +0 -52
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/AsynchronousTestCaseExample.as +0 -71
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/Test.as +0 -15
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestCase.as +0 -354
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestCaseExample.as +0 -73
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestFailure.as +0 -47
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestListener.as +0 -22
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestResult.as +0 -158
- data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestSuite.as +0 -115
- data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/BaseTestRunner.as +0 -15
- data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/TestSuiteLoader.as +0 -9
- data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/Version.as +0 -11
- data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/FlexRunner.as +0 -19
- data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/FlexTestRunner.as +0 -55
- data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/ResultPrinter.as +0 -245
- data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/TestRunner.as +0 -121
- data/templates/asproject/asunit3/project/lib/asunit/asunit/util/ArrayIterator.as +0 -26
- data/templates/asproject/asunit3/project/lib/asunit/asunit/util/Iterator.as +0 -9
- data/templates/asproject/asunit3/project/lib/asunit/asunit/util/Properties.as +0 -30
data/lib/asclass_arguments.rb
CHANGED
@@ -86,7 +86,7 @@ EOF
|
|
86
86
|
# self[:copy_to_home] = true
|
87
87
|
# end
|
88
88
|
#
|
89
|
-
# opts.on('-d', '--default-templates', "Set default templates for this project eg: 'mxml,fb2mxml
|
89
|
+
# opts.on('-d', '--default-templates', "Set default templates for this project eg: 'mxml,fb2mxml'") do
|
90
90
|
# self[:default_templates] = true
|
91
91
|
# end
|
92
92
|
#
|
data/lib/asproject.rb
CHANGED
@@ -29,7 +29,9 @@ require 'test_suite_generator'
|
|
29
29
|
|
30
30
|
require 'tasks/simple_resolver'
|
31
31
|
require 'tasks/env_task'
|
32
|
+
require 'tasks/remote_file_loader'
|
32
33
|
require 'tasks/remote_file_task'
|
34
|
+
require 'tasks/remote_library_task'
|
33
35
|
require 'tasks/flash_log'
|
34
36
|
require 'tasks/mxmlc'
|
35
37
|
require 'tasks/fcsh'
|
@@ -46,7 +48,7 @@ module AsProject
|
|
46
48
|
class AsProject < AsProjectBase
|
47
49
|
@@ASPROJECT_FILE_NAME = 'AsProject'
|
48
50
|
@@TEMPLATE_TYPE = 'asproject'
|
49
|
-
@@DEFAULT_TEMPLATES = ['as2', 'config', '
|
51
|
+
@@DEFAULT_TEMPLATES = ['as2', 'config', 'fdt']
|
50
52
|
|
51
53
|
def initialize(args=nil)
|
52
54
|
execute(args)
|
data/lib/asproject/version.rb
CHANGED
data/lib/asproject_arguments.rb
CHANGED
@@ -68,7 +68,7 @@ rake
|
|
68
68
|
|
69
69
|
mkdir projects
|
70
70
|
cd projects
|
71
|
-
asproject -t 'as2,
|
71
|
+
asproject -t 'as2,config,fdt' MyProjectName
|
72
72
|
cd MyProjectName/project
|
73
73
|
asclass -s utils.MathUtil
|
74
74
|
rake test
|
@@ -100,7 +100,7 @@ EOF
|
|
100
100
|
self[:copy_to_home] = true
|
101
101
|
end
|
102
102
|
|
103
|
-
# opts.on('-d', '--default-templates', "Set default templates for this project eg: 'mxml,fb2mxml
|
103
|
+
# opts.on('-d', '--default-templates', "Set default templates for this project eg: 'mxml,fb2mxml'") do
|
104
104
|
# self[:default_templates] = true
|
105
105
|
# end
|
106
106
|
#
|
@@ -167,11 +167,11 @@ EOF
|
|
167
167
|
|
168
168
|
def get_templates_by_type(type)
|
169
169
|
if(type == 'as2')
|
170
|
-
return ['as2', '
|
170
|
+
return ['as2', 'fdt']
|
171
171
|
elsif(type == 'as3')
|
172
|
-
return ['as3', '
|
172
|
+
return ['as3', 'fb2as']
|
173
173
|
elsif(type == 'mxml')
|
174
|
-
return ['mxml', '
|
174
|
+
return ['mxml', 'fb2as']
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
data/lib/path_finder.rb
CHANGED
@@ -50,6 +50,14 @@ module AsProject
|
|
50
50
|
parent = File.dirname(File.dirname(__FILE__))
|
51
51
|
return File.expand_path(parent)
|
52
52
|
end
|
53
|
+
|
54
|
+
def lib_downloads
|
55
|
+
return File.join(downloads, 'lib')
|
56
|
+
end
|
57
|
+
|
58
|
+
def downloads
|
59
|
+
return user.downloads
|
60
|
+
end
|
53
61
|
|
54
62
|
def user
|
55
63
|
return @user
|
@@ -367,13 +375,11 @@ EOF
|
|
367
375
|
@@LIBRARY = 'Library'
|
368
376
|
def initialize
|
369
377
|
super
|
370
|
-
@flash_player_7_url = "/pub/flashplayer/updaters/7/sa_flashplayer_7_all_debug.dmg"
|
371
|
-
@flash_player_8_url = "/pub/flashplayer/updaters/8/flash_player_update3_flash8_win.zip"
|
372
|
-
@flash_player_9_url = "/pub/flashplayer/updaters/9/sa_flashplayer_9_all_debug_ub.dmg"
|
373
|
-
|
374
|
-
@
|
375
|
-
|
376
|
-
@flash_player_8_target = File.join('Players', 'Debug', 'SAFlashPlayer.exe')
|
378
|
+
# @flash_player_7_url = "/pub/flashplayer/updaters/7/sa_flashplayer_7_all_debug.dmg"
|
379
|
+
# @flash_player_8_url = "/pub/flashplayer/updaters/8/flash_player_update3_flash8_win.zip"
|
380
|
+
# @flash_player_9_url = "/pub/flashplayer/updaters/9/sa_flashplayer_9_all_debug_ub.dmg"
|
381
|
+
# @zip_target = File.join('Players', 'Debug', 'SAFlashPlayer.dmg')
|
382
|
+
# @flash_player_8_target = File.join('Players', 'Debug', 'SAFlashPlayer.exe')
|
377
383
|
|
378
384
|
@osx_asproject = 'AsProject'
|
379
385
|
end
|
@@ -393,6 +399,10 @@ EOF
|
|
393
399
|
return File.join(library, 'Preferences', 'Macromedia', 'Flash Player')
|
394
400
|
end
|
395
401
|
|
402
|
+
def flash_player_config
|
403
|
+
return File.join('/Library/Application Support/Macromedia/', 'mm.cfg')
|
404
|
+
end
|
405
|
+
|
396
406
|
def library
|
397
407
|
lib = File.join(home, @@LIBRARY)
|
398
408
|
if(File.exists?(lib))
|
data/lib/tasks/asunit.rb
ADDED
data/lib/tasks/flash_log.rb
CHANGED
@@ -32,7 +32,8 @@ This file is required in order to capture trace output.
|
|
32
32
|
Would you like this file created automatically? [Yn]
|
33
33
|
|
34
34
|
EOF
|
35
|
-
|
35
|
+
answer = $stdin.gets.chomp.downcase
|
36
|
+
if(answer.index('y') || answer == '')
|
36
37
|
File.open(location, 'w') do |f|
|
37
38
|
f.write(content)
|
38
39
|
end
|
data/lib/tasks/flash_player.rb
CHANGED
@@ -30,19 +30,17 @@ module AsProject
|
|
30
30
|
elsif(version == 8)
|
31
31
|
@win_url = "http://download.macromedia.com/pub/flashplayer/updaters/8/flash_player_update3_flash8_win.zip"
|
32
32
|
@win_extracted_file = "/Players/Debug/SAFlashPlayer.exe"
|
33
|
-
@osx_url = "http://download.macromedia.com/pub/flashplayer/updaters/9/
|
34
|
-
@osx_mounted_path = "Adobe Flash Player Standalone"
|
33
|
+
@osx_url = "http://download.macromedia.com/pub/flashplayer/updaters/9/sa_flashplayer_9_debug.app.zip"
|
35
34
|
@osx_extracted_file = "Flash\ Player.app"
|
36
35
|
# @osx_url = "http://download.macromedia.com/pub/flashplayer/updaters/8/sa_flashplayer_8_all_debug.dmg"
|
37
|
-
# @osx_mounted_path = "Adobe Flash Standalone Players"
|
38
36
|
# @osx_extracted_file = "en/SAFlashPlayer"
|
37
|
+
# @osx_mounted_path = "Adobe Flash Standalone Players"
|
39
38
|
@unix_url = nil
|
40
39
|
@unix_extracted_file = nil
|
41
40
|
elsif(version == 9)
|
42
41
|
@win_url = "http://download.macromedia.com/pub/flashplayer/updaters/9/sa_flashplayer_9_debug.exe"
|
43
42
|
@win_extracted_file = "sa_flashplayer_9_debug.exe"
|
44
|
-
@osx_url = "http://download.macromedia.com/pub/flashplayer/updaters/9/
|
45
|
-
@osx_mounted_path = "Adobe Flash Player Standalone"
|
43
|
+
@osx_url = "http://download.macromedia.com/pub/flashplayer/updaters/9/sa_flashplayer_9_debug.app.zip"
|
46
44
|
@osx_extracted_file = "Flash\ Player.app"
|
47
45
|
@unix_url = nil
|
48
46
|
@unix_extracted_file = nil
|
@@ -86,7 +84,13 @@ module AsProject
|
|
86
84
|
end
|
87
85
|
|
88
86
|
def run_osx
|
89
|
-
|
87
|
+
if(extracted_file_path.index('.app'))
|
88
|
+
player = extracted_file_path + "/Contents/MacOS/Flash\ Player"
|
89
|
+
else
|
90
|
+
player = extracted_file_path
|
91
|
+
end
|
92
|
+
File.chmod(0755, player)
|
93
|
+
|
90
94
|
swf = clean_path(@swf)
|
91
95
|
|
92
96
|
t = Thread.new {
|
data/lib/tasks/mxmlc.rb
CHANGED
@@ -33,6 +33,7 @@ module AsProject
|
|
33
33
|
@theme = []
|
34
34
|
@runtime_shared_libraries = []
|
35
35
|
@incremental = false
|
36
|
+
@optimize = false
|
36
37
|
path_finder = PathFinder.new
|
37
38
|
@target = path_finder.mxmlc
|
38
39
|
@name = name
|
@@ -66,10 +67,20 @@ module AsProject
|
|
66
67
|
task @name => [@output]
|
67
68
|
end
|
68
69
|
|
69
|
-
def execute(cmd, args)
|
70
|
+
def execute(cmd, args, retries=0)
|
70
71
|
begin
|
71
|
-
sh(
|
72
|
+
sh("#{cmd} #{args}")
|
72
73
|
rescue
|
74
|
+
default_mxmlc_osx_path = "/Applications/Adobe\ Flex\ Builder\ 2/Flex\ SDK\ 2/bin"
|
75
|
+
default_flex_home_path = File.join(ENV['FLEX_HOME'], 'bin', cmd)
|
76
|
+
if(retries == 0 && File.exists?(default_mxmlc_osx_path))
|
77
|
+
ENV['PATH'] = ENV['PATH'] + ':' + default_mxmlc_osx_path
|
78
|
+
execute(cmd, args, 1)
|
79
|
+
return
|
80
|
+
elsif(retries == 0 && File.exists?(default_flex_home_path))
|
81
|
+
execute("'#{default_flex_home_path}'", args, 1)
|
82
|
+
return
|
83
|
+
end
|
73
84
|
puts 'There was an error executing mxmlc, please make sure mxmlc is in your class path and can be executed from the same environment this rake task was run from'
|
74
85
|
end
|
75
86
|
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
|
2
|
+
module AsProject
|
3
|
+
class RemoteFileLoader < Rake::TaskLib
|
4
|
+
|
5
|
+
def fetch(location, limit = 10)
|
6
|
+
uri = URI.parse(location)
|
7
|
+
|
8
|
+
# Download the file now to the downloads dir
|
9
|
+
# If the file is an archive (zip, gz, tar, tar.gz, dmg), extract to
|
10
|
+
# AsProject/remote_files/@name/@location
|
11
|
+
# Check the location again...
|
12
|
+
raise UsageError.new("The RemoteFileTask can only handle HTTP requests at this time, it seems you were trying: #{uri.scheme}") if uri.scheme != 'http'
|
13
|
+
raise UsageError.new('HTTP redirect too deep') if limit == 0
|
14
|
+
|
15
|
+
response = nil
|
16
|
+
t = Thread.new {
|
17
|
+
response = Net::HTTP.get_response(uri.host, uri.path)
|
18
|
+
}
|
19
|
+
|
20
|
+
print(">> Downloading")
|
21
|
+
# TODO: Add actual bytesLoaded vs bytesTotal
|
22
|
+
# To the output...
|
23
|
+
while t.alive?
|
24
|
+
print(".")
|
25
|
+
$stdout.flush
|
26
|
+
sleep(0.2)
|
27
|
+
end
|
28
|
+
puts ""
|
29
|
+
|
30
|
+
if(response.is_a? Net::HTTPSuccess)
|
31
|
+
return response
|
32
|
+
elsif(response.is_a? Net::HTTPRedirection)
|
33
|
+
return fetch(response['location'], limit - 1)
|
34
|
+
else
|
35
|
+
if(response.nil?)
|
36
|
+
raise UsageError.new("Network connection failed!")
|
37
|
+
else
|
38
|
+
puts response.to_s
|
39
|
+
return response.error!
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def unpack_downloaded_file(file_name, expected_file)
|
45
|
+
dir = File.dirname(file_name)
|
46
|
+
if(!File.exists?(expected_file))
|
47
|
+
if(is_zip?(file_name))
|
48
|
+
unpack_zip(file_name, dir)
|
49
|
+
elsif(is_targz?(file_name))
|
50
|
+
unpack_targz(file_name, dir)
|
51
|
+
elsif(is_dmg?(file_name))
|
52
|
+
unpack_dmg(file_name, dir)
|
53
|
+
elsif(is_swc?(file_name))
|
54
|
+
# just copy the swc...
|
55
|
+
elsif(!is_exe?(file_name))
|
56
|
+
raise UsageError.new("RemoteFileTask does not know how to unpack files of type: #{file_name}")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def unpack_zip(zip_file, dir)
|
62
|
+
Zip::ZipFile::open(zip_file) do |zf|
|
63
|
+
zf.each do |e|
|
64
|
+
fpath = File.join(dir, e.name)
|
65
|
+
FileUtils.mkdir_p(File.dirname(fpath))
|
66
|
+
zf.extract(e, fpath)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def unpack_targz(tgz_file, dir)
|
72
|
+
tar = Zlib::GzipReader.new(File.open(tgz_file, 'rb'))
|
73
|
+
Minitar.unpack(tar, dir)
|
74
|
+
end
|
75
|
+
|
76
|
+
# This is actually not unpacking the FlashPlayer
|
77
|
+
# Binary file as expected...
|
78
|
+
# OSX is treated the player binary as if it is
|
79
|
+
# a regular text file, but if it is copied manually,
|
80
|
+
# the command works fine!?
|
81
|
+
def unpack_dmg(dmg_file, dir)
|
82
|
+
# 1) Mount the dmg in place
|
83
|
+
# 2) Recursively Copy it's contents to asproject_home
|
84
|
+
# 3) Unmount the dmg
|
85
|
+
if(mounted_path.nil?)
|
86
|
+
raise StandardError.new('DMG file downloaded, but the RemoteFileTask needs a mounted_path in order to mount it')
|
87
|
+
end
|
88
|
+
|
89
|
+
if(!File.exists?(full_mounted_path))
|
90
|
+
system("hdiutil mount #{dmg_file}")
|
91
|
+
end
|
92
|
+
|
93
|
+
begin
|
94
|
+
mounted_target = File.join(full_mounted_path, extracted_file)
|
95
|
+
|
96
|
+
# Copy the DMG contents using system copy rather than ruby utils
|
97
|
+
# Because OS X does something special with .app files that the
|
98
|
+
# Ruby FileUtils and File classes break...
|
99
|
+
puts '=================='
|
100
|
+
from = mounted_target
|
101
|
+
# from = File.join(full_mounted_path, extracted_file)
|
102
|
+
to = File.join(@user.downloads, @name.to_s, extracted_file)
|
103
|
+
puts 'from: ' + from
|
104
|
+
puts 'to: ' + to
|
105
|
+
FileUtils.makedirs(File.dirname(to))
|
106
|
+
|
107
|
+
if(File.exists?(from))
|
108
|
+
`ditto '#{from}' '#{to}'`
|
109
|
+
end
|
110
|
+
rescue
|
111
|
+
puts 'inside finally!'
|
112
|
+
if(File.exists?(full_mounted_path))
|
113
|
+
puts 'unmounting now!'
|
114
|
+
system("hdiutil unmount -force \"#{full_mounted_path}\"")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def is_exe?(file)
|
120
|
+
return (file.split('.').pop == 'exe')
|
121
|
+
end
|
122
|
+
|
123
|
+
def is_zip?(file)
|
124
|
+
return (file.split('.').pop == 'zip')
|
125
|
+
end
|
126
|
+
|
127
|
+
def is_targz?(file)
|
128
|
+
parts = file.split('.')
|
129
|
+
return (parts.pop == 'gz' && parts.pop == 'tar')
|
130
|
+
end
|
131
|
+
|
132
|
+
def is_gzip?(file)
|
133
|
+
return (file.split('.').pop == 'gz')
|
134
|
+
end
|
135
|
+
|
136
|
+
def is_swc?(file)
|
137
|
+
return (file.split('.').pop == 'swc')
|
138
|
+
end
|
139
|
+
|
140
|
+
def is_dmg?(file)
|
141
|
+
return (file.split('.').pop == 'dmg')
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -70,7 +70,7 @@ module AsProject
|
|
70
70
|
###################################
|
71
71
|
# Concrete instances returned from
|
72
72
|
# User objects
|
73
|
-
class AbstractRemoteFileTask
|
73
|
+
class AbstractRemoteFileTask < RemoteFileLoader
|
74
74
|
include Archive::Tar
|
75
75
|
|
76
76
|
attr_accessor :name,
|
@@ -119,96 +119,6 @@ module AsProject
|
|
119
119
|
return File.join(@user.downloads, @name.to_s, file)
|
120
120
|
end
|
121
121
|
|
122
|
-
def unpack_downloaded_file(file_name, expected_file)
|
123
|
-
# Remove previously downloaded files...
|
124
|
-
dir = File.dirname(file_name)
|
125
|
-
Dir[dir + '/*'].each do |child|
|
126
|
-
if(child != '.' && child != '..' && child != file_name)
|
127
|
-
FileUtils.rm_rf(child)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
if(!File.exists?(expected_file))
|
132
|
-
if(is_zip?(file_name))
|
133
|
-
unpack_zip(file_name, dir)
|
134
|
-
elsif(is_targz?(file_name))
|
135
|
-
unpack_targz(file_name, dir)
|
136
|
-
elsif(is_dmg?(file_name))
|
137
|
-
unpack_dmg(file_name, dir)
|
138
|
-
elsif(!is_exe?(file_name))
|
139
|
-
raise UsageError.new("RemoteFileTask does not know how to unpack files of type: #{file_name}")
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
def unpack_zip(zip_file, dir)
|
145
|
-
Zip::ZipFile::open(zip_file) do |zf|
|
146
|
-
zf.each do |e|
|
147
|
-
fpath = File.join(dir, e.name)
|
148
|
-
FileUtils.mkdir_p(File.dirname(fpath))
|
149
|
-
zf.extract(e, fpath)
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
def unpack_targz(tgz_file, dir)
|
155
|
-
tar = Zlib::GzipReader.new(File.open(tgz_file, 'rb'))
|
156
|
-
Minitar.unpack(tar, dir)
|
157
|
-
end
|
158
|
-
|
159
|
-
# This is actually not unpacking the FlashPlayer
|
160
|
-
# Binary file as expected...
|
161
|
-
# OSX is treated the player binary as if it is
|
162
|
-
# a regular text file, but if it is copied manually,
|
163
|
-
# the command works fine!?
|
164
|
-
def unpack_dmg(dmg_file, dir)
|
165
|
-
# 1) Mount the dmg in place
|
166
|
-
# 2) Recursively Copy it's contents to asproject_home
|
167
|
-
# 3) Unmount the dmg
|
168
|
-
if(mounted_path.nil?)
|
169
|
-
raise StandardError.new('DMG file downloaded, but the RemoteFileTask needs a mounted_path in order to mount it')
|
170
|
-
end
|
171
|
-
|
172
|
-
if(!File.exists?(full_mounted_path))
|
173
|
-
system("hdiutil mount #{dmg_file}")
|
174
|
-
end
|
175
|
-
|
176
|
-
mounted_target = File.join(full_mounted_path, extracted_file)
|
177
|
-
|
178
|
-
# Copy the DMG contents using system copy rather than ruby utils
|
179
|
-
# Because OS X does something special with .app files that the
|
180
|
-
# Ruby FileUtils and File classes break...
|
181
|
-
from = full_mounted_path
|
182
|
-
to = File.join(@user.downloads, @name.to_s)
|
183
|
-
if(File.exists?(from))
|
184
|
-
`ditto '#{from}' #{to}`
|
185
|
-
end
|
186
|
-
if(File.exists?(full_mounted_path))
|
187
|
-
system("hdiutil unmount -force \"#{full_mounted_path}\"")
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
def is_exe?(file)
|
192
|
-
return (file.split('.').pop == 'exe')
|
193
|
-
end
|
194
|
-
|
195
|
-
def is_zip?(file)
|
196
|
-
return (file.split('.').pop == 'zip')
|
197
|
-
end
|
198
|
-
|
199
|
-
def is_targz?(file)
|
200
|
-
parts = file.split('.')
|
201
|
-
return (parts.pop == 'gz' && parts.pop == 'tar')
|
202
|
-
end
|
203
|
-
|
204
|
-
def is_gzip?(file)
|
205
|
-
return (file.split('.').pop == 'gz')
|
206
|
-
end
|
207
|
-
|
208
|
-
def is_dmg?(file)
|
209
|
-
return (file.split('.').pop == 'dmg')
|
210
|
-
end
|
211
|
-
|
212
122
|
def make_downloaded_dir(file)
|
213
123
|
dir = File.dirname(file)
|
214
124
|
File.makedirs(dir)
|
@@ -222,42 +132,6 @@ module AsProject
|
|
222
132
|
return File.join(remote_file_dir, extracted_file)
|
223
133
|
end
|
224
134
|
|
225
|
-
def fetch(location, limit = 10)
|
226
|
-
uri = URI.parse(location)
|
227
|
-
|
228
|
-
# Download the file now to the downloads dir
|
229
|
-
# If the file is an archive (zip, gz, tar, tar.gz, dmg), extract to
|
230
|
-
# AsProject/remote_files/@name/@location
|
231
|
-
# Check the location again...
|
232
|
-
raise UsageError.new("The RemoteFileTask can only handle HTTP requests at this time, it seems you were trying: #{uri.scheme}") if uri.scheme != 'http'
|
233
|
-
raise UsageError.new('HTTP redirect too deep') if limit == 0
|
234
|
-
|
235
|
-
response = nil
|
236
|
-
t = Thread.new {
|
237
|
-
response = Net::HTTP.get_response(uri.host, uri.path)
|
238
|
-
}
|
239
|
-
# TODO: Add actual bytesLoaded vs bytesTotal
|
240
|
-
# To the output...
|
241
|
-
while t.alive?
|
242
|
-
print(".")
|
243
|
-
$stdout.flush
|
244
|
-
sleep(0.2)
|
245
|
-
end
|
246
|
-
|
247
|
-
if(response.is_a? Net::HTTPSuccess)
|
248
|
-
return response
|
249
|
-
elsif(response.is_a? Net::HTTPRedirection)
|
250
|
-
return fetch(response['location'], limit - 1)
|
251
|
-
else
|
252
|
-
if(response.nil?)
|
253
|
-
raise UsageError.new("Network connection failed!")
|
254
|
-
else
|
255
|
-
puts response.to_s
|
256
|
-
return response.error!
|
257
|
-
end
|
258
|
-
end
|
259
|
-
end
|
260
|
-
|
261
135
|
def get_remote_file(uri, target)
|
262
136
|
if(!File.exists?(target))
|
263
137
|
puts "Fetching #{uri.to_s} into #{target} now!"
|
@@ -339,7 +213,7 @@ module AsProject
|
|
339
213
|
end
|
340
214
|
|
341
215
|
def full_mounted_path
|
342
|
-
return '/Volumes
|
216
|
+
return File.join('/Volumes', mounted_path)
|
343
217
|
end
|
344
218
|
end
|
345
219
|
|