From 1e46bb24d3f17956d34ab7fc48489d61a538e2a9 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 29 Jan 2011 18:30:00 -0200 Subject: Adding command line parser --- lib/parser.rb | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/parser.rb diff --git a/lib/parser.rb b/lib/parser.rb new file mode 100644 index 0000000..13895c3 --- /dev/null +++ b/lib/parser.rb @@ -0,0 +1,53 @@ +#!/usr/bin/env ruby +# +# Keyringer secret management system. +# +# Copyright (C) 2011 Keyringer Development Team. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +require 'optparse' + +options = {} +optparse = OptionParser.new do |opts| + # Set a banner, displayed at the top of the help screen. + opts.banner = "Usage: #{File.basename($0)} [options] file1 file2 ..." + + # TODO: example option + options[:verbose] = false + opts.on( '-v', '--verbose', 'Output more information' ) do + options[:verbose] = true + end + + # TODO: example option + options[:logfile] = nil + opts.on( '-l', '--logfile FILE', 'Write log to FILE' ) do |file| + options[:logfile] = file + end + + # This displays the help screen + opts.on( '-h', '--help', 'Display this help message' ) do + puts opts + exit + end +end + +# Parse using 'parse!' to remove all options found at ARGV +optparse.parse! + +# Parse positional arguments +$args = ARGV +$keyring = $args.shift +$action = $args.shift -- cgit v1.2.3 From 79c066f5b871445f467231b09e45bcb2ef7e8127 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 29 Jan 2011 18:30:26 -0200 Subject: Decrypt using parsed arguments --- lib/keyringer/decrypt.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/keyringer/decrypt.rb b/lib/keyringer/decrypt.rb index 9f872aa..a36d6d9 100644 --- a/lib/keyringer/decrypt.rb +++ b/lib/keyringer/decrypt.rb @@ -1,7 +1,7 @@ module Keyringer class Decrypt def execute - filename = ARGV[2] + filename = $args[0] crypt = Keyring::Crypt.new output = crypt.decrypt(filename) return output -- cgit v1.2.3 From 8c2b1a7c00e15366cd4950aaddc1957422e818e8 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 29 Jan 2011 18:30:48 -0200 Subject: Requiring parser at keyringer script; adding copyright message --- bin/keyringer | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/bin/keyringer b/bin/keyringer index 74dfcb1..ab99d9d 100755 --- a/bin/keyringer +++ b/bin/keyringer @@ -1,18 +1,31 @@ #!/usr/bin/env ruby - +# +# Keyringer secret management system. +# +# Copyright (C) 2011 Keyringer Development Team. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# # TODO # - a lot of things -def usage - puts "Usage: -#{File.basename($0)} TODO! " - exit 1 -end - $:.unshift File.dirname(__FILE__) + '/../lib' require 'keyringer' +require 'parser' + begin - action = Keyringer.const_get(ARGV[1].capitalize) + action = Keyringer.const_get($action.capitalize) if action.is_a?(Class) instance = action.new -- cgit v1.2.3 From 27478872a1f88971208813e09795a532c73a7ae2 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 29 Jan 2011 18:31:54 -0200 Subject: Minor copyright rollback --- bin/keyringer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/keyringer b/bin/keyringer index ab99d9d..5b3a51c 100755 --- a/bin/keyringer +++ b/bin/keyringer @@ -1,6 +1,6 @@ #!/usr/bin/env ruby # -# Keyringer secret management system. +# Keyringer key management system. # # Copyright (C) 2011 Keyringer Development Team. # -- cgit v1.2.3 From 2c26d9e2130bb5751205963cb8ff8ca459226f0f Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 29 Jan 2011 18:50:09 -0200 Subject: Moving parser to keyringer module; actions should be in a submodule --- bin/keyringer | 4 +-- lib/keyringer.rb | 5 ++-- lib/keyringer/actions/decrypt.rb | 12 ++++++++ lib/keyringer/decrypt.rb | 10 ------- lib/keyringer/parser.rb | 59 ++++++++++++++++++++++++++++++++++++++++ lib/parser.rb | 53 ------------------------------------ 6 files changed, 76 insertions(+), 67 deletions(-) create mode 100644 lib/keyringer/actions/decrypt.rb delete mode 100644 lib/keyringer/decrypt.rb create mode 100644 lib/keyringer/parser.rb delete mode 100644 lib/parser.rb diff --git a/bin/keyringer b/bin/keyringer index 5b3a51c..c643369 100755 --- a/bin/keyringer +++ b/bin/keyringer @@ -22,10 +22,10 @@ $:.unshift File.dirname(__FILE__) + '/../lib' require 'keyringer' -require 'parser' begin - action = Keyringer.const_get($action.capitalize) + Keyringer::Parser.new + action = Keyringer::Actions.const_get($action.capitalize) if action.is_a?(Class) instance = action.new diff --git a/lib/keyringer.rb b/lib/keyringer.rb index 9d455d1..5b925fe 100644 --- a/lib/keyringer.rb +++ b/lib/keyringer.rb @@ -1,9 +1,10 @@ # internal requires $:.unshift File.dirname(__FILE__) require 'keyring' -require 'keyringer/decrypt' require 'keyringer/bash_wrapper' +require 'keyringer/parser' +require 'keyringer/actions/decrypt' -module Keyring +module Keyringer VERSION = '2.0-alpha' end diff --git a/lib/keyringer/actions/decrypt.rb b/lib/keyringer/actions/decrypt.rb new file mode 100644 index 0000000..8fdd175 --- /dev/null +++ b/lib/keyringer/actions/decrypt.rb @@ -0,0 +1,12 @@ +module Keyringer + module Actions + class Decrypt + def execute + filename = $args[0] + crypt = Keyring::Crypt.new + output = crypt.decrypt(filename) + return output + end + end + end +end diff --git a/lib/keyringer/decrypt.rb b/lib/keyringer/decrypt.rb deleted file mode 100644 index a36d6d9..0000000 --- a/lib/keyringer/decrypt.rb +++ /dev/null @@ -1,10 +0,0 @@ -module Keyringer - class Decrypt - def execute - filename = $args[0] - crypt = Keyring::Crypt.new - output = crypt.decrypt(filename) - return output - end - end -end diff --git a/lib/keyringer/parser.rb b/lib/keyringer/parser.rb new file mode 100644 index 0000000..a3e71cf --- /dev/null +++ b/lib/keyringer/parser.rb @@ -0,0 +1,59 @@ +#!/usr/bin/env ruby +# +# Keyringer secret management system. +# +# Copyright (C) 2011 Keyringer Development Team. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +module Keyringer + class Parser + def initialize + require 'optparse' + + options = {} + optparse = OptionParser.new do |opts| + # Set a banner, displayed at the top of the help screen. + opts.banner = "Usage: #{File.basename($0)} [options] file1 file2 ..." + + # TODO: example option + options[:verbose] = false + opts.on( '-v', '--verbose', 'Output more information' ) do + options[:verbose] = true + end + + # TODO: example option + options[:logfile] = nil + opts.on( '-l', '--logfile FILE', 'Write log to FILE' ) do |file| + options[:logfile] = file + end + + # This displays the help screen + opts.on( '-h', '--help', 'Display this help message' ) do + puts opts + exit + end + end + + # Parse using 'parse!' to remove all options found at ARGV + optparse.parse! + + # Parse positional arguments + $args = ARGV + $keyring = $args.shift + $action = $args.shift + end + end +end diff --git a/lib/parser.rb b/lib/parser.rb deleted file mode 100644 index 13895c3..0000000 --- a/lib/parser.rb +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env ruby -# -# Keyringer secret management system. -# -# Copyright (C) 2011 Keyringer Development Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -require 'optparse' - -options = {} -optparse = OptionParser.new do |opts| - # Set a banner, displayed at the top of the help screen. - opts.banner = "Usage: #{File.basename($0)} [options] file1 file2 ..." - - # TODO: example option - options[:verbose] = false - opts.on( '-v', '--verbose', 'Output more information' ) do - options[:verbose] = true - end - - # TODO: example option - options[:logfile] = nil - opts.on( '-l', '--logfile FILE', 'Write log to FILE' ) do |file| - options[:logfile] = file - end - - # This displays the help screen - opts.on( '-h', '--help', 'Display this help message' ) do - puts opts - exit - end -end - -# Parse using 'parse!' to remove all options found at ARGV -optparse.parse! - -# Parse positional arguments -$args = ARGV -$keyring = $args.shift -$action = $args.shift -- cgit v1.2.3 From 4987cf64fcfd6c417c06a3f939182b1052fe57c9 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 29 Jan 2011 18:56:06 -0200 Subject: Using parsed arguments at BashWrapper --- lib/keyringer/bash_wrapper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/keyringer/bash_wrapper.rb b/lib/keyringer/bash_wrapper.rb index ba4b4d0..b93a080 100644 --- a/lib/keyringer/bash_wrapper.rb +++ b/lib/keyringer/bash_wrapper.rb @@ -1,7 +1,7 @@ module Keyringer class BashWrapper def execute - exec("keyringer " + ARGV.join(' ')) + exec("keyringer #{$keyring} #{$action} " + $args.join(' ')) end end end -- cgit v1.2.3