From 89049c1338c6ecd9951753bf00a24ab479723149 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 27 Feb 2011 15:38:05 -0300 Subject: Init: creating/cloning repository and other changes --- lib/backend/git.rb | 8 ++++++++ lib/backend/recipients_store.rb | 12 ++++++++++-- lib/keyring.rb | 2 ++ lib/keyring/user_config.rb | 19 ++++++++++++++++--- lib/keyringer.rb | 1 + lib/keyringer/actions/decrypt.rb | 2 +- lib/keyringer/actions/init.rb | 8 +++----- 7 files changed, 41 insertions(+), 11 deletions(-) diff --git a/lib/backend/git.rb b/lib/backend/git.rb index 177657b..4ce016d 100644 --- a/lib/backend/git.rb +++ b/lib/backend/git.rb @@ -28,5 +28,13 @@ module Backend false end end + + def init(path) + @git = ::Git.init(path) + end + + def clone(url, path) + @git = ::Git.clone(url, path) + end end end diff --git a/lib/backend/recipients_store.rb b/lib/backend/recipients_store.rb index 16b063b..2dab533 100644 --- a/lib/backend/recipients_store.rb +++ b/lib/backend/recipients_store.rb @@ -48,10 +48,18 @@ module Backend write() end + def getPath() + File.join(@baseDir, "config", "recipients") + end + + def hasPath?() + File.directory?(getPath()) + end + private def read() - fileName = File.join(@baseDir, "config", "recipients") + fileName = getPath() file = File.new(fileName, "r") begin recipients = [] @@ -72,7 +80,7 @@ module Backend end def write() - fileName = File.join(@baseDir, "config", "recipients") + fileName = getPath() file = File.new(fileName, "w") begin @recipients.each do |recipient| diff --git a/lib/keyring.rb b/lib/keyring.rb index ca54109..8f81bba 100644 --- a/lib/keyring.rb +++ b/lib/keyring.rb @@ -22,6 +22,8 @@ $:.unshift File.dirname(__FILE__) require 'backend' require 'keyring/fs' +require 'keyring/keys' +require 'keyring/repository' require 'keyring/crypt' require 'keyring/recipients' require 'keyring/user_config' diff --git a/lib/keyring/user_config.rb b/lib/keyring/user_config.rb index 21a8c33..c6d48e6 100644 --- a/lib/keyring/user_config.rb +++ b/lib/keyring/user_config.rb @@ -22,17 +22,24 @@ module Keyring class UserConfig include Singleton - def initialize - self.load + def initialize(path = nil) + self.loadMainConfig self.check end - def load + def loadMainConfig @user_config = ENV['HOME'] + '/.keyringer/config' @keyrings = Backend::parse_config(@user_config) @path = @keyrings.get_value($keyring) end + # TODO + def saveMainConfig + # TODO: copy each keyring definition to a hash + # update path of the current keyring + file = open(@user_config, 'w') + end + def keyrings @keyrings end @@ -41,7 +48,13 @@ module Keyring @path end + def setPath(path) + @path = path + saveMainConfig + end + def check + raise "Not a directory: #{@path}" if !File::directory?(@path) raise "No keydir configured for #{$keyring} keyring." if @path.nil? end end diff --git a/lib/keyringer.rb b/lib/keyringer.rb index b8d4595..94ae4b8 100644 --- a/lib/keyringer.rb +++ b/lib/keyringer.rb @@ -20,6 +20,7 @@ # general requires require 'singleton' +require 'pathname' # internal requires $:.unshift File.dirname(__FILE__) diff --git a/lib/keyringer/actions/decrypt.rb b/lib/keyringer/actions/decrypt.rb index bac4785..316db34 100644 --- a/lib/keyringer/actions/decrypt.rb +++ b/lib/keyringer/actions/decrypt.rb @@ -22,7 +22,7 @@ module Keyringer module Actions class Decrypt def execute - raise "Missing key argument" if $args[0].nil? + raise "Missing argument: key" if $args[0].nil? crypt = Keyring::Crypt.new crypt.decryptKey($args[0]) end diff --git a/lib/keyringer/actions/init.rb b/lib/keyringer/actions/init.rb index d48abbf..00a609a 100644 --- a/lib/keyringer/actions/init.rb +++ b/lib/keyringer/actions/init.rb @@ -21,12 +21,10 @@ module Keyringer module Actions class Init - def initialize - path = Keyring::UserConfig.instance.path - Backend::Git.new - end - def execute + raise "Missing argument: path" if $args[0].nil? + repository = Keyring::Repository.new + repository.create($args[0], $args[1]) end end end -- cgit v1.2.3