nakajima-key-val 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.
- data/bin/val +5 -0
- data/lib/completions.rb +7 -0
- data/lib/val.rb +100 -0
- metadata +55 -0
data/bin/val
ADDED
data/lib/completions.rb
ADDED
data/lib/val.rb
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Keep track of key/value pairs in a .key-val 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
|
+
begin
|
|
28
|
+
require 'crypt/blowfish'
|
|
29
|
+
rescue LoadError
|
|
30
|
+
puts "You must install the `crypt` gem."
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class KeyValerie
|
|
34
|
+
def run(args)
|
|
35
|
+
init unless File.exist?(tokens)
|
|
36
|
+
sym = case
|
|
37
|
+
when args.empty? then :list
|
|
38
|
+
when args.delete('--unset') then :unset
|
|
39
|
+
else args.length > 1 ? :set : :get
|
|
40
|
+
end ; send(sym, *args)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def get(key)
|
|
44
|
+
if token = store[key]
|
|
45
|
+
puts token
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def set(key, val)
|
|
50
|
+
store[key] = val and save(store)
|
|
51
|
+
puts "set `#{key}` to #{val}"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def unset(key)
|
|
55
|
+
store.delete(key) and save(store)
|
|
56
|
+
puts "unset `#{key}` token"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def list
|
|
60
|
+
puts "Key/Value Pairs:"
|
|
61
|
+
store.each do |key, val|
|
|
62
|
+
puts "- #{key}: #{val}"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def each
|
|
67
|
+
store.each { |key,val| yield(key,val) }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def keys
|
|
71
|
+
store.keys
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
|
|
76
|
+
def crypter
|
|
77
|
+
@crypter ||= Crypt::Blowfish.new('val-crypt-key')
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def init
|
|
81
|
+
File.open(tokens, 'w+') { |f| f << '' }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def save(new_store)
|
|
85
|
+
File.open(tokens, 'w+') do |file|
|
|
86
|
+
file << crypter.encrypt_string(store.to_yaml)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def store
|
|
91
|
+
@store ||= begin
|
|
92
|
+
text = File.read(tokens)
|
|
93
|
+
text.empty? ? {} : YAML.load(crypter.decrypt_string(text))
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def tokens
|
|
98
|
+
File.join(ENV['HOME'], '.key-val')
|
|
99
|
+
end
|
|
100
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: nakajima-key-val
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.5
|
|
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
|
+
- lib/completions.rb
|
|
28
|
+
has_rdoc: false
|
|
29
|
+
homepage:
|
|
30
|
+
post_install_message:
|
|
31
|
+
rdoc_options: []
|
|
32
|
+
|
|
33
|
+
require_paths:
|
|
34
|
+
- lib
|
|
35
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: "0"
|
|
40
|
+
version:
|
|
41
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
42
|
+
requirements:
|
|
43
|
+
- - ">="
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: "0"
|
|
46
|
+
version:
|
|
47
|
+
requirements: []
|
|
48
|
+
|
|
49
|
+
rubyforge_project:
|
|
50
|
+
rubygems_version: 1.2.0
|
|
51
|
+
signing_key:
|
|
52
|
+
specification_version: 2
|
|
53
|
+
summary: Easily get or set key/value pairs from ~/.key-valerie
|
|
54
|
+
test_files: []
|
|
55
|
+
|