nakajima-key-valerie 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/bin/val +5 -0
  2. data/lib/val.rb +80 -0
  3. metadata +54 -0
data/bin/val ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.join(File.dirname(__FILE__), *%w[.. lib val])
4
+
5
+ KeyValerie.new(ARGV.dup)
data/lib/val.rb ADDED
@@ -0,0 +1,80 @@
1
+ # Keep track of key/value pairs in a .key-valerie file.
2
+ #
3
+ # USAGE
4
+ #
5
+ # Setting a token:
6
+ #
7
+ # $ val foo bar
8
+ #
9
+ # Getting a token:
10
+ #
11
+ # $ val foo
12
+ #
13
+ # will return "bar"
14
+ #
15
+ # Unsetting a token:
16
+ #
17
+ # $ val foo --unset
18
+ #
19
+ # will delete the "bar"
20
+ #
21
+ # Listing all tokens:
22
+ #
23
+ # $ val
24
+ #
25
+ # TODO Real options
26
+ require 'yaml'
27
+
28
+ class KeyValerie
29
+ def initialize(args)
30
+ init unless File.exist?(tokens)
31
+ sym = case
32
+ when args.empty? then :list
33
+ when args.delete('--unset') then :unset
34
+ else args.length > 1 ? :set : :get
35
+ end ; send(sym, *args)
36
+ end
37
+
38
+ def get(key)
39
+ if token = store[key]
40
+ puts token
41
+ end
42
+ end
43
+
44
+ def set(key, val)
45
+ store[key] = val and save(store)
46
+ puts "set `#{key}` to #{val}"
47
+ end
48
+
49
+ def unset(key)
50
+ store.delete(key) and save(store)
51
+ puts "unset `#{key}` token"
52
+ end
53
+
54
+ def list
55
+ puts "Key/Value Pairs:"
56
+ store.each do |key, val|
57
+ puts "- #{key}: #{val}"
58
+ end
59
+ end
60
+
61
+ private
62
+
63
+ def init
64
+ File.open(tokens, 'w+') { |f| f << '' }
65
+ end
66
+
67
+ def save(new_store)
68
+ File.open(tokens, 'w+') do |file|
69
+ YAML.dump(store, file)
70
+ end
71
+ end
72
+
73
+ def store
74
+ @store ||= YAML.load_file(tokens) || {}
75
+ end
76
+
77
+ def tokens
78
+ File.join(ENV['HOME'], '.key-valerie')
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nakajima-key-valerie
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Pat Nakajima
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-09 00:00:00 -07:00
13
+ default_executable: val
14
+ dependencies: []
15
+
16
+ description:
17
+ email: patnakajima@gmail.com
18
+ executables:
19
+ - val
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - bin/val
26
+ - lib/val.rb
27
+ has_rdoc: false
28
+ homepage:
29
+ post_install_message:
30
+ rdoc_options: []
31
+
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: "0"
39
+ version:
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
45
+ version:
46
+ requirements: []
47
+
48
+ rubyforge_project:
49
+ rubygems_version: 1.2.0
50
+ signing_key:
51
+ specification_version: 2
52
+ summary: Easily get or set key/value pairs from ~/.key-valerie
53
+ test_files: []
54
+