osaka 0.4.0 → 0.4.1
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/osaka/scriptrunner.rb +41 -18
- data/lib/osaka/version.rb +1 -1
- data/spec/scriptrunner_spec.rb +7 -1
- metadata +2 -2
data/lib/osaka/scriptrunner.rb
CHANGED
@@ -30,18 +30,13 @@ module Osaka
|
|
30
30
|
def self.debug_prints?
|
31
31
|
@@debug_info_enabled
|
32
32
|
end
|
33
|
-
|
34
|
-
def self.
|
35
|
-
script_commands = applescript.gsub("\"", "\\\"").split(';')
|
36
|
-
escaped_commands = ""
|
37
|
-
script_commands.each { |l|
|
38
|
-
escaped_commands += " -e \"#{l.strip}\""
|
39
|
-
}
|
33
|
+
|
34
|
+
def self.print_debug_info_for_escaped_commands(original_applescript_commands, escaped_commands)
|
40
35
|
if (debug_prints?)
|
41
36
|
if (@@debug_info_format == :plain_text)
|
42
37
|
debug_output = "Executing: osascript#{escaped_commands}"
|
43
38
|
elsif (@@debug_info_format == :short_html)
|
44
|
-
debug_output =
|
39
|
+
debug_output = original_applescript_commands
|
45
40
|
debug_output += "<br>"
|
46
41
|
elsif (@@debug_info_format == :script)
|
47
42
|
File.open(@@debug_info_script_filename, File::WRONLY|File::APPEND|File::CREAT, 0755) { |file|
|
@@ -50,14 +45,9 @@ module Osaka
|
|
50
45
|
end
|
51
46
|
puts debug_output
|
52
47
|
end
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
begin
|
57
|
-
output = do_system("osascript#{escaped_commands}")
|
58
|
-
rescue Osaka:: SystemCommandFailed
|
59
|
-
raise(Osaka::ScriptRunnerError, "Error received while executing: #{applescript}")
|
60
|
-
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.print_debug_info_for_additional_output(output)
|
61
51
|
if (!output.empty? && debug_prints?)
|
62
52
|
if (@@debug_info_format == :plain_text)
|
63
53
|
debug_output = "Output was: #{output}"
|
@@ -66,6 +56,39 @@ module Osaka
|
|
66
56
|
end
|
67
57
|
puts debug_output
|
68
58
|
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.execute(applescript)
|
62
|
+
script_commands = applescript.gsub("\"", "\\\"").split(';')
|
63
|
+
escaped_commands = ""
|
64
|
+
script_commands.each { |l|
|
65
|
+
escaped_commands += " -e \"#{l.strip}\""
|
66
|
+
}
|
67
|
+
|
68
|
+
print_debug_info_for_escaped_commands(applescript, escaped_commands)
|
69
|
+
|
70
|
+
output = ""
|
71
|
+
begin
|
72
|
+
output = do_system("osascript#{escaped_commands}")
|
73
|
+
rescue Osaka::SystemCommandFailed => ex
|
74
|
+
if ex.message =~ /assistive devices/
|
75
|
+
puts <<-eom
|
76
|
+
Osaka execution failed with the error: #{ex.message}
|
77
|
+
The reason for this is probably that you didn't enable the acess for assistive devices.
|
78
|
+
Without this enabled, Osaka won't be able to execute applescript and thus won't work.
|
79
|
+
You can turn this on (in mountain lion) under:
|
80
|
+
system preferences -> Accessibility -> Enable access for assistive devices
|
81
|
+
If you are under snow leopard, it is under:
|
82
|
+
system preferences -> Universal Access -> Enable access for assistive devices
|
83
|
+
|
84
|
+
Osaka will not continue as it won't work without this enabled. Please enable it and re-run.
|
85
|
+
eom
|
86
|
+
exit
|
87
|
+
return
|
88
|
+
end
|
89
|
+
raise(Osaka::ScriptRunnerError, "Error received while executing: #{applescript}")
|
90
|
+
end
|
91
|
+
print_debug_info_for_additional_output(output)
|
69
92
|
output
|
70
93
|
end
|
71
94
|
|
@@ -75,8 +98,8 @@ module Osaka
|
|
75
98
|
|
76
99
|
private
|
77
100
|
def self.do_system(command)
|
78
|
-
output = `#{command}`
|
79
|
-
raise Osaka::SystemCommandFailed unless $?.success?
|
101
|
+
output = `#{command} 2>&1`
|
102
|
+
raise Osaka::SystemCommandFailed, "message" + output unless $?.success?
|
80
103
|
output
|
81
104
|
end
|
82
105
|
end
|
data/lib/osaka/version.rb
CHANGED
data/spec/scriptrunner_spec.rb
CHANGED
@@ -42,7 +42,13 @@ describe "Osaka::ScriptRunner" do
|
|
42
42
|
Osaka::ScriptRunner::disable_debug_prints
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
it "Should explain how to turn on the access for assistive devices when it is disabled... and exit" do
|
46
|
+
subject.should_receive(:do_system).and_raise(Osaka::SystemCommandFailed.new ("execution error: System Events got an error: Access for assistive devices is disabled. (-25211)"))
|
47
|
+
subject.should_receive(:puts).with(/system preferences/)
|
48
|
+
subject.should_receive(:exit)
|
49
|
+
subject.execute("anything")
|
50
|
+
end
|
51
|
+
|
46
52
|
it "Should not print any debugging information by default " do
|
47
53
|
subject.should_receive(:do_system).and_return("")
|
48
54
|
subject.should_not_receive(:puts)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: osaka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.4.
|
5
|
+
version: 0.4.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Bas Vodde
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-08-
|
13
|
+
date: 2012-08-22 00:00:00 +08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|