lukebayes-clix_flash_player 0.2.0 → 0.3.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/clix_flash_player.gemspec +1 -1
- data/lib/clix_flash_player.rb +29 -7
- data/lib/clix_wrapper.rb +12 -29
- data/rakefile.rb +26 -0
- metadata +1 -1
data/clix_flash_player.gemspec
CHANGED
data/lib/clix_flash_player.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'open4'
|
3
3
|
|
4
|
+
$CLIX_WRAPPER_TARGET = File.join(File.expand_path(File.dirname(__FILE__)), 'clix_wrapper.rb')
|
5
|
+
|
4
6
|
$:.unshift(File.dirname(__FILE__)) unless
|
5
7
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
6
8
|
|
@@ -17,16 +19,30 @@ class CLIXFlashPlayer
|
|
17
19
|
|
18
20
|
def execute(player, swf)
|
19
21
|
cleanup
|
22
|
+
player = clean_path(player)
|
23
|
+
swf = clean_path(swf)
|
20
24
|
validate(player, swf)
|
21
|
-
|
22
|
-
|
25
|
+
|
26
|
+
if(!player.match('Contents/MacOS'))
|
27
|
+
player = File.join(player, 'Contents', 'MacOS', 'Flash Player')
|
28
|
+
end
|
29
|
+
|
23
30
|
setup_trap
|
31
|
+
|
24
32
|
@thread = Thread.new {
|
25
33
|
@player_pid = open4.popen4("#{player.split(' ').join('\ ')}")[0]
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
34
|
+
begin
|
35
|
+
raise "clix_wrapper.rb could not be found at: #{wrapper}" if !File.exists?($CLIX_WRAPPER_TARGET)
|
36
|
+
command = "ruby #{$CLIX_WRAPPER_TARGET} '#{player}' '#{swf}'"
|
37
|
+
@activate_pid, stdin, stdout, stderr = open4.popen4(command)
|
38
|
+
puts stdout.read
|
39
|
+
error = stderr.read
|
40
|
+
raise error if !error.nil? && error != ''
|
41
|
+
Process.wait(@player_pid)
|
42
|
+
rescue StandardError => e
|
43
|
+
kill
|
44
|
+
raise e
|
45
|
+
end
|
30
46
|
}
|
31
47
|
end
|
32
48
|
|
@@ -35,7 +51,9 @@ class CLIXFlashPlayer
|
|
35
51
|
end
|
36
52
|
|
37
53
|
def join
|
38
|
-
@thread.
|
54
|
+
if(@thread.alive?)
|
55
|
+
@thread.join
|
56
|
+
end
|
39
57
|
end
|
40
58
|
|
41
59
|
def alive?
|
@@ -44,6 +62,10 @@ class CLIXFlashPlayer
|
|
44
62
|
|
45
63
|
private
|
46
64
|
|
65
|
+
def clean_path(path)
|
66
|
+
File.expand_path(path.gsub("'", '').gsub("\\", ''))
|
67
|
+
end
|
68
|
+
|
47
69
|
def cleanup
|
48
70
|
if(@thread && @thread.alive?)
|
49
71
|
kill
|
data/lib/clix_wrapper.rb
CHANGED
@@ -1,39 +1,22 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
require 'rubygems'
|
3
|
-
require 'appscript'
|
4
|
-
|
5
|
-
# player9 = "/Users/lbayes/Projects/CLIXFlashPlayer/exploration/fixtures/9.0.151/Flash Player.app/Contents/MacOS/Flash Player"
|
6
|
-
# player10 = "/Users/lbayes/Projects/CLIXFlashPlayer/exploration/fixtures/10.0.22.87/Flash Player.app/Contents/MacOS/Flash Player"
|
7
|
-
|
8
|
-
# player = player10
|
9
|
-
|
10
|
-
# good_swf = '/Users/lbayes/Projects/CLIXFlashPlayer/exploration/fixtures/SomeProject.swf'
|
11
|
-
# bad_swf = '/Users/lbayes/Projects/CLIXFlashPlayer/exploration/fixtures/InstantRuntimeException.swf'
|
12
|
-
|
13
|
-
# swf = good_swf
|
14
3
|
|
15
4
|
player = ARGV[0]
|
16
5
|
swf = ARGV[1]
|
17
6
|
|
18
|
-
|
19
|
-
|
7
|
+
raise "CLIXWrapper requires 'player' argument like:\nruby clix_wrapper [player] [swf]" if(player.nil?)
|
8
|
+
raise "CLIXWrapper could not find player at '#{player}'" if !File.exists?(player)
|
20
9
|
|
21
|
-
if(
|
22
|
-
|
23
|
-
end
|
10
|
+
raise "CLIXWrapper requires 'swf' argument like:\nruby clix_wrapper [player] [swf]" if(swf.nil?)
|
11
|
+
raise "CLIXWrapper could not find swf at '#{swf}'" if !File.exists?(swf)
|
24
12
|
|
25
|
-
|
26
|
-
|
13
|
+
begin
|
14
|
+
require 'appscript'
|
15
|
+
# Give the player focus:
|
16
|
+
Appscript.app(player).activate
|
17
|
+
# Open the SWF:
|
18
|
+
Appscript.app(player).open(MacTypes::Alias.path(swf))
|
19
|
+
rescue LoadError => e
|
20
|
+
raise "\n\n[ERROR] You must install the rb-appscript gem to use the desktop debug Flash Player, you do this by running:\n\nsudo gem install rb-appscript"
|
27
21
|
end
|
28
22
|
|
29
|
-
# player = File.expand_path(player).split(' ').join('\ ')
|
30
|
-
# swf = File.expand_path(swf).split(' ').join('\ ')
|
31
|
-
|
32
|
-
|
33
|
-
# Give the player focus:
|
34
|
-
Appscript.app(player).activate
|
35
|
-
puts "activate succeeded"
|
36
|
-
# Open the SWF:
|
37
|
-
Appscript.app(player).open(MacTypes::Alias.path(swf))
|
38
|
-
puts "open succeeded"
|
39
|
-
|
data/rakefile.rb
CHANGED
@@ -17,5 +17,31 @@ rescue LoadError
|
|
17
17
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
18
18
|
end
|
19
19
|
|
20
|
+
# Ugly hack stolen from Hoe to execute test cases...
|
21
|
+
# need an internet connection to figure out how to
|
22
|
+
# get Jeweler to execute my tests.
|
23
|
+
def make_test_cmd multi = false # :nodoc:
|
24
|
+
test_globs = ['test/*_test.rb']
|
25
|
+
tests = ["rubygems", 'test/unit'] +
|
26
|
+
test_globs.map { |g| Dir.glob(g) }.flatten
|
27
|
+
tests.map! {|f| %(require "#{f}")}
|
28
|
+
|
29
|
+
filter = ENV['FILTER'] || ENV['TESTOPTS']
|
30
|
+
cmd = "-e '#{tests.join("; ")}' #{filter}"
|
31
|
+
|
32
|
+
if multi then
|
33
|
+
ENV['EXCLUDED_VERSIONS'] = multiruby_skip.join ":"
|
34
|
+
cmd = "-S multiruby #{cmd}"
|
35
|
+
end
|
36
|
+
|
37
|
+
cmd
|
38
|
+
end
|
39
|
+
|
40
|
+
desc 'Run the test suite. Use FILTER or TESTOPTS to add flags/args.'
|
41
|
+
task :test do
|
42
|
+
ruby make_test_cmd
|
43
|
+
end
|
44
|
+
|
45
|
+
|
20
46
|
# require 'newgem/tasks' # load /tasks/*.rake
|
21
47
|
# Dir['tasks/**/*.rake'].each { |t| load t }
|