diff --git a/bin/mpw-list b/bin/mpw-list new file mode 100644 index 0000000..9bde1ff --- /dev/null +++ b/bin/mpw-list @@ -0,0 +1,63 @@ +#!/usr/bin/ruby +# MPW is a software to crypt and manage your passwords +# Copyright (C) 2016 Adrien Waksberg +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require 'optparse' +require 'mpw/config' +require 'mpw/cli' + +# --------------------------------------------------------- # +# Options +# --------------------------------------------------------- # + +options = {} + +OptionParser.new do |opts| + opts.banner = "#{I18n.t('option.usage')}: mpw list [options]" + + opts.on('-c', '--config CONFIG', I18n.t('option.config')) do |config| + options[:config] = config + end + + opts.on('-g', '--group GROUP', I18n.t('option.config')) do |group| + options[:group] = group + end + + opts.on('-h', '--help', I18n.t('option.help')) do + puts opts + exit 0 + end + + opts.on('-p', '--pattern PATTERN', I18n.t('option.config')) do |pattern| + options[:pattern] = pattern + end + + opts.on('-w', '--wallet WALLET', I18n.t('option.wallet')) do |wallet| + options[:wallet] = wallet + end +end.parse! + +config = MPW::Config.new(options[:config]) +cli = MPW::Cli.new(config, nil, options[:sync], nil) + +opts = { search: options[:pattern], + group: options[:group], + } + +cli.get_wallet(options[:wallet]) +cli.decrypt +cli.list(opts) diff --git a/lib/mpw/cli.rb b/lib/mpw/cli.rb index c3a953f..f2bf72a 100644 --- a/lib/mpw/cli.rb +++ b/lib/mpw/cli.rb @@ -142,6 +142,38 @@ class Cli exit 2 end + # Display the query's result + # @args: options -> the option to search + def list(options={}) + result = @mpw.list(options) + + if result.length == 0 + puts I18n.t('display.nothing') + + else + group = '.' + + result.sort! { |a,b| a.group.to_s.downcase <=> b.group.to_s.downcase } + + result.each do |item| + if group != item.group + group = item.group + + if group.to_s.empty? + puts I18n.t('display.no_group').yellow + else + puts "\n#{group}".yellow + end + end + + print " |_ ".yellow + print "#{item.user}@#{item.host}" + print " -> #{item.comment}".magenta if not item.comment.to_s.empty? + print "\n" + end + end + end + # Display the query's result # @args: search -> the string to search # protocol -> search from a particular protocol