alfred-workflow 2.0.1 → 2.0.2
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +3 -4
- data/Gemfile.lock +1 -1
- data/Guardfile +2 -2
- data/alfred-workflow.gemspec +1 -3
- data/lib/alfred.rb +36 -2
- data/lib/alfred/setting.rb +75 -5
- data/lib/alfred/util.rb +14 -1
- data/lib/alfred/version.rb +1 -1
- data/spec/alfred/feedback_spec.rb +1 -1
- data/spec/alfred/setting_spec.rb +14 -39
- data/test/workflow/setting.yaml +10 -8
- metadata +1 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c46c948baa33e334a81a7a9cb828a30080201a9a
|
4
|
+
data.tar.gz: 7612b59e92b7a65251e50f0f01d686d66d3d95a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c048fe616f7c59fcf4b636a1151a94c3fcdd962ecc93e721515aa735aff4d046b925fe177f0376aa267d2caf7a58a481b7ddc0d0c4f8eaafb29b9a62d8336d24
|
7
|
+
data.tar.gz: a9ede3a26cbd8bffac326282541a32196097f94e112db9853af28eb96a2c9528fa51f15c56dbcd2c4221ef15f0fab819f9a415cebce9203d532bbaef569068a8
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
���t����Ӻ�u��R85bp��ؚ�|ĮN�B�B�W���)�K�h����\�lx�R ��=Ia�C�1x�6cc�.�Y�b�✧�{�� ҵEW�)�^s�[_�I�Dj�J�
|
1
|
+
P��Z-e�TY���B� J�R-v���_�IS`\��n˙k�
|
2
|
+
*ϲM�����)C�J(IN1�v ŧ����0?��ҝ���W��K��BY.��썤t��e��ͮB��ܕ�E8do�1��u�j��̐�+�k�`u�P�Y<F��ʒQb����)se��."�(�M˓z�*f%3��6X[�{��
|
3
|
+
�h�
|
data/Gemfile.lock
CHANGED
data/Guardfile
CHANGED
@@ -15,7 +15,7 @@ end
|
|
15
15
|
|
16
16
|
group :singleruby do
|
17
17
|
|
18
|
-
guard 'rspec', :rvm => ['
|
18
|
+
guard 'rspec', :rvm => ['system'], :notification => true do
|
19
19
|
|
20
20
|
watch(%r{^spec/.+_spec\.rb$})
|
21
21
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
@@ -26,7 +26,7 @@ end
|
|
26
26
|
|
27
27
|
group :multirubies do
|
28
28
|
|
29
|
-
guard 'rspec', :rvm => ['
|
29
|
+
guard 'rspec', :rvm => ['system', '1.9.3', '1.8.7'], :notification => true do
|
30
30
|
|
31
31
|
watch(%r{^spec/.+_spec\.rb$})
|
32
32
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
data/alfred-workflow.gemspec
CHANGED
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "alfred-workflow"
|
5
|
-
s.version = "2.0.1.
|
5
|
+
s.version = "2.0.1.20131023093234"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Zhao Cai"]
|
9
|
-
s.cert_chain = ["/Users/zhaocai/.gem/gem-public_cert.pem"]
|
10
9
|
s.date = "2013-10-23"
|
11
10
|
s.description = "alfred-workflow is a ruby Gem helper for building [Alfred](http://www.alfredapp.com) workflow."
|
12
11
|
s.email = ["caizhaoff@gmail.com"]
|
@@ -18,7 +17,6 @@ Gem::Specification.new do |s|
|
|
18
17
|
s.require_paths = ["lib"]
|
19
18
|
s.rubyforge_project = "alfred-workflow"
|
20
19
|
s.rubygems_version = "2.0.3"
|
21
|
-
s.signing_key = "/Users/zhaocai/.gem/gem-private_key.pem"
|
22
20
|
s.summary = "alfred-workflow is a ruby Gem helper for building [Alfred](http://www.alfredapp.com) workflow."
|
23
21
|
|
24
22
|
if s.respond_to? :specification_version then
|
data/lib/alfred.rb
CHANGED
@@ -44,9 +44,41 @@ module Alfred
|
|
44
44
|
# MyHandler.new(alfred).register
|
45
45
|
# end
|
46
46
|
#
|
47
|
-
def with_friendly_error(
|
47
|
+
def with_friendly_error(alfred_core = nil, &blk)
|
48
48
|
begin
|
49
|
+
if alfred_core.nil? or !alfred_core.is_a?(::Alfred::Core)
|
50
|
+
alfred = Alfred::Core.new
|
51
|
+
end
|
52
|
+
rescue Exception => e
|
53
|
+
log_file = File.expand_path("~/Library/Logs/Alfred-Workflow.log")
|
54
|
+
rescue_feedback = %Q{
|
55
|
+
<items>
|
56
|
+
<item autocomplete="" uid="Rescue Feedback" valid="no">
|
57
|
+
<title>Alfred Gem Fail to Initialize.</title>
|
58
|
+
<arg>Alfred::NoBundleIDError: Wrong Bundle ID Test!</arg>
|
59
|
+
<subtitle>Check log #{log_file} for extra debug info.</subtitle>
|
60
|
+
<icon>/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/AlertStopIcon.icns</icon>
|
61
|
+
</item>
|
62
|
+
<item autocomplete="Alfred-Workflow.log" type="file" valid="yes">
|
63
|
+
<title>Alfred-Workflow.log</title>
|
64
|
+
<arg>#{log_file}</arg>
|
65
|
+
<subtitle>#{log_file}</subtitle>
|
66
|
+
<icon type="fileicon">/Applications/Utilities/Console.app</icon>
|
67
|
+
</item>
|
68
|
+
</items>
|
69
|
+
}
|
70
|
+
puts rescue_feedback
|
49
71
|
|
72
|
+
File.open(log_file, "a+") do |log|
|
73
|
+
log.puts "Alfred Gem Fail to Initialize.\n #{e.message}"
|
74
|
+
log.puts e.backtrace.join(" \n")
|
75
|
+
log.flush
|
76
|
+
end
|
77
|
+
|
78
|
+
exit e.status_code
|
79
|
+
end
|
80
|
+
|
81
|
+
begin
|
50
82
|
yield alfred
|
51
83
|
alfred.start_handler
|
52
84
|
|
@@ -76,14 +108,16 @@ module Alfred
|
|
76
108
|
" #{e.inspect}\n #{e.backtrace.join(" \n")}\n")
|
77
109
|
puts alfred.rescue_feedback(
|
78
110
|
:title => "Fatal Error!") if alfred.with_rescue_feedback
|
79
|
-
|
111
|
+
exit(-1)
|
80
112
|
end
|
81
113
|
end
|
82
114
|
|
115
|
+
|
83
116
|
def workflow_folder
|
84
117
|
Dir.pwd
|
85
118
|
end
|
86
119
|
|
120
|
+
|
87
121
|
# launch alfred with query
|
88
122
|
def search(query = "")
|
89
123
|
%x{osascript <<__APPLESCRIPT__
|
data/lib/alfred/setting.rb
CHANGED
@@ -2,13 +2,13 @@ require 'yaml'
|
|
2
2
|
|
3
3
|
module Alfred
|
4
4
|
|
5
|
-
class Setting
|
5
|
+
class Setting
|
6
6
|
attr_accessor :backend_file
|
7
7
|
attr_reader :format
|
8
8
|
|
9
9
|
def initialize(alfred, &block)
|
10
|
-
super()
|
11
10
|
@core = alfred
|
11
|
+
@table = {}
|
12
12
|
|
13
13
|
instance_eval(&block) if block_given?
|
14
14
|
|
@@ -18,36 +18,106 @@ module Alfred
|
|
18
18
|
raise InvalidFormat, "#{format} is not suported." unless validate_format
|
19
19
|
|
20
20
|
unless File.exist?(@backend_file)
|
21
|
-
|
21
|
+
@table.merge!({:id => @core.bundle_id})
|
22
22
|
dump(:flush => true)
|
23
23
|
else
|
24
24
|
load
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
|
28
29
|
def validate_format
|
29
30
|
['yaml'].include?(format)
|
30
31
|
end
|
31
32
|
|
33
|
+
|
32
34
|
def load
|
33
35
|
send("load_from_#{format}".to_sym)
|
34
36
|
end
|
35
37
|
|
38
|
+
|
36
39
|
def dump(opts = {})
|
37
40
|
send("dump_to_#{format}".to_sym, opts)
|
38
41
|
end
|
39
42
|
|
40
43
|
alias_method :close, :dump
|
41
44
|
|
45
|
+
#
|
46
|
+
# Provides marshalling support for use by the Marshal library.
|
47
|
+
#
|
48
|
+
def marshal_dump
|
49
|
+
@table
|
50
|
+
end
|
51
|
+
|
52
|
+
#
|
53
|
+
# Provides marshalling support for use by the Marshal library.
|
54
|
+
#
|
55
|
+
def marshal_load(x)
|
56
|
+
@table.merge! x
|
57
|
+
end
|
58
|
+
#
|
59
|
+
# Converts to hash
|
60
|
+
#
|
61
|
+
def to_h
|
62
|
+
@table.dup
|
63
|
+
end
|
64
|
+
|
65
|
+
def each_pair
|
66
|
+
return to_enum __method__ unless block_given?
|
67
|
+
@table.each_pair{|p| yield p}
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
def [](name)
|
72
|
+
@table[name]
|
73
|
+
end
|
74
|
+
|
75
|
+
#
|
76
|
+
# Sets the value of a member.
|
77
|
+
#
|
78
|
+
# person = Alfred::Setting.new('name' => 'John Smith', 'age' => 70)
|
79
|
+
# person[:age] = 42
|
80
|
+
#
|
81
|
+
def []=(name, value)
|
82
|
+
@table[name] = value
|
83
|
+
end
|
84
|
+
|
85
|
+
def has_key?(key)
|
86
|
+
@table.has_key?(key)
|
87
|
+
end
|
88
|
+
alias_method :key?, :has_key?
|
89
|
+
|
90
|
+
|
91
|
+
def ==(other)
|
92
|
+
return false unless other.kind_of?(Alfred::Setting)
|
93
|
+
@table == other.table
|
94
|
+
end
|
95
|
+
|
96
|
+
def eql?(other)
|
97
|
+
return false unless other.kind_of?(Alfred::Setting)
|
98
|
+
@table.eql?(other.table)
|
99
|
+
end
|
100
|
+
|
101
|
+
attr_reader :table # :nodoc:
|
102
|
+
protected :table
|
103
|
+
|
104
|
+
|
105
|
+
#
|
106
|
+
# Send missing method to @table to mimic a hash
|
107
|
+
#
|
108
|
+
def method_missing (name, *args, &block) # :nodoc:
|
109
|
+
@table.send(name, *args, &block)
|
110
|
+
end
|
111
|
+
|
42
112
|
protected
|
43
113
|
|
44
114
|
def load_from_yaml
|
45
|
-
|
115
|
+
@table.merge!(YAML::load_file(@backend_file))
|
46
116
|
end
|
47
117
|
|
48
118
|
def dump_to_yaml(opts = {})
|
49
119
|
File.open(@backend_file, File::WRONLY|File::TRUNC|File::CREAT) { |f|
|
50
|
-
YAML::dump(
|
120
|
+
YAML::dump(@table, f)
|
51
121
|
f.flush if opts[:flush]
|
52
122
|
}
|
53
123
|
end
|
data/lib/alfred/util.rb
CHANGED
@@ -41,7 +41,20 @@ __APPLESCRIPT__}
|
|
41
41
|
|
42
42
|
def open_url(url)
|
43
43
|
uri = URI.parse(url)
|
44
|
-
%x{open #{uri.to_s}}
|
44
|
+
%x{/usr/bin/open #{uri.to_s}}
|
45
|
+
end
|
46
|
+
|
47
|
+
def open_with(app, path)
|
48
|
+
%x{osascript <<__APPLESCRIPT__
|
49
|
+
tell application "#{app}"
|
50
|
+
try
|
51
|
+
open "#{path}"
|
52
|
+
activate
|
53
|
+
on error err_msg number err_num
|
54
|
+
return err_msg
|
55
|
+
end try
|
56
|
+
end tell
|
57
|
+
__APPLESCRIPT__}
|
45
58
|
end
|
46
59
|
|
47
60
|
def reveal_in_finder(path)
|
data/lib/alfred/version.rb
CHANGED
data/spec/alfred/setting_spec.rb
CHANGED
@@ -7,25 +7,32 @@ describe "Setting with yaml as backend" do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should use yaml as defualt backend" do
|
10
|
-
@alfred.
|
10
|
+
@alfred.workflow_setting.format.should == "yaml"
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should correctly load settings" do
|
14
|
-
@alfred.
|
14
|
+
@alfred.workflow_setting[:id].should == "me.zhaowu.alfred-workflow-gem"
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should correctly save settings" do
|
18
|
-
|
19
|
-
|
18
|
+
rand = Random.rand(100000)
|
19
|
+
|
20
|
+
@alfred.workflow_setting[:rand] = rand
|
21
|
+
@alfred.workflow_setting.dump(:flush => true)
|
22
|
+
|
23
|
+
@alfred.workflow_setting.load
|
24
|
+
@alfred.workflow_setting[:rand].should == rand
|
20
25
|
|
21
|
-
@alfred.setting.load
|
22
|
-
@alfred.setting[:language].should == "Chinese"
|
23
26
|
end
|
24
27
|
|
28
|
+
it "should handle common hash methods" do
|
29
|
+
@alfred.workflow_setting.delete :rand
|
30
|
+
|
31
|
+
@alfred.workflow_setting[:rand].should == nil
|
32
|
+
end
|
25
33
|
|
26
34
|
after :all do
|
27
35
|
reset_workflow
|
28
|
-
File.unlink(@alfred.setting.backend_file)
|
29
36
|
end
|
30
37
|
|
31
38
|
end
|
@@ -33,36 +40,4 @@ end
|
|
33
40
|
|
34
41
|
|
35
42
|
|
36
|
-
# describe "Setting with plist as backend" do
|
37
|
-
# before :all do
|
38
|
-
# setup_workflow
|
39
|
-
# @alfred = Alfred::Core.new
|
40
|
-
|
41
|
-
# @alfred.setting do
|
42
|
-
# @format = 'plist'
|
43
|
-
# end
|
44
|
-
# end
|
45
|
-
|
46
|
-
# it "should correctly load settings" do
|
47
|
-
# @alfred.setting['id'].should == "me.zhaowu.alfred-workflow-gem"
|
48
|
-
# end
|
49
|
-
|
50
|
-
# it "should correctly save settings" do
|
51
|
-
# @alfred.setting['language'] = "English"
|
52
|
-
# @alfred.setting.dump(:flush => true)
|
53
|
-
|
54
|
-
# @alfred.setting['language'].should == "English"
|
55
|
-
# end
|
56
|
-
|
57
|
-
|
58
|
-
# after :all do
|
59
|
-
# reset_workflow
|
60
|
-
# File.unlink(@alfred.setting.backend_file)
|
61
|
-
# end
|
62
|
-
|
63
|
-
# end
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
43
|
|
data/test/workflow/setting.yaml
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
---
|
1
|
+
---
|
2
2
|
:id: me.zhaowu.alfred-workflow-gem
|
3
|
-
:help:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
3
|
+
:help:
|
4
|
+
- :kind: url
|
5
|
+
:title: Check the Homepage for help
|
6
|
+
:webloc: homepage.webloc
|
7
|
+
:subtitle: https://github.com/zhaocai/alfred-workflow
|
8
|
+
:url: https://github.com/zhaocai/alfred-workflow
|
9
|
+
- :kind: file
|
10
|
+
:path: README.pdf
|
11
|
+
:rand: 59510
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|