whats 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/README.md +38 -0
- data/Rakefile +11 -0
- data/bin/whats +6 -0
- data/lib/whats/option.rb +46 -0
- data/lib/whats/runner.rb +31 -0
- data/lib/whats.rb +27 -0
- data/test/option_test.rb +38 -0
- data/test/whats_test.rb +15 -0
- metadata +71 -0
data/README.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
whats
|
2
|
+
=====
|
3
|
+
whats is a persistent hash to use as a memo in your terminal.
|
4
|
+
|
5
|
+
* * *
|
6
|
+
Installation
|
7
|
+
------------
|
8
|
+
|
9
|
+
gem install whats
|
10
|
+
|
11
|
+
* * *
|
12
|
+
Usage
|
13
|
+
-----
|
14
|
+
Add an entry
|
15
|
+
|
16
|
+
whats -a myIP -m "192.168.0.1"
|
17
|
+
|
18
|
+
Or
|
19
|
+
|
20
|
+
whats -add myIP
|
21
|
+
|
22
|
+
Retrieve an entry
|
23
|
+
|
24
|
+
whats myIP
|
25
|
+
# 192.168.0.1
|
26
|
+
|
27
|
+
List all entries
|
28
|
+
|
29
|
+
whats -l
|
30
|
+
|
31
|
+
Delete an entry
|
32
|
+
|
33
|
+
whats -d myIP
|
34
|
+
|
35
|
+
Execute (for shell script entries)
|
36
|
+
|
37
|
+
whats -a files -m "ls -l"
|
38
|
+
whats -e files
|
data/Rakefile
ADDED
data/bin/whats
ADDED
data/lib/whats/option.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Whats
|
4
|
+
class Option
|
5
|
+
attr_accessor :choice, :key, :message
|
6
|
+
|
7
|
+
def initialize args
|
8
|
+
@args = args
|
9
|
+
end
|
10
|
+
|
11
|
+
def parse
|
12
|
+
if @args[0][0] == "-"
|
13
|
+
OptionParser.new do |opts|
|
14
|
+
opts.banner = "Usage: whats [options]"
|
15
|
+
|
16
|
+
opts.on("-a", "--add VAL", "Adds an entry") do |val|
|
17
|
+
@choice = :add
|
18
|
+
@key = val
|
19
|
+
end
|
20
|
+
|
21
|
+
opts.on("-m", "--message M", String, "Memo's message") do |val|
|
22
|
+
@message = val
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on("-d", "--delete K", String, "Delete a key") do |val|
|
26
|
+
@choice = :delete
|
27
|
+
@key = val
|
28
|
+
end
|
29
|
+
|
30
|
+
opts.on("-l", "--list", "List all memo keys") do
|
31
|
+
@choice = :list
|
32
|
+
end
|
33
|
+
|
34
|
+
opts.on("-e", "--execute K", String, "Executes the given key") do |val|
|
35
|
+
@choice = :execute
|
36
|
+
@key = val
|
37
|
+
end
|
38
|
+
|
39
|
+
end.parse! @args
|
40
|
+
else
|
41
|
+
@choice = :lookup
|
42
|
+
@key = @args[0]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/whats/runner.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Whats
|
2
|
+
class Runner
|
3
|
+
def initialize args
|
4
|
+
@options = Option.new args
|
5
|
+
@memo = Whats.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def run
|
9
|
+
@options.parse
|
10
|
+
case @options.choice
|
11
|
+
when :add
|
12
|
+
unless @options.message
|
13
|
+
File.open(TMP_FILE, 'w').close
|
14
|
+
system "vim #{TMP_FILE}"
|
15
|
+
@options.message = File.read TMP_FILE
|
16
|
+
end
|
17
|
+
@memo[@options.key] = @options.message
|
18
|
+
@memo.save
|
19
|
+
when :delete
|
20
|
+
@memo.delete @options.key
|
21
|
+
@memo.save
|
22
|
+
when :list
|
23
|
+
@memo.each {|k, v| puts k}
|
24
|
+
when :execute
|
25
|
+
exec "#{@memo[@options.key]}"
|
26
|
+
when :lookup
|
27
|
+
puts @memo[@options.key]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/whats.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'whats/option'
|
3
|
+
require 'whats/runner'
|
4
|
+
|
5
|
+
module Whats
|
6
|
+
FOLDER = Dir.home+'/.whats'
|
7
|
+
FILE_PATH = FOLDER+'/whats'
|
8
|
+
TMP_FILE = FOLDER+'/tmp'
|
9
|
+
|
10
|
+
class Whats < Hash
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
if File.exists? FILE_PATH
|
14
|
+
entries = YAML::load(File.read FILE_PATH)
|
15
|
+
self.replace entries unless entries.nil?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def save
|
20
|
+
Dir.mkdir FOLDER unless Dir.exists? FOLDER
|
21
|
+
f = File.open(FILE_PATH, 'w')
|
22
|
+
f << YAML::dump(self)
|
23
|
+
f.close
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
data/test/option_test.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'shoulda'
|
3
|
+
require 'whats'
|
4
|
+
|
5
|
+
class OptionTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
context "Option" do
|
8
|
+
|
9
|
+
should "handle: -a Key -m Message" do
|
10
|
+
opt = Whats::Option.new %w(-a Key -m Message)
|
11
|
+
opt.parse
|
12
|
+
assert_equal :add, opt.choice
|
13
|
+
assert_equal "Key", opt.key
|
14
|
+
assert_equal "Message", opt.message
|
15
|
+
end
|
16
|
+
|
17
|
+
should "handle: -d Key" do
|
18
|
+
opt = Whats::Option.new %w(-d Key)
|
19
|
+
opt.parse
|
20
|
+
assert_equal :delete, opt.choice
|
21
|
+
assert_equal "Key", opt.key
|
22
|
+
end
|
23
|
+
|
24
|
+
should "handle: -l" do
|
25
|
+
opt = Whats::Option.new %w(-l)
|
26
|
+
opt.parse
|
27
|
+
assert_equal :list, opt.choice
|
28
|
+
end
|
29
|
+
|
30
|
+
should "handle: -e Key" do
|
31
|
+
opt = Whats::Option.new %w(-e Key)
|
32
|
+
opt.parse
|
33
|
+
assert_equal :execute, opt.choice
|
34
|
+
assert_equal "Key", opt.key
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
data/test/whats_test.rb
ADDED
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: whats
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
version: "0.1"
|
9
|
+
platform: ruby
|
10
|
+
authors:
|
11
|
+
- Michael Sokol
|
12
|
+
autorequire:
|
13
|
+
bindir: bin
|
14
|
+
cert_chain: []
|
15
|
+
|
16
|
+
date: 2011-02-22 00:00:00 -05:00
|
17
|
+
default_executable:
|
18
|
+
dependencies: []
|
19
|
+
|
20
|
+
description:
|
21
|
+
email: mikaa123@gmail.com
|
22
|
+
executables:
|
23
|
+
- whats
|
24
|
+
extensions: []
|
25
|
+
|
26
|
+
extra_rdoc_files: []
|
27
|
+
|
28
|
+
files:
|
29
|
+
- Rakefile
|
30
|
+
- README.md
|
31
|
+
- lib/whats.rb
|
32
|
+
- lib/whats/option.rb
|
33
|
+
- lib/whats/runner.rb
|
34
|
+
- bin/whats
|
35
|
+
- test/whats_test.rb
|
36
|
+
- test/option_test.rb
|
37
|
+
has_rdoc: true
|
38
|
+
homepage: http://github.com/mikaa123/whats
|
39
|
+
licenses: []
|
40
|
+
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 0
|
53
|
+
version: "0"
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
requirements: []
|
63
|
+
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.3.7
|
66
|
+
signing_key:
|
67
|
+
specification_version: 3
|
68
|
+
summary: A persistant hash to use as a memo in your terminal
|
69
|
+
test_files:
|
70
|
+
- test/whats_test.rb
|
71
|
+
- test/option_test.rb
|