h4oflashsdk 1.0.0
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/Gemfile +3 -0
- data/Gemfile.lock +41 -0
- data/POSTINSTALL.rdoc +79 -0
- data/README.textile +79 -0
- data/VERSION +1 -0
- data/bin/flashlog +8 -0
- data/bin/flashplayer +9 -0
- data/bin/sprout-as3 +9 -0
- data/bin/sprout-flex +8 -0
- data/ext/CloseFlashPlayerForDumbassOSX.scpt +6 -0
- data/ext/OpenFlashPlayerForDumbassOSX.scpt +12 -0
- data/flashsdk.gemspec +25 -0
- data/flashsdk.komodoproject +4 -0
- data/lib/flashplayer/errors.rb +12 -0
- data/lib/flashplayer/executable.rb +143 -0
- data/lib/flashplayer/log_file.rb +94 -0
- data/lib/flashplayer/mm_config.rb +96 -0
- data/lib/flashplayer/module.rb +51 -0
- data/lib/flashplayer/specification.rb +45 -0
- data/lib/flashplayer/system_mixins.rb +98 -0
- data/lib/flashplayer/task.legacy.rb +293 -0
- data/lib/flashplayer/task.rb +62 -0
- data/lib/flashplayer/trust.rb +45 -0
- data/lib/flashplayer.rb +9 -0
- data/lib/flashsdk/acompc.rb +29 -0
- data/lib/flashsdk/adl.rb +83 -0
- data/lib/flashsdk/adt.rb +276 -0
- data/lib/flashsdk/amxmlc.rb +28 -0
- data/lib/flashsdk/asdoc.rb +164 -0
- data/lib/flashsdk/compc.rb +124 -0
- data/lib/flashsdk/compiler_base.rb +1131 -0
- data/lib/flashsdk/fcsh.rb +173 -0
- data/lib/flashsdk/fcsh_socket.rb +167 -0
- data/lib/flashsdk/fdb.rb +833 -0
- data/lib/flashsdk/generators/class_generator.rb +87 -0
- data/lib/flashsdk/generators/flash_helper.rb +234 -0
- data/lib/flashsdk/generators/flex_project_generator.rb +30 -0
- data/lib/flashsdk/generators/project_generator.rb +31 -0
- data/lib/flashsdk/generators/templates/ActionScript3Class.as +9 -0
- data/lib/flashsdk/generators/templates/ActionScript3MainClass.as +11 -0
- data/lib/flashsdk/generators/templates/ActionScript3RunnerClass.as +19 -0
- data/lib/flashsdk/generators/templates/DefaultProjectImage.png +0 -0
- data/lib/flashsdk/generators/templates/Flex4Application.mxml +45 -0
- data/lib/flashsdk/generators/templates/Flex4Main.css +7 -0
- data/lib/flashsdk/generators/templates/Flex4Rakefile.rb +34 -0
- data/lib/flashsdk/generators/templates/Flex4RunnerClass.mxml +29 -0
- data/lib/flashsdk/generators/templates/FlexTestRunner.mxml +0 -0
- data/lib/flashsdk/generators/templates/Gemfile +5 -0
- data/lib/flashsdk/generators/templates/rakefile.rb +79 -0
- data/lib/flashsdk/module.rb +107 -0
- data/lib/flashsdk/mxmlc.rb +160 -0
- data/lib/flashsdk.rb +24 -0
- data/lib/flex3.rb +54 -0
- data/lib/flex4.rb +115 -0
- data/rakefile.rb +42 -0
- data/test/fixtures/acompc/simple/SomeAirFile.as +11 -0
- data/test/fixtures/air/simple/SomeProject.apk +1 -0
- data/test/fixtures/air/simple/SomeProject.as +11 -0
- data/test/fixtures/air/simple/SomeProject.mxml +9 -0
- data/test/fixtures/air/simple/SomeProject.pfx +0 -0
- data/test/fixtures/air/simple/SomeProject.swf +0 -0
- data/test/fixtures/air/simple/SomeProject.xml +13 -0
- data/test/fixtures/asdoc/lib/OtherFile.as +17 -0
- data/test/fixtures/asdoc/src/SomeFile.as +11 -0
- data/test/fixtures/compc/simple/SomeFile.as +11 -0
- data/test/fixtures/flashplayer/AsUnit Runner.swf +0 -0
- data/test/fixtures/mxmlc/broken/SomeFile.as +10 -0
- data/test/fixtures/mxmlc/simple/SomeFile.as +11 -0
- data/test/fixtures/sdk/fdb +90 -0
- data/test/fixtures/sdk/mxmlc +56 -0
- data/test/unit/acompc_test.rb +37 -0
- data/test/unit/adl_test.rb +32 -0
- data/test/unit/adt_test.rb +185 -0
- data/test/unit/amxmlc_test.rb +55 -0
- data/test/unit/asdoc_test.rb +45 -0
- data/test/unit/class_generator_test.rb +56 -0
- data/test/unit/compc_test.rb +37 -0
- data/test/unit/fake_flashplayer_system.rb +11 -0
- data/test/unit/fcsh_socket_test.rb +53 -0
- data/test/unit/fcsh_test.rb +55 -0
- data/test/unit/fdb_test.rb +54 -0
- data/test/unit/flash_helper_test.rb +43 -0
- data/test/unit/flashplayer_executable_test.rb +69 -0
- data/test/unit/flashplayer_log_file_test.rb +47 -0
- data/test/unit/flashplayer_mm_config_test.rb +74 -0
- data/test/unit/flashplayer_module_test.rb +56 -0
- data/test/unit/flashplayer_task_test.rb +91 -0
- data/test/unit/flashplayer_trust_test.rb +30 -0
- data/test/unit/flex_compiler_options_test.rb +213 -0
- data/test/unit/flex_generator_test.rb +37 -0
- data/test/unit/mxmlc_test.rb +65 -0
- data/test/unit/project_generator_test.rb +57 -0
- data/test/unit/test_helper.rb +18 -0
- metadata +284 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
h4oflashsdk (1.0.0)
|
5
|
+
sprout (>= 1.1.18.pre)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activesupport (3.2.8)
|
11
|
+
i18n (~> 0.6)
|
12
|
+
multi_json (~> 1.0)
|
13
|
+
archive-tar-minitar (0.5.2)
|
14
|
+
i18n (0.6.1)
|
15
|
+
metaclass (0.0.1)
|
16
|
+
mocha (0.12.4)
|
17
|
+
metaclass (~> 0.0.1)
|
18
|
+
multi_json (1.3.6)
|
19
|
+
open4 (1.3.0)
|
20
|
+
rake (0.9.2.2)
|
21
|
+
rubyzip (0.9.4)
|
22
|
+
shoulda (3.1.1)
|
23
|
+
shoulda-context (~> 1.0)
|
24
|
+
shoulda-matchers (~> 1.2)
|
25
|
+
shoulda-context (1.0.0)
|
26
|
+
shoulda-matchers (1.3.0)
|
27
|
+
activesupport (>= 3.0.0)
|
28
|
+
sprout (1.1.18.pre)
|
29
|
+
archive-tar-minitar (= 0.5.2)
|
30
|
+
bundler (>= 0.9.19)
|
31
|
+
open4 (>= 0.9.6)
|
32
|
+
rake (>= 0.9.2)
|
33
|
+
rubyzip (= 0.9.4)
|
34
|
+
|
35
|
+
PLATFORMS
|
36
|
+
ruby
|
37
|
+
|
38
|
+
DEPENDENCIES
|
39
|
+
h4oflashsdk!
|
40
|
+
mocha
|
41
|
+
shoulda
|
data/POSTINSTALL.rdoc
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
++++++++++++++++++++++++++++++++
|
2
|
+
You have successfully installed the Project Sprouts Flash SDK!
|
3
|
+
|
4
|
+
To get started with a new ActionScript 3 project:
|
5
|
+
|
6
|
+
# Generate a project named 'SomeProject'
|
7
|
+
sprout-as3 SomeProject
|
8
|
+
|
9
|
+
# Change directory to the newly-created directory:
|
10
|
+
cd SomeProject
|
11
|
+
|
12
|
+
# Install whatever additional gems are required
|
13
|
+
# by this project Gemfile:
|
14
|
+
bundle install
|
15
|
+
|
16
|
+
# Use Rake to run the default task:
|
17
|
+
rake
|
18
|
+
|
19
|
+
++++++++++++++++++++++++++++++++
|
20
|
+
Next Steps:
|
21
|
+
|
22
|
+
# Generate a new class, test case and test suite:
|
23
|
+
sprout-class utils.MathUtil
|
24
|
+
|
25
|
+
# Compile and run the test harness:
|
26
|
+
rake test
|
27
|
+
|
28
|
+
# List available rake tasks:
|
29
|
+
rake -T
|
30
|
+
|
31
|
+
# List available generators:
|
32
|
+
sprout-
|
33
|
+
(followed by the TAB key)
|
34
|
+
|
35
|
+
++++++++++++++++++++++++++++++++
|
36
|
+
To use FCSH, simply start the service,
|
37
|
+
and call the fcsh task before any other
|
38
|
+
mxmlc or compc task:
|
39
|
+
|
40
|
+
# Open a new terminal and from your project:
|
41
|
+
rake fcsh:start
|
42
|
+
|
43
|
+
# Open a new terminal and from your project:
|
44
|
+
rake fcsh test
|
45
|
+
|
46
|
+
++++++++++++++++++++++++++++++++
|
47
|
+
To use FDB, simply call the fdb task
|
48
|
+
before any flashplayer task:
|
49
|
+
|
50
|
+
# Run the default task with FDB:
|
51
|
+
rake fdb test
|
52
|
+
|
53
|
+
(type, 'help' for more info when prompted)
|
54
|
+
|
55
|
+
++++++++++++++++++++++++++++++++
|
56
|
+
You can also launch any SWF file using
|
57
|
+
a debug Flash Player with:
|
58
|
+
|
59
|
+
flashplayer bin/SomeProject.swf
|
60
|
+
|
61
|
+
Or run a SWF with FDB like:
|
62
|
+
|
63
|
+
flashplayer --fdb bin/SomeProject.swf
|
64
|
+
|
65
|
+
++++++++++++++++++++++++++++++++
|
66
|
+
You can also tail your system's flashlog
|
67
|
+
while running a SWF or HTML page with:
|
68
|
+
|
69
|
+
flashlog
|
70
|
+
|
71
|
+
++++++++++++++++++++++++++++++++
|
72
|
+
Issues or Questions?
|
73
|
+
|
74
|
+
Troubleshooting at:
|
75
|
+
http://projectsprouts.org/troubleshooting.html
|
76
|
+
|
77
|
+
Email us at:
|
78
|
+
projectsprouts@googlegroups.com
|
79
|
+
|
data/README.textile
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
|
2
|
+
h1. The Flash SDK Sprout Gem
|
3
|
+
|
4
|
+
h3. Installation
|
5
|
+
|
6
|
+
# "Install Ruby":http://www.ruby-lang.org/en/downloads/ _(>= v 1.8.7)_
|
7
|
+
# "Install RubyGems":http://rubyforge.org/frs/?group_id=126 _(>= v 1.3.6)_
|
8
|
+
# Install the Flash SDK prerelease gem:
|
9
|
+
|
10
|
+
<pre><code>gem install flashsdk --pre</code></pre>
|
11
|
+
|
12
|
+
h3. Getting Started
|
13
|
+
|
14
|
+
Open a terminal and enter the following commands:
|
15
|
+
|
16
|
+
Create a new ActionScript 3 project and move into it:
|
17
|
+
|
18
|
+
<pre><code>sprout-as3 SomeProject
|
19
|
+
cd SomeProject</code></pre>
|
20
|
+
|
21
|
+
|
22
|
+
Resolve all dependencies, compile and launch the SWF:
|
23
|
+
|
24
|
+
<pre><code>rake</code></pre>
|
25
|
+
|
26
|
+
Generate a new class, test case and test suite:
|
27
|
+
|
28
|
+
<pre><code>sprout-class utils.MathUtil</code></pre>
|
29
|
+
|
30
|
+
Compile and launch the test harness:
|
31
|
+
|
32
|
+
<pre><code>rake test</code></pre>
|
33
|
+
|
34
|
+
Compile a SWC file:
|
35
|
+
|
36
|
+
<pre><code>rake swc</code></pre>
|
37
|
+
|
38
|
+
Generate documentation using "AsDoc":http://labs.adobe.com/wiki/index.php/ASDoc:
|
39
|
+
|
40
|
+
<pre><code>rake asdoc</code></pre>
|
41
|
+
|
42
|
+
Execute the test harness, emit a JUnit-compatible test results document, and close the Flash Player when complete or after encountering an uncaught exception:
|
43
|
+
|
44
|
+
<pre><code>rake ci</code></pre>
|
45
|
+
|
46
|
+
Display all available Rake tasks:
|
47
|
+
|
48
|
+
<pre><code>rake -T</code></pre>
|
49
|
+
|
50
|
+
h3. Some Links
|
51
|
+
|
52
|
+
* "Web Site":http://projectsprouts.org
|
53
|
+
* "See the Documentation":http://projectsprouts.org/rdoc
|
54
|
+
* "Meet the Community":http://groups.google.com/group/projectsprouts
|
55
|
+
|
56
|
+
h3. MIT License
|
57
|
+
|
58
|
+
<pre>
|
59
|
+
Copyright (c) 2007-2010 Pattern Park
|
60
|
+
|
61
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
62
|
+
a copy of this software and associated documentation files (the
|
63
|
+
"Software"), to deal in the Software without restriction, including
|
64
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
65
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
66
|
+
permit persons to whom the Software is furnished to do so, subject to
|
67
|
+
the following conditions:
|
68
|
+
|
69
|
+
The above copyright notice and this permission notice shall be
|
70
|
+
included in all copies or substantial portions of the Software.
|
71
|
+
|
72
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
73
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
74
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
75
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
76
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
77
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
78
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
79
|
+
</pre>
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
data/bin/flashlog
ADDED
data/bin/flashplayer
ADDED
data/bin/sprout-as3
ADDED
data/bin/sprout-flex
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
on run argv
|
3
|
+
set flash_player to item 1 of argv as text
|
4
|
+
set swf_file to item 2 of argv as text
|
5
|
+
tell application flash_player to activate
|
6
|
+
tell application flash_player to open swf_file
|
7
|
+
repeat
|
8
|
+
if application flash_player is not running then exit repeat
|
9
|
+
delay 0.1
|
10
|
+
end repeat
|
11
|
+
end run
|
12
|
+
|
data/flashsdk.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
|
+
$:.unshift lib unless $:.include?(lib)
|
4
|
+
|
5
|
+
require 'bundler'
|
6
|
+
require 'flashsdk/module.rb'
|
7
|
+
|
8
|
+
Gem::Specification.new do |s|
|
9
|
+
s.name = 'h4oflashsdk'
|
10
|
+
s.version = FlashSDK::VERSION
|
11
|
+
s.author = "Guenael LABOIS - H4o Studio"
|
12
|
+
s.email = "glabois@h4o-studio.com"
|
13
|
+
s.homepage = "http://www.adobe.com/products/flex"
|
14
|
+
s.summary = "Adobe Flash SDK including mxmlc, compc, asdoc, adl, adt, optimizer and fdb"
|
15
|
+
s.description = "The Flash SDK Rubygem is brought to you by Project Sprouts (http://projectsprouts.org)"
|
16
|
+
s.executables = ['sprout-as3', 'sprout-flex', 'flashplayer', 'flashlog']
|
17
|
+
s.post_install_message = File.read 'POSTINSTALL.rdoc'
|
18
|
+
s.files = Dir['**/*']
|
19
|
+
s.files.reject! { |fn| fn.match /.git|.svn|.DS_Store/ }
|
20
|
+
s.add_dependency('sprout', '>= 1.1.18.pre')
|
21
|
+
s.add_development_dependency('shoulda')
|
22
|
+
s.add_development_dependency('mocha')
|
23
|
+
s.require_paths << 'lib'
|
24
|
+
end
|
25
|
+
|
@@ -0,0 +1,143 @@
|
|
1
|
+
|
2
|
+
module FlashPlayer
|
3
|
+
|
4
|
+
class Executable < Sprout::Executable::Base
|
5
|
+
|
6
|
+
attr_accessor :stdout
|
7
|
+
attr_accessor :stderr
|
8
|
+
|
9
|
+
##
|
10
|
+
# The file that the Flash Player should launch.
|
11
|
+
#
|
12
|
+
# flashplayer bin/SomeProject.swf
|
13
|
+
#
|
14
|
+
add_param :input, String, { :hidden_name => true, :required => true }
|
15
|
+
|
16
|
+
##
|
17
|
+
# Drop into FDB after launching the Player.
|
18
|
+
#
|
19
|
+
# flashplayer --fdb bin/SomeProject.swf
|
20
|
+
#
|
21
|
+
add_param :fdb, Boolean, { :hidden_value => true }
|
22
|
+
|
23
|
+
##
|
24
|
+
# The Flash Player version to use.
|
25
|
+
add_param :version, String, { :default => FlashPlayer::VERSION }
|
26
|
+
|
27
|
+
def initialize
|
28
|
+
super
|
29
|
+
@mm_config = MMConfig.new
|
30
|
+
@reader = LogFile.new
|
31
|
+
@trust_config = Trust.new
|
32
|
+
@process = nil
|
33
|
+
@stdout = $stdout
|
34
|
+
@stderr = $stderr
|
35
|
+
@logger = $stdout
|
36
|
+
self.pkg_name = FlashPlayer::NAME
|
37
|
+
self.pkg_version = FlashPlayer::VERSION
|
38
|
+
end
|
39
|
+
|
40
|
+
def execute *args
|
41
|
+
execute_safely do
|
42
|
+
update_mm_config
|
43
|
+
update_trust_config_with input
|
44
|
+
end
|
45
|
+
|
46
|
+
if use_fdb?
|
47
|
+
launch_fdb_and_player_with input
|
48
|
+
else
|
49
|
+
player_thread = launch_player_with input
|
50
|
+
tail_flashlog player_thread
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def use_fdb?
|
55
|
+
# Check as string b/c this is
|
56
|
+
# how the boolean value comes
|
57
|
+
# accross the command line input.
|
58
|
+
fdb || ENV['USE_FDB'].to_s == 'true'
|
59
|
+
end
|
60
|
+
|
61
|
+
def logger=(logger)
|
62
|
+
@logger = logger
|
63
|
+
@mm_config.logger = logger
|
64
|
+
@reader.logger = logger
|
65
|
+
@trust_config.logger = logger
|
66
|
+
end
|
67
|
+
|
68
|
+
def logger
|
69
|
+
@logger
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def launch_fdb_and_player_with input
|
75
|
+
# Keep getting a fatal lock error which I believe
|
76
|
+
# is being caused by the FlashPlayer and FDB attempting
|
77
|
+
# to write to stdout simultaneously.
|
78
|
+
# Trying to give fdb a fake stream until after the
|
79
|
+
# player is launched...
|
80
|
+
fake_out = Sprout::OutputBuffer.new
|
81
|
+
fake_err = Sprout::OutputBuffer.new
|
82
|
+
|
83
|
+
fdb_instance = FlashSDK::FDB.new
|
84
|
+
fdb_instance.stdout = fake_out
|
85
|
+
fdb_instance.stderr = fake_err
|
86
|
+
fdb_instance.execute false
|
87
|
+
fdb_instance.run
|
88
|
+
player_thread = launch_player_with input
|
89
|
+
|
90
|
+
# Emit whatever messages have been passed:
|
91
|
+
stdout.puts fake_out.read
|
92
|
+
stdout.flush
|
93
|
+
stderr.puts fake_err.read
|
94
|
+
stdout.flush
|
95
|
+
# Replace the fdb instance streams with
|
96
|
+
# the real ones:
|
97
|
+
fdb_instance.stdout = stdout
|
98
|
+
fdb_instance.stderr = stderr
|
99
|
+
|
100
|
+
# Let the user interact with fdb:
|
101
|
+
fdb_instance.handle_user_input
|
102
|
+
|
103
|
+
fdb_instance.wait
|
104
|
+
player_thread.join if player_thread.alive?
|
105
|
+
end
|
106
|
+
|
107
|
+
def execute_safely
|
108
|
+
begin
|
109
|
+
Thread.abort_on_exception = true
|
110
|
+
yield if block_given?
|
111
|
+
rescue FlashPlayer::PathError => e
|
112
|
+
logger.puts ">> [WARNING] It seems this was the first time FlashPlayer was launched on this system and as a result, the expected folders were not found. Please close the Player and run again - this message should only ever be displayed once."
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def update_mm_config
|
117
|
+
@mm_config.create
|
118
|
+
end
|
119
|
+
|
120
|
+
def update_trust_config_with swf
|
121
|
+
@trust_config.add File.dirname(swf)
|
122
|
+
end
|
123
|
+
|
124
|
+
def clean_path path
|
125
|
+
current_system.clean_path path
|
126
|
+
end
|
127
|
+
|
128
|
+
def current_system
|
129
|
+
@current_system ||= Sprout.current_system
|
130
|
+
end
|
131
|
+
|
132
|
+
def launch_player_with swf
|
133
|
+
player = Sprout::Executable.load(:flashplayer, pkg_name, pkg_version).path
|
134
|
+
current_system.open_flashplayer_with player, clean_path(swf)
|
135
|
+
end
|
136
|
+
|
137
|
+
def tail_flashlog player_thread
|
138
|
+
@reader.tail player_thread
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
@@ -0,0 +1,94 @@
|
|
1
|
+
|
2
|
+
module FlashPlayer
|
3
|
+
|
4
|
+
class LogFile
|
5
|
+
|
6
|
+
attr_accessor :logger
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@logger = $stdout
|
10
|
+
super
|
11
|
+
end
|
12
|
+
|
13
|
+
def tail thread=nil
|
14
|
+
tail_path flashlog_path, thread
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def tail_path path, thread=nil
|
20
|
+
logger.puts ">> Tailing '#{path}', press CTRL+C to quit"
|
21
|
+
create_flashlog_at path
|
22
|
+
clear_flashlog_at path
|
23
|
+
read_flashlog_at path, thread
|
24
|
+
end
|
25
|
+
|
26
|
+
def read_flashlog_at path, thread=nil
|
27
|
+
thread ||= fake_thread
|
28
|
+
lines_put = 0
|
29
|
+
|
30
|
+
while thread.alive? do
|
31
|
+
lines_put = read_from_file path, lines_put
|
32
|
+
logger.flush
|
33
|
+
sleep(0.1)
|
34
|
+
end
|
35
|
+
|
36
|
+
logger.puts ""
|
37
|
+
logger.puts ">> Exiting from tailing '#{path}' at user request"
|
38
|
+
end
|
39
|
+
|
40
|
+
def read_from_file path, lines_put
|
41
|
+
File.open(path, 'r') do |file|
|
42
|
+
lines_read = 0
|
43
|
+
file.readlines.each do |line|
|
44
|
+
if(lines_read >= lines_put)
|
45
|
+
logger.puts "[trace] #{line}"
|
46
|
+
logger.flush
|
47
|
+
lines_put += 1
|
48
|
+
end
|
49
|
+
lines_read += 1
|
50
|
+
end
|
51
|
+
end unless !File.exists?(path)
|
52
|
+
lines_put
|
53
|
+
end
|
54
|
+
|
55
|
+
def flashlog_path
|
56
|
+
begin
|
57
|
+
FlashPlayer.flashlog
|
58
|
+
rescue FlashPlayer::PathError
|
59
|
+
"/dev/null"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def clear_flashlog_at path
|
64
|
+
File.open(path, 'w') do |f|
|
65
|
+
f.write('')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def create_flashlog_at path
|
70
|
+
if(!File.exists?(path))
|
71
|
+
FileUtils.makedirs(File.dirname(path))
|
72
|
+
FileUtils.touch(path)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def fake_thread
|
77
|
+
Thread.new do
|
78
|
+
while true
|
79
|
+
sleep(0.2)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
desc "Tail the flashlog.txt and block (until CTRL+C)"
|
88
|
+
task :flashlog do
|
89
|
+
mm_config = FlashPlayer::MMConfig.new
|
90
|
+
mm_config.create
|
91
|
+
reader = FlashPlayer::LogFile.new
|
92
|
+
reader.tail
|
93
|
+
end
|
94
|
+
|
@@ -0,0 +1,96 @@
|
|
1
|
+
|
2
|
+
module FlashPlayer
|
3
|
+
|
4
|
+
class MMConfig
|
5
|
+
FILE_NAME = 'mm.cfg'
|
6
|
+
|
7
|
+
attr_accessor :logger
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@file_name = FILE_NAME
|
11
|
+
@logger = $stdout
|
12
|
+
end
|
13
|
+
|
14
|
+
def create
|
15
|
+
create_if_necessary_at config_path
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def create_if_necessary_at path
|
21
|
+
if(File.exists?(File.dirname(path)))
|
22
|
+
write_config(path, content(flashlog_path)) if(file_blank?(path))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def config_path
|
27
|
+
if(flashplayer_home == osx_fp9_dir)
|
28
|
+
path = File.join(osx_fp9_dir, @file_name)
|
29
|
+
else
|
30
|
+
path = File.join(system_home, @file_name)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def flashplayer_home
|
35
|
+
FlashPlayer.home
|
36
|
+
end
|
37
|
+
|
38
|
+
def flashlog_path
|
39
|
+
FlashPlayer.flashlog
|
40
|
+
end
|
41
|
+
|
42
|
+
def file_blank?(file)
|
43
|
+
!File.exists?(file) || File.read(file).empty?
|
44
|
+
end
|
45
|
+
|
46
|
+
def write_config(location, content)
|
47
|
+
if(user_confirmation?(location))
|
48
|
+
FileUtils.makedirs File.dirname(location)
|
49
|
+
|
50
|
+
File.open(location, 'w') do |f|
|
51
|
+
f.write(content)
|
52
|
+
end
|
53
|
+
logger.puts ">> Created file: " + File.expand_path(location)
|
54
|
+
location
|
55
|
+
else
|
56
|
+
raise FlashPlayer::PathError.new("Unable to create #{location}")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def content(flashlog)
|
61
|
+
return <<EOF
|
62
|
+
ErrorReportingEnable=1
|
63
|
+
MaxWarnings=0
|
64
|
+
TraceOutputEnable=1
|
65
|
+
TraceOutputFileName=#{flashlog}
|
66
|
+
EOF
|
67
|
+
end
|
68
|
+
|
69
|
+
def user_confirmation?(location)
|
70
|
+
puts <<EOF
|
71
|
+
|
72
|
+
Correctly configured mm.cfg file not found at: #{location}
|
73
|
+
|
74
|
+
This file is required in order to capture trace output.
|
75
|
+
|
76
|
+
Would you like this file created automatically? [Yn]
|
77
|
+
|
78
|
+
EOF
|
79
|
+
answer = $stdin.gets.chomp.downcase
|
80
|
+
return (answer == 'y' || answer == '')
|
81
|
+
end
|
82
|
+
|
83
|
+
def osx_fp9_dir
|
84
|
+
File.join(system_library, 'Application Support', 'Macromedia')
|
85
|
+
end
|
86
|
+
|
87
|
+
def system_library
|
88
|
+
Sprout.current_system.library
|
89
|
+
end
|
90
|
+
|
91
|
+
def system_home
|
92
|
+
Sprout.current_system.home
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
|
2
|
+
module FlashPlayer
|
3
|
+
NAME = 'flashplayer'
|
4
|
+
VERSION = '11.1.102'
|
5
|
+
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def home
|
9
|
+
# NOTE: Look up the value every time,
|
10
|
+
# this way we're not storing state globally
|
11
|
+
# and the performance penalty is minimal...
|
12
|
+
home_paths.each do |path|
|
13
|
+
return path if File.exists?(path)
|
14
|
+
end
|
15
|
+
raise FlashPlayer::PathError.new('FlashPlayer unable to find home folder for your System')
|
16
|
+
end
|
17
|
+
|
18
|
+
def trust
|
19
|
+
File.join home, '#Security', 'FlashPlayerTrust', 'sprout.cfg'
|
20
|
+
end
|
21
|
+
|
22
|
+
def flashlog
|
23
|
+
File.join home, 'Logs', 'flashlog.txt'
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def system_home
|
29
|
+
Sprout.current_system.home
|
30
|
+
end
|
31
|
+
|
32
|
+
def system_library
|
33
|
+
Sprout.current_system.library
|
34
|
+
end
|
35
|
+
|
36
|
+
# Collection of the potential locations of the Flash Player Home
|
37
|
+
# For each supported Platform, the first existing location
|
38
|
+
# will be used.
|
39
|
+
def home_paths
|
40
|
+
[
|
41
|
+
File.join(system_library, 'Preferences', 'Macromedia', 'Flash Player'),
|
42
|
+
File.join(system_library, 'Application Support', 'Macromedia'),
|
43
|
+
File.join(system_home, 'Application Data', 'Macromedia', 'Flash Player'),
|
44
|
+
File.join(system_home, 'AppData', 'Roaming', 'Macromedia', 'Flash Player'),
|
45
|
+
File.join(system_home, '.macromedia', 'Flash_Player')
|
46
|
+
]
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|