#!/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}/lib/Server.rb"

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

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

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/server/*.yml"]
I18n.default_locale = :en
I18n.locale = lang.to_sym

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

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

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

	opts.on("-t", "--checkconfig", I18n.t('option.checkconfig')) do |b|
		options[:checkconfig] = b
	end

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

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

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

if options[:config].nil? || options[:config].empty?
	puts "#{I18n.t('option.usage')}: mpw-server -c CONFIG [options]"
	exit 2
end

server = Server.new

if options[:checkconfig]
	server.checkconfig(options[:config])
elsif options[:setup]
	server.setup(options[:config])
else
	if server.checkconfig(options[:config])
		server.start
	end
end

server = nil
exit 0