ruby_do_plugin_execute_application 0.0.0 → 0.0.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/VERSION +1 -1
- data/lib/ruby_do_plugin_execute_application.rb +74 -54
- data/ruby_do_plugin_execute_application.gemspec +66 -0
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
@@ -1,6 +1,38 @@
|
|
1
1
|
class Ruby_do_plugin_execute_application < Ruby_do::Plugin::Base
|
2
|
-
def
|
3
|
-
|
2
|
+
def start
|
3
|
+
#Scan XDG-dirs for .desktop application files.
|
4
|
+
dirs_scanned = []
|
5
|
+
@results_found = []
|
6
|
+
@debug = false
|
7
|
+
|
8
|
+
#Do this in thread to avoid locking app.
|
9
|
+
Thread.new do
|
10
|
+
begin
|
11
|
+
ENV["XDG_DATA_DIRS"].split(":").each do |val|
|
12
|
+
val = val.to_s.gsub("//", "/").gsub(/\/$/, "")
|
13
|
+
|
14
|
+
next if dirs_scanned.index(val) != nil
|
15
|
+
dirs_scanned << val
|
16
|
+
|
17
|
+
path = "#{val}/applications"
|
18
|
+
self.scan_dir(path) if File.exists?(path)
|
19
|
+
end
|
20
|
+
|
21
|
+
#Delete static results which were not found after scanning.
|
22
|
+
self.rdo_plugin_args[:rdo].ob.list(:Static_result, "plugin_id" => self.model.id, "id_not" => @results_found) do |sres|
|
23
|
+
print "Deleting result because it not longer exists: '#{sres[:id_str]}'.\n" if @debug
|
24
|
+
self.rdo_plugin_args[:rdo].ob.delete(sres)
|
25
|
+
end
|
26
|
+
rescue => e
|
27
|
+
$stderr.puts "Error when updating 'execute_application'-plugin."
|
28
|
+
$stderr.puts e.inspect
|
29
|
+
$stderr.puts e.backtrace
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def load_icons
|
35
|
+
print "Loading icons.\n" if @debug
|
4
36
|
|
5
37
|
#Find icon-paths to scan for icons.
|
6
38
|
@icon_paths = []
|
@@ -9,14 +41,6 @@ class Ruby_do_plugin_execute_application < Ruby_do::Plugin::Base
|
|
9
41
|
self.scan_icon_dir("/usr/share/icons")
|
10
42
|
|
11
43
|
@icon_exts = ["png", "xpm", "svg"]
|
12
|
-
|
13
|
-
|
14
|
-
#Scan XDG-dirs for .desktop application files.
|
15
|
-
@apps = []
|
16
|
-
ENV["XDG_DATA_DIRS"].split(":").each do |val|
|
17
|
-
path = "#{val}/applications"
|
18
|
-
self.scan_dir(path) if File.exists?(path)
|
19
|
-
end
|
20
44
|
end
|
21
45
|
|
22
46
|
def scan_icon_dir(path)
|
@@ -53,13 +77,21 @@ class Ruby_do_plugin_execute_application < Ruby_do::Plugin::Base
|
|
53
77
|
end
|
54
78
|
|
55
79
|
def scan_dir(path)
|
80
|
+
print "Path: #{path}\n" if @debug
|
81
|
+
|
56
82
|
Dir.foreach(path) do |file|
|
57
83
|
next if file[0, 1] == "."
|
58
|
-
fp = "#{path}/#{file}"
|
84
|
+
fp = "#{path}/#{file}".gsub("//", "/")
|
59
85
|
|
60
86
|
if File.directory?(fp)
|
61
87
|
self.scan_dir(fp)
|
62
88
|
else
|
89
|
+
if sres = self.static_result_get(fp) and fp.to_s.downcase.index("poedit") == nil
|
90
|
+
@results_found << sres.id
|
91
|
+
print "Skipping because exists: #{fp}\n" if @debug
|
92
|
+
next
|
93
|
+
end
|
94
|
+
|
63
95
|
cont = File.read(fp)
|
64
96
|
|
65
97
|
data = {}
|
@@ -67,19 +99,28 @@ class Ruby_do_plugin_execute_application < Ruby_do::Plugin::Base
|
|
67
99
|
data[match[0].to_s.downcase] = match[1]
|
68
100
|
end
|
69
101
|
|
102
|
+
if !data["name"] or !data["exec"]
|
103
|
+
print "Skipping because no name or no exec: #{fp}\n" if @debug
|
104
|
+
next
|
105
|
+
end
|
106
|
+
|
70
107
|
icon_paths = []
|
71
108
|
icon_path = nil
|
72
109
|
|
73
|
-
|
74
|
-
if
|
75
|
-
|
76
|
-
|
110
|
+
[data["icon"], data["name"]].each do |icon|
|
111
|
+
next if icon.to_s.strip.empty?
|
112
|
+
|
113
|
+
if icon
|
114
|
+
icon_paths << icon if File.exists?(icon)
|
115
|
+
|
116
|
+
self.load_icons if !@icon_paths
|
77
117
|
@icon_paths.each do |path|
|
118
|
+
icon_fp = "#{path}/#{icon}"
|
119
|
+
icon_paths << icon_fp if File.exists?(icon_fp)
|
120
|
+
|
78
121
|
@icon_exts.each do |ext|
|
79
|
-
|
80
|
-
if File.exists?(
|
81
|
-
icon_paths << fp
|
82
|
-
end
|
122
|
+
icon_fp = "#{path}/#{icon}.#{ext}"
|
123
|
+
icon_paths << icon_fp if File.exists?(icon_fp)
|
83
124
|
end
|
84
125
|
end
|
85
126
|
end
|
@@ -90,15 +131,19 @@ class Ruby_do_plugin_execute_application < Ruby_do::Plugin::Base
|
|
90
131
|
icon_path = icon_paths.first
|
91
132
|
end
|
92
133
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
134
|
+
print "Registering: #{fp}\n" if @debug
|
135
|
+
exec_data = data["exec"].gsub("%U", "").gsub("%F", "").strip
|
136
|
+
res = self.register_static_result(
|
137
|
+
:id_str => fp,
|
138
|
+
:title => data["name"],
|
139
|
+
:descr => sprintf(_("Open the application: '%1$s' with the command '%2$s'."), data["name"], exec_data),
|
140
|
+
:icon_path => icon_path,
|
141
|
+
:data => {
|
142
|
+
:exec => exec_data
|
100
143
|
}
|
101
|
-
|
144
|
+
)
|
145
|
+
|
146
|
+
@results_found << res[:sres].id
|
102
147
|
end
|
103
148
|
end
|
104
149
|
end
|
@@ -109,33 +154,8 @@ class Ruby_do_plugin_execute_application < Ruby_do::Plugin::Base
|
|
109
154
|
}
|
110
155
|
end
|
111
156
|
|
112
|
-
def
|
113
|
-
|
114
|
-
@apps.each do |app|
|
115
|
-
found_all = true
|
116
|
-
args[:words].each do |word|
|
117
|
-
if app[:namel].index(word) == nil
|
118
|
-
found_all = false
|
119
|
-
break
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
if found_all
|
124
|
-
yielder << Ruby_do::Plugin::Result.new(
|
125
|
-
:plugin => self,
|
126
|
-
:title => app[:name],
|
127
|
-
:title_html => "<b>#{Knj::Web.html(app[:name])}</b>",
|
128
|
-
:descr => sprintf(_("Open the application: '%1$s' with the command '%2$s'."), app[:name], app[:exec]),
|
129
|
-
:exec => app[:exec],
|
130
|
-
:icon => app[:icon_path]
|
131
|
-
)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
def execute_result(args)
|
138
|
-
Knj::Os.subproc(args[:res].args[:exec])
|
157
|
+
def execute_static_result(args)
|
158
|
+
Knj::Os.subproc(args[:sres].data[:exec])
|
139
159
|
return :close_win_main
|
140
160
|
end
|
141
161
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{ruby_do_plugin_execute_application}
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Kasper Johansen"]
|
12
|
+
s.date = %q{2012-07-11}
|
13
|
+
s.description = %q{A plugin for Ruby-Do that executes installed applications.}
|
14
|
+
s.email = %q{k@spernj.org}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".rspec",
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"lib/ruby_do_plugin_execute_application.rb",
|
29
|
+
"ruby_do_plugin_execute_application.gemspec",
|
30
|
+
"spec/ruby_do_plugin_execute_application_spec.rb",
|
31
|
+
"spec/spec_helper.rb"
|
32
|
+
]
|
33
|
+
s.homepage = %q{http://github.com/kaspernj/ruby_do_plugin_execute_application}
|
34
|
+
s.licenses = ["MIT"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = %q{1.6.2}
|
37
|
+
s.summary = %q{A plugin for Ruby-Do that executes installed applications.}
|
38
|
+
|
39
|
+
if s.respond_to? :specification_version then
|
40
|
+
s.specification_version = 3
|
41
|
+
|
42
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
+
s.add_runtime_dependency(%q<ruby_do>, [">= 0"])
|
44
|
+
s.add_runtime_dependency(%q<knjrbfw>, [">= 0"])
|
45
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
46
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
47
|
+
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
48
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
49
|
+
else
|
50
|
+
s.add_dependency(%q<ruby_do>, [">= 0"])
|
51
|
+
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
52
|
+
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
53
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
54
|
+
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
55
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
56
|
+
end
|
57
|
+
else
|
58
|
+
s.add_dependency(%q<ruby_do>, [">= 0"])
|
59
|
+
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
60
|
+
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
61
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
62
|
+
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
63
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: ruby_do_plugin_execute_application
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kasper Johansen
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-07-
|
13
|
+
date: 2012-07-11 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- Rakefile
|
99
99
|
- VERSION
|
100
100
|
- lib/ruby_do_plugin_execute_application.rb
|
101
|
+
- ruby_do_plugin_execute_application.gemspec
|
101
102
|
- spec/ruby_do_plugin_execute_application_spec.rb
|
102
103
|
- spec/spec_helper.rb
|
103
104
|
has_rdoc: true
|
@@ -114,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
114
115
|
requirements:
|
115
116
|
- - ">="
|
116
117
|
- !ruby/object:Gem::Version
|
117
|
-
hash:
|
118
|
+
hash: 802253384185664232
|
118
119
|
segments:
|
119
120
|
- 0
|
120
121
|
version: "0"
|