boom 0.0.4 → 0.0.5

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.
@@ -0,0 +1,26 @@
1
+ # boom changes
2
+
3
+ ## head
4
+
5
+ ## 0.0.5
6
+ - Item deletes are now scoped by list rather than GLOBAL DESTRUCTION! (thanks
7
+ [natebean](https://github.com/natebean)).
8
+ - Command line options, like `boop --help` are translated into `boom help`. In
9
+ the future we play around with options a bit more.
10
+ - Non-Mac-based platforms get clipboard support with `xclip`. If it's
11
+ problematic (which it almost certainly is; I'm breaking this more or less on
12
+ purpose), please patch it and send me a pull request for your particular
13
+ platform.
14
+
15
+ ## 0.0.4
16
+ - Adds `boom help`. You know, for help.
17
+
18
+ ## 0.0.3
19
+ - `boom edit` to edit your stuff in a friendly $EDITOR.
20
+ - Class-level accessors in List for ActiveRecordesque actions.
21
+
22
+ ## 0.0.2
23
+ - Fix for list selection (thanks [bgkittrell](https://github.com/bgkittrell)).
24
+
25
+ ## 0.0.1
26
+ - BOOM!
data/LICENSE.markdown ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) Zach Holman, http://zachholman.com
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1,127 @@
1
+ # B O O M
2
+
3
+ See? Look, a tiny explosion: \*
4
+
5
+ ## What's a boom?
6
+
7
+ boom lets you access text snippets over your command line. I'm personally
8
+ aiming for exactly two use cases, but I'm almost positive there are thirteen
9
+ more. Here's a couple examples:
10
+
11
+ - **Your own [del.icio.us](http://delicious.com)-esque URL tracker.** When I
12
+ make [clever animated
13
+ gifs](http://github.com/holman/dotfiles/blob/master/bin/gifme) of my
14
+ coworkers, I tend to lose the URL, which is a total bummer since I want to
15
+ repeatedly repost these images well past their funny expiration date. boom
16
+ lets me easily access the good stuff for years to come.
17
+ - **Commonly-used email replies.** Everyone's got those stock replies in their
18
+ pocket for a few common use cases. Rather than keep some files strewn about
19
+ with the responses, boom gives me them on my ever-present command line.
20
+ - **Simple todos.** You can super-quickly drop items into lists and remove them
21
+ when finished. I'm a big fan of simple, straightforward stuff. Plus, it's a
22
+ Dropbox away from simple cloud syncing. Someone get Cultured Code on the line
23
+ THIS MAY BE RELEVANT TO THEIR INTERESTS!
24
+
25
+ We store everything in one JSON file in your home directory: `~/.boom`. The
26
+ structure is simple, too. Each individual item is tossed on a `list`, and you
27
+ can have multiple lists.
28
+
29
+ ## Show me the boom
30
+
31
+ ** Overview **
32
+
33
+ $ boom
34
+ gifs (5)
35
+ email (4)
36
+
37
+ ** Create a list **
38
+
39
+ $ boom urls
40
+ Boom! Created a new list called "urls".
41
+
42
+ ** Add an item **
43
+
44
+ # boom <list> <name> <value>
45
+ $ boom urls github https://github.com
46
+ Boom! "github" in "urls" is "https://github.com". Got it.
47
+
48
+ ** Copy an item's value to your clipboard **
49
+
50
+ $ boom github
51
+ Boom! Just copied https://github.com to your clipboard.
52
+
53
+ $ boom urls github
54
+ Boom! Just copied https://github.com to your clipboard.
55
+
56
+ ** List items in a list **
57
+
58
+ $ boom urls
59
+ blog http://zachholman.com
60
+ github http://github.com
61
+
62
+ ** Delete a list **
63
+
64
+ $ boom urls delete
65
+ You sure you want to delete everything in "urls"? (y/n): y
66
+ Boom! Deleted all your urls.
67
+
68
+ ** Delete an item **
69
+
70
+ # boom urls github delete
71
+ Boom! "github" is gone forever.
72
+
73
+ ** List everything **
74
+
75
+ $ boom all
76
+ enemies
77
+ @kneath: he's got dreamy eyes. he must die.
78
+ @rtomayko: i must murder him for his mac and cheese recipe.
79
+ @luckiestmonkey: she hates recycling.
80
+ urls
81
+ blog: http://zachholman.com
82
+ github: https://github.com
83
+
84
+ ** Help **
85
+
86
+ $ boom help
87
+
88
+ ** Manual edit **
89
+
90
+ If you want to edit the underlying JSON directly, make sure your `$EDITOR`
91
+ environment variable is set, and run:
92
+
93
+ $ boom edit
94
+
95
+ ** It's just the command line, silly **
96
+
97
+ So don't forget all your other favorites are there to help you, too:
98
+
99
+ $ boom all | grep @luckiestmonkey
100
+ @luckiestmonkey: she hates recycling.
101
+
102
+ ## Install
103
+
104
+ gem install boom
105
+
106
+ ## Current Status
107
+
108
+ Precarious. I'm starting to use this a bunch now, but if you're tossing in
109
+ important business information (say, a carefully cultivated list of animated
110
+ .gifs), you'd be sitting pretty if you made a backup of `~/.boom` every now and
111
+ then, just in case. We're living on the edge, baby.
112
+
113
+ Also, don't mistype anything. Everything should be 100% perfect if you type all
114
+ the commands correctly. If you don't, it'll probably ungracefully error out and
115
+ a puppy in Kansas will probably be murdered. You should be fine, though. As
116
+ long as you don't have butter fingers.
117
+
118
+ Soon enough, though, this'll be stable to the point where I can truthfully tell
119
+ myself that this time baby, `boom` will be, bulletttttttttttttproof ♫.
120
+
121
+ ## I love you
122
+
123
+ [Zach Holman](http://zachholman.com) made this. Ping me on Twitter —
124
+ [@holman](http://twitter.com/holman) — if you're having issues, want me to
125
+ merge in your pull request, or are using boom in a cool way. I'm kind of hoping
126
+ this is generic enough that people do some fun things with it. First one to use
127
+ `boom` to calculate their tax liability wins.
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.0.4'
17
- s.date = '2010-12-20'
16
+ s.version = '0.0.5'
17
+ s.date = '2010-12-22'
18
18
  s.rubyforge_project = 'boom'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -65,18 +65,18 @@ Gem::Specification.new do |s|
65
65
  ## THE MANIFEST COMMENTS, they are used as delimiters by the task.
66
66
  # = MANIFEST =
67
67
  s.files = %w[
68
+ CHANGELOG.markdown
69
+ LICENSE.markdown
70
+ README.markdown
68
71
  Rakefile
69
72
  bin/boom
70
73
  boom.gemspec
71
- changelog.markdown
72
74
  lib/boom.rb
73
75
  lib/boom/clipboard.rb
74
76
  lib/boom/command.rb
75
77
  lib/boom/item.rb
76
78
  lib/boom/list.rb
77
79
  lib/boom/storage.rb
78
- license.markdown
79
- readme.markdown
80
80
  test/examples/urls.json
81
81
  test/helper.rb
82
82
  test/test_command.rb
@@ -10,9 +10,14 @@ module Boom
10
10
  #
11
11
  # Returns nothing.
12
12
  def copy(item)
13
- if RUBY_PLATFORM =~ /darwin/
14
- `echo '#{item.value}' | tr -d "\n" | pbcopy`
15
- end
13
+ copy_command =
14
+ if RUBY_PLATFORM =~ /darwin/
15
+ "pbcopy"
16
+ else
17
+ "xclip -selection clipboard"
18
+ end
19
+
20
+ `echo '#{item.value}' | tr -d "\n" | #{copy_command}`
16
21
 
17
22
  "Boom! We just copied #{item.value} to your clipboard."
18
23
  end
data/lib/boom/command.rb CHANGED
@@ -70,11 +70,12 @@ module Boom
70
70
  return all if command == 'all'
71
71
  return edit if command == 'edit'
72
72
  return help if command == 'help'
73
+ return help if command[0] == 45 # any - dash options are pleas for help
73
74
 
74
75
  # if we're operating on a List
75
76
  if storage.list_exists?(command)
76
- return list_delete(command) if major == 'delete'
77
- return list_detail(command) unless major
77
+ return delete_list(command) if major == 'delete'
78
+ return detail_list(command) unless major
78
79
  unless minor == 'delete'
79
80
  return add_item(command,major,minor) if minor
80
81
  return search_list_for_item(command, major)
@@ -84,10 +85,10 @@ module Boom
84
85
  return search_items(command) if storage.item_exists?(command)
85
86
 
86
87
  if minor == 'delete' and storage.item_exists?(major)
87
- return item_delete(major)
88
+ return delete_item(command, major)
88
89
  end
89
90
 
90
- return list_create(command)
91
+ return create_list(command)
91
92
  end
92
93
 
93
94
  # Public: prints all Items over a List.
@@ -95,7 +96,7 @@ module Boom
95
96
  # name - the List object to iterate over
96
97
  #
97
98
  # Returns nothing.
98
- def list_detail(name)
99
+ def detail_list(name)
99
100
  list = List.find(name)
100
101
  list.items.sort{ |x,y| x.name <=> y.name }.each do |item|
101
102
  output " #{item.name}: #{item.value}"
@@ -111,7 +112,7 @@ module Boom
111
112
  # Commands.list_create("snippets")
112
113
  #
113
114
  # Returns the newly created List.
114
- def list_create(name)
115
+ def create_list(name)
115
116
  lists = (storage.lists << List.new(name))
116
117
  storage.lists = lists
117
118
  output "Boom! Created a new list called \"#{name}\"."
@@ -127,7 +128,7 @@ module Boom
127
128
  # Commands.delete_list("snippets")
128
129
  #
129
130
  # Returns nothing.
130
- def list_delete(name)
131
+ def delete_list(name)
131
132
  output "You sure you want to delete everything in \"#{name}\"? (y/n):"
132
133
  if $stdin.gets.chomp == 'y'
133
134
  List.delete(name)
@@ -158,17 +159,17 @@ module Boom
158
159
 
159
160
  # Public: remove a named Item.
160
161
  #
161
- # name - the String name of the Item.
162
+ # list_name - the String name of the List.
163
+ # name - the String name of the Item.
162
164
  #
163
165
  # Example
164
166
  #
165
- # Commands.delete_item("an-item-name")
167
+ # Commands.delete_item("a-list-name", "an-item-name")
166
168
  #
167
169
  # Returns nothing.
168
- def item_delete(name)
169
- storage.lists = storage.lists.each do |list|
170
- list.items.reject! { |item| item.name == name }
171
- end
170
+ def delete_item(list_name,name)
171
+ list = List.find(list_name)
172
+ list.delete_item(name)
172
173
  output "Boom! \"#{name}\" is gone forever."
173
174
  save!
174
175
  end
data/lib/boom/list.rb CHANGED
@@ -61,6 +61,17 @@ module Boom
61
61
  previous != storage.lists.size
62
62
  end
63
63
 
64
+ # Public: deletes an Item by name.
65
+ #
66
+ # name - String name of the item to delete
67
+ #
68
+ # Returns whether an item was removed.
69
+ def delete_item(name)
70
+ previous = items.size
71
+ items.reject! { |item| item.name == name}
72
+ previous != items.size
73
+ end
74
+
64
75
  # Public: a Hash representation of this List.
65
76
  #
66
77
  # Returns a Hash of its own data and its child Items.
data/lib/boom.rb CHANGED
@@ -15,7 +15,7 @@ require 'boom/list'
15
15
  require 'boom/storage'
16
16
 
17
17
  module Boom
18
- VERSION = '0.0.4'
18
+ VERSION = '0.0.5'
19
19
 
20
20
  def self.storage
21
21
  @storage ||= Boom::Storage.new
data/test/test_command.rb CHANGED
@@ -86,7 +86,14 @@ class TestCommand < Test::Unit::TestCase
86
86
  assert_match 'Make your edits', command('edit')
87
87
  end
88
88
 
89
- def test_edit
89
+ def test_help
90
90
  assert_match 'boom help', command('help')
91
+ assert_match 'boom help', command('-h')
92
+ assert_match 'boom help', command('--help')
93
+ end
94
+
95
+ def test_noop_options
96
+ assert_match 'boom help', command('--anything')
97
+ assert_match 'boom help', command('-d')
91
98
  end
92
99
  end
data/test/test_list.rb CHANGED
@@ -40,4 +40,16 @@ class TestList < Test::Unit::TestCase
40
40
  assert_equal 1, Boom.storage.lists.size
41
41
  end
42
42
 
43
+ def test_deletes_scoped_to_list
44
+ @list.add_item(@item)
45
+
46
+ @list_2 = Boom::List.new('sexy-companies')
47
+ @item_2 = Boom::Item.new(@item.name, @item.value)
48
+ @list_2.add_item(@item_2)
49
+
50
+ @list.delete_item(@item.name)
51
+ assert_equal 0, @list.items.size
52
+ assert_equal 1, @list_2.items.size
53
+ end
54
+
43
55
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boom
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Zach Holman
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-20 00:00:00 -08:00
18
+ date: 2010-12-22 00:00:00 -06:00
19
19
  default_executable: boom
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -67,23 +67,25 @@ extra_rdoc_files:
67
67
  - readme.markdown
68
68
  - license.markdown
69
69
  files:
70
+ - CHANGELOG.markdown
71
+ - LICENSE.markdown
72
+ - README.markdown
70
73
  - Rakefile
71
74
  - bin/boom
72
75
  - boom.gemspec
73
- - changelog.markdown
74
76
  - lib/boom.rb
75
77
  - lib/boom/clipboard.rb
76
78
  - lib/boom/command.rb
77
79
  - lib/boom/item.rb
78
80
  - lib/boom/list.rb
79
81
  - lib/boom/storage.rb
80
- - license.markdown
81
- - readme.markdown
82
82
  - test/examples/urls.json
83
83
  - test/helper.rb
84
84
  - test/test_command.rb
85
85
  - test/test_item.rb
86
86
  - test/test_list.rb
87
+ - readme.markdown
88
+ - license.markdown
87
89
  has_rdoc: true
88
90
  homepage: https://github.com/holman/boom
89
91
  licenses: []
data/changelog.markdown DELETED
@@ -1,14 +0,0 @@
1
- # boom changes
2
-
3
- ## 0.0.4
4
- - Adds `boom help`. You know, for help.
5
-
6
- ## 0.0.3
7
- - `boom edit` to edit your stuff in a friendly $EDITOR.
8
- - Class-level accessors in List for ActiveRecordesque actions.
9
-
10
- ## 0.0.2
11
- - Fix for list selection (thanks [bgkittrell](https://github.com/bgkittrell)).
12
-
13
- ## 0.0.1
14
- - BOOM!