#!/usr/bin/ruby
# author: nishiki
# mail: nishiki@yaegashi.fr
# info: a simple script who manage your passwords

require 'rubygems'
require 'optparse'
require 'pathname'
require 'locale'
require 'i18n'

APP_ROOT = File.dirname(Pathname.new(__FILE__).realpath)
require "#{APP_ROOT}/MPW/UI/CliSSH"
require "#{APP_ROOT}/MPW/Config"

lang = Locale::Tag.parse(ENV['LANG']).to_simple.to_s[0..1]

# --------------------------------------------------------- #
# Set local
# --------------------------------------------------------- #

if defined? I18n.enforce_available_locales
	I18n.enforce_available_locales = true
end

I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
I18n.load_path = Dir["#{APP_ROOT}/i18n/cli/*.yml"]
I18n.default_locale = :en
I18n.locale = lang.to_sym

# --------------------------------------------------------- #
# Options
# --------------------------------------------------------- #

options = {}
OptionParser.new do |opts|
	opts.banner = "#{I18n.t('ssh.option.usage')}: mpw-ssh SEARCH [options]"

	opts.on("-l", "--login LOGIN", I18n.t('ssh.option.login')) do |login|
		options[:login] = login
	end

	opts.on("-s", "--server SERVER", I18n.t('ssh.option.server')) do |server|
		options[:server] = server
	end

	opts.on("-p", "--port PORT", I18n.t('ssh.option.port')) do |port|
		options[:port] = port	
	end

	opts.on('-c', '--config CONFIG', I18n.t('cli.option.config')) do |config|
		options[:config] = config
	end

	opts.on("-h", "--help", I18n.t('ssh.option.help')) do
		puts opts
		exit 0
	end
end.parse!

# --------------------------------------------------------- #
# Main
# --------------------------------------------------------- #

config      = MPW::Config.new(options[:config])
check_error = config.checkconfig

cli         = CliSSH.new(lang, config)
cli.login   = options[:login]
cli.server  = options[:server]
cli.port    = options[:port]

search     = ARGV[0]

# Setup a new config 
if !check_error 
	cli.setup(lang)

elsif ARGV.length < 1
	puts "#{I18n.t('ssh.option.usage')}: mpw-ssh SEARCH [options]"
	exit 2
else
	cli.decrypt
	cli.sync
	cli.ssh(search)
end

cli = nil

exit 0