lukebayes-clix_flash_player 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 }
|