boom 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +6 -0
- data/README.md +4 -1
- data/Rakefile +3 -3
- data/boom.gemspec +2 -2
- data/lib/boom/command.rb +49 -20
- data/lib/boom/platform.rb +13 -7
- data/lib/boom.rb +2 -2
- data/test/item.sh +6 -2
- data/test/list.sh +1 -1
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
# boom changes
|
2
2
|
## head
|
3
3
|
|
4
|
+
## 0.4.0
|
5
|
+
- Returns an error if you try to `open` something that doesn't exist.
|
6
|
+
([@romainberger](https://github.com/romainberger), #90).
|
7
|
+
- Removes `--delete` in favor of going to `boom delete x`
|
8
|
+
([@eugeneius](https://github.com/holman/boom/pull/89), #89).
|
9
|
+
|
4
10
|
## 0.3.0
|
5
11
|
- 0.3 removes all the Storage nonsense in favor of clean and easy JSON. Less
|
6
12
|
code is best code.
|
data/README.md
CHANGED
@@ -24,6 +24,9 @@ For more details about what boom is and how it works, check out
|
|
24
24
|
$ boom shirt
|
25
25
|
Boom! Just copied http://cl.ly/NwCS/shirt.gif to your clipboard.
|
26
26
|
|
27
|
+
$ boom delete gifs shirt
|
28
|
+
Boom! shirt is gone forever.
|
29
|
+
|
27
30
|
And that's just a taste! I know, you're salivating, I can hear you from here.
|
28
31
|
(Why your saliva is noisy is beyond me.) Check out the [full list of
|
29
32
|
commands](https://github.com/holman/boom/wiki/Commands).
|
@@ -51,4 +54,4 @@ All good? Cool! Then [send me a pull request](https://github.com/holman/boom/pul
|
|
51
54
|
[@holman](http://twitter.com/holman) — if you're having issues, want me to
|
52
55
|
merge in your pull request, or are using boom in a cool way. I'm kind of hoping
|
53
56
|
this is generic enough that people do some fun things with it. First one to use
|
54
|
-
`boom` to calculate their tax liability wins.
|
57
|
+
`boom` to calculate their tax liability wins.
|
data/Rakefile
CHANGED
@@ -75,9 +75,9 @@ task :release => :build do
|
|
75
75
|
puts "You must be on the master branch to release!"
|
76
76
|
exit!
|
77
77
|
end
|
78
|
-
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
79
|
-
sh "git tag v#{version}"
|
80
|
-
sh "git push origin master"
|
78
|
+
# sh "git commit --allow-empty -a -m 'Release #{version}'"
|
79
|
+
# sh "git tag v#{version}"
|
80
|
+
# sh "git push origin master"
|
81
81
|
sh "git push origin v#{version}"
|
82
82
|
sh "gem push pkg/#{name}-#{version}.gem"
|
83
83
|
end
|
data/boom.gemspec
CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
14
14
|
## the sub! line in the Rakefile
|
15
15
|
s.name = 'boom'
|
16
|
-
s.version = '0.
|
17
|
-
s.date = '2013-
|
16
|
+
s.version = '0.4.0'
|
17
|
+
s.date = '2013-08-18'
|
18
18
|
s.rubyforge_project = 'boom'
|
19
19
|
|
20
20
|
## Make sure your summary is short. The description may be as long
|
data/lib/boom/command.rb
CHANGED
@@ -92,22 +92,24 @@ module Boom
|
|
92
92
|
return help if command == 'help'
|
93
93
|
return help if command[0] == 45 || command[0] == '-' # any - dash options are pleas for help
|
94
94
|
return echo(major,minor) if command == 'echo' || command == 'e'
|
95
|
+
return copy(major,minor) if command == 'copy' || command == 'c'
|
95
96
|
return open(major,minor) if command == 'open' || command == 'o'
|
96
97
|
return random(major) if command == 'random' || command == 'rand' || command == 'r'
|
97
98
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
return add_item(command,major,minor) if minor
|
104
|
-
return add_item(command,major,stdin.read) if stdin.stat.size > 0
|
105
|
-
return search_list_for_item(command, major)
|
99
|
+
if command == 'delete' || command == 'd'
|
100
|
+
if minor
|
101
|
+
return delete_item(major, minor)
|
102
|
+
else
|
103
|
+
return delete_list(major)
|
106
104
|
end
|
107
105
|
end
|
108
106
|
|
109
|
-
if
|
110
|
-
|
107
|
+
# if we're operating on a List
|
108
|
+
if storage.list_exists?(command)
|
109
|
+
return detail_list(command) unless major
|
110
|
+
return add_item(command,major,minor) if minor
|
111
|
+
return add_item(command,major,stdin.read) if stdin.stat.size > 0
|
112
|
+
return search_list_for_item(command, major)
|
111
113
|
end
|
112
114
|
|
113
115
|
return search_items(command) if storage.item_exists?(command) and !major
|
@@ -136,17 +138,25 @@ module Boom
|
|
136
138
|
list = List.find(major)
|
137
139
|
if minor
|
138
140
|
item = storage.items.detect { |item| item.name == minor }
|
139
|
-
|
141
|
+
if item
|
142
|
+
output "#{cyan("Boom!")} We just opened #{yellow(Platform.open(item))} for you."
|
143
|
+
else
|
144
|
+
output "Couldn't find #{yellow(minor)}."
|
145
|
+
end
|
140
146
|
else
|
141
147
|
list.items.each { |item| Platform.open(item) }
|
142
148
|
output "#{cyan("Boom!")} We just opened all of #{yellow(major)} for you."
|
143
149
|
end
|
144
150
|
else
|
145
151
|
item = storage.items.detect { |item| item.name == major }
|
146
|
-
|
152
|
+
if item
|
153
|
+
output "#{cyan("Boom!")} We just opened #{yellow(Platform.open(item))} for you."
|
154
|
+
else
|
155
|
+
output "Couldn't find #{yellow(major)}."
|
156
|
+
end
|
147
157
|
end
|
148
158
|
end
|
149
|
-
|
159
|
+
|
150
160
|
# Public: Opens a random item
|
151
161
|
#
|
152
162
|
# Returns nothing.
|
@@ -161,9 +171,9 @@ module Boom
|
|
161
171
|
else
|
162
172
|
output "We couldn't find that list."
|
163
173
|
end
|
164
|
-
open(item.name, nil) unless item.nil?
|
174
|
+
open(item.name, nil) unless item.nil?
|
165
175
|
end
|
166
|
-
|
176
|
+
|
167
177
|
# Public: echoes only the Item's value without copying
|
168
178
|
#
|
169
179
|
# item_name - the String term to search for in all Item names
|
@@ -183,6 +193,23 @@ module Boom
|
|
183
193
|
output item.value
|
184
194
|
end
|
185
195
|
|
196
|
+
# Public: Copies to clipboard the Item's value without printing to screen
|
197
|
+
#
|
198
|
+
# Returns nothing
|
199
|
+
def copy(major, minor)
|
200
|
+
unless minor
|
201
|
+
item = storage.items.detect do |item|
|
202
|
+
item.name == major
|
203
|
+
end
|
204
|
+
return output "#{yellow(major)} #{red("not found")}" unless item
|
205
|
+
else
|
206
|
+
list = List.find(major)
|
207
|
+
item = list.find_item(minor)
|
208
|
+
return output "#{yellow(minor)} #{red("not found in")} #{yellow(major)}" unless item
|
209
|
+
end
|
210
|
+
Platform.copy(item)
|
211
|
+
end
|
212
|
+
|
186
213
|
# Public: add a new List.
|
187
214
|
#
|
188
215
|
# name - the String name of the List.
|
@@ -265,7 +292,7 @@ module Boom
|
|
265
292
|
end
|
266
293
|
end
|
267
294
|
|
268
|
-
# Public: search for an Item in all lists by name. Drops the
|
295
|
+
# Public: search for an Item in all lists by name. Drops the
|
269
296
|
# corresponding entry into your clipboard.
|
270
297
|
#
|
271
298
|
# name - the String term to search for in all Item names
|
@@ -279,7 +306,7 @@ module Boom
|
|
279
306
|
output "#{cyan("Boom!")} We just copied #{yellow(Platform.copy(item))} to your clipboard."
|
280
307
|
end
|
281
308
|
|
282
|
-
# Public: search for an Item in a particular list by name. Drops the
|
309
|
+
# Public: search for an Item in a particular list by name. Drops the
|
283
310
|
# corresponding entry into your clipboard if found.
|
284
311
|
#
|
285
312
|
# list_name - the String name of the List in which to scope the search
|
@@ -329,10 +356,10 @@ module Boom
|
|
329
356
|
boom all show all items in all lists
|
330
357
|
boom edit edit the boom JSON file in $EDITOR
|
331
358
|
boom help this help text
|
332
|
-
|
359
|
+
|
333
360
|
boom <list> create a new list
|
334
361
|
boom <list> show items for a list
|
335
|
-
boom <list>
|
362
|
+
boom delete <list> deletes a list
|
336
363
|
|
337
364
|
boom <list> <name> <value> create a new list item
|
338
365
|
boom <name> copy item's value to clipboard
|
@@ -343,7 +370,9 @@ module Boom
|
|
343
370
|
boom random <list> open a random item's url for a list in browser
|
344
371
|
boom echo <name> echo the item's value without copying
|
345
372
|
boom echo <list> <name> echo the item's value without copying
|
346
|
-
boom
|
373
|
+
boom copy <name> copy the item's value without echo
|
374
|
+
boom copy <list> <name> copy the item's value without echo
|
375
|
+
boom delete <list> <name> deletes an item
|
347
376
|
|
348
377
|
all other documentation is located at:
|
349
378
|
https://github.com/holman/boom
|
data/lib/boom/platform.rb
CHANGED
@@ -14,7 +14,7 @@ module Boom
|
|
14
14
|
#
|
15
15
|
# Returns true if running on darwin (MacOS X), else false
|
16
16
|
def darwin?
|
17
|
-
!!(
|
17
|
+
!!(RbConfig::CONFIG['host_os'] =~ /darwin/)
|
18
18
|
end
|
19
19
|
|
20
20
|
# Public: tests if currently running on windows.
|
@@ -23,7 +23,7 @@ module Boom
|
|
23
23
|
#
|
24
24
|
# Returns true if running on windows (win32/mingw32), else false
|
25
25
|
def windows?
|
26
|
-
!!(
|
26
|
+
!!(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/)
|
27
27
|
end
|
28
28
|
|
29
29
|
# Public: returns the command used to open a file or URL
|
@@ -35,7 +35,7 @@ module Boom
|
|
35
35
|
def open_command
|
36
36
|
if darwin?
|
37
37
|
'open'
|
38
|
-
elsif windows?
|
38
|
+
elsif windows?
|
39
39
|
'start'
|
40
40
|
else
|
41
41
|
'xdg-open'
|
@@ -69,14 +69,20 @@ module Boom
|
|
69
69
|
'xclip -selection clipboard'
|
70
70
|
end
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
# Public: copies a given Item's value to the clipboard. This method is
|
74
74
|
# designed to handle multiple platforms.
|
75
75
|
#
|
76
76
|
# Returns the String value of the Item.
|
77
77
|
def copy(item)
|
78
|
-
|
79
|
-
|
78
|
+
begin
|
79
|
+
IO.popen(copy_command,"w") {|cc| cc.write(item.value)}
|
80
|
+
item.value
|
81
|
+
rescue Errno::ENOENT
|
82
|
+
puts item.value
|
83
|
+
puts "Please install #{copy_command[0..5]} to copy this item to your clipboard"
|
84
|
+
exit
|
85
|
+
end
|
80
86
|
end
|
81
87
|
|
82
88
|
# Public: opens the JSON file in an editor for you to edit. Uses the
|
@@ -86,7 +92,7 @@ module Boom
|
|
86
92
|
#
|
87
93
|
# Returns a String with a helpful message.
|
88
94
|
def edit(json_file)
|
89
|
-
unless
|
95
|
+
unless ENV['EDITOR'].nil?
|
90
96
|
unless windows?
|
91
97
|
system("`echo $EDITOR` #{json_file} &")
|
92
98
|
else
|
data/lib/boom.rb
CHANGED
data/test/item.sh
CHANGED
@@ -10,10 +10,14 @@ it_adds_an_item() {
|
|
10
10
|
}
|
11
11
|
|
12
12
|
it_deletes_an_item() {
|
13
|
-
yes | $boom urls google
|
13
|
+
yes | $boom delete urls google | grep 'gone forever'
|
14
14
|
$boom urls google | grep 'not found'
|
15
15
|
}
|
16
16
|
|
17
17
|
it_echos_an_item() {
|
18
18
|
$boom echo site | grep 'zachholman.com'
|
19
|
-
}
|
19
|
+
}
|
20
|
+
|
21
|
+
it_handles_open_on_nonexistent_item() {
|
22
|
+
$boom open nadda | grep "nadda"
|
23
|
+
}
|
data/test/list.sh
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: yajl-ruby
|