summaryrefslogtreecommitdiff
path: root/lib/trocla.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/trocla.rb')
-rw-r--r--lib/trocla.rb38
1 files changed, 21 insertions, 17 deletions
diff --git a/lib/trocla.rb b/lib/trocla.rb
index 74825aa..8d916b2 100644
--- a/lib/trocla.rb
+++ b/lib/trocla.rb
@@ -3,11 +3,11 @@ require 'trocla/util'
require 'trocla/formats'
class Trocla
-
+
def initialize(config_file=nil)
if config_file
@config_file = File.expand_path(config_file)
- elsif File.exists?(def_config_file=File.expand_path('~/.troclarc.yaml')) || File.exists?(def_config_file=File.expand_path('/etc/troclarc.yaml'))
+ elsif File.exists?(def_config_file=File.expand_path('~/.troclarc.yaml')) || File.exists?(def_config_file=File.expand_path('/etc/troclarc.yaml'))
@config_file = def_config_file
end
end
@@ -20,27 +20,27 @@ class Trocla
return password
end
- plain_pwd = get_password(key,'plain')
+ plain_pwd = get_password(key,'plain')
if options['random'] && plain_pwd.nil?
- plain_pwd = Trocla::Util.random_str(options['length'].to_i,options['shellsafe'])
- set_password(key,'plain',plain_pwd) unless format == 'plain'
+ plain_pwd = Trocla::Util.random_str(options['length'].to_i,options['charset'])
+ set_password(key,'plain',plain_pwd) unless format == 'plain'
elsif !options['random'] && plain_pwd.nil?
raise "Password must be present as plaintext if you don't want a random password"
end
- set_password(key,format,Trocla::Formats[format].format(plain_pwd,options))
+ set_password(key,format,self.formats(format).format(plain_pwd,options))
end
-
+
def get_password(key,format)
cache.fetch(key,{})[format]
end
-
+
def reset_password(key,format,options={})
set_password(key,format,nil)
password(key,format,options)
end
-
+
def delete_password(key,format=nil)
- if format.nil?
+ if format.nil?
cache.delete(key)
else
old_val = (h = cache.fetch(key,{})).delete(format)
@@ -48,7 +48,7 @@ class Trocla
old_val
end
end
-
+
def set_password(key,format,password)
if (format == 'plain')
h = (cache[key] = { 'plain' => password })
@@ -57,22 +57,26 @@ class Trocla
end
h[format]
end
-
+
+ def formats(format)
+ (@format_cache||={})[format] ||= Trocla::Formats[format].new(self)
+ end
+
private
def cache
@cache ||= build_cache
end
-
+
def build_cache
require 'moneta'
lconfig = config
Moneta.new(lconfig['adapter'], lconfig['adapter_options']||{})
end
-
+
def config
@config ||= read_config
end
-
+
def read_config
if @config_file.nil?
default_config
@@ -81,10 +85,10 @@ class Trocla
default_config.merge(YAML.load(File.read(@config_file)))
end
end
-
+
def default_config
require 'yaml'
YAML.load(File.read(File.expand_path(File.join(File.dirname(__FILE__),'trocla','default_config.yaml'))))
end
-
+
end