#!/usr/bin/env ruby

root = File.expand_path('../../../../', __FILE__)           # Rails Root
script_root = File.expand_path('../../', __FILE__)          # This scripts Root
common_root = File.expand_path('../../../common', __FILE__) # Shared Common Root

require 'optparse'

require File.join(script_root, %w[lib cui_users_list])
require File.join(common_root, %w[lib colorize])
require File.join(common_root, %w[lib message_types])
require File.join(common_root, %w[lib environments_list])


current_script = File.basename(__FILE__)          # This script
pid = Process.pid
server_name = Socket.gethostname

msg = "#{current_script} #{pid} started"
Rails.logger.info("#{msg}")                       # Log the fact that we started
puts std_msg msg

# Setup some sensible default values for the app
options = { environment: ENV['RAILS_ENV'],
            target_folder: File.join(root, %w[reports cui_users_lists]),
            report_base_name: "cui_users_list_report_#{server_name}",
            current_script: current_script,
            pid: pid,
            deploy_type: ENV['DEPLOY_TYPE']
          }

# Parse the params and adjust as necessary
OptionParser.new do |opts|
  msg = "Usage: [RAILS_ENV=environment] rails r #{File.basename($0)} " \
        "[options]\n       or rails r #{File.basename($0)} [options]."
  opts.banner = "#{msg}"

  opts.on('-t', '--target target_folder', 'Target folder name') do |target|
    options[:target_folder] = target;
  end

  opts.on('-n', '--name report_base_file_name', 'Report base name') do |name|
    options[:report_base_name] = name;
  end

  opts.on('-?', '-h', '--help', 'Displays Help') do
    puts std_msg opts
    puts std_msg "\n Help requested exiting with return code 1"
		exit 1
	end
end.parse!

Rails.logger.debug("#{current_script} #{pid} options: #{options.inspect}")
  # begin the reporting process
if Report.new(options).run
  # success
  msg = "#{current_script} #{pid} Terminating status with exit code 0"
  Rails.logger.info(msg)
  puts std_msg msg
  exit 0 # exit let's the system koow the status (Zero is considered success)
else
  # something unexpected happened
  msg = "#{current_script} #{pid} Terminating status with exit code 99"
  Rails.logger.error(msg)
  puts error_msg msg
  exit 99
end
