#!/usr/bin/ruby.ruby3.4

rmt_path = File.expand_path('..', __dir__)

# Load initial configuration for rmt
require_relative "../config/boot"

# Add rmt_path to library load path
$LOAD_PATH.unshift File.join(rmt_path, 'lib')

require 'optparse'
require 'ostruct'
require 'zeitwerk'
require 'active_support'
require 'active_record'
require 'erb'
require 'yaml'
require 'rmt/config'
require 'csv'
require 'json'
require_relative '../config/initializers_cli/disable_deprecation_warnings'
require_relative '../config/initializers_cli/rmt_fast_gettext'
require_relative '../config/initializers_cli/rmt_fast_gettext_cli_locale'
require_relative 'zeitwerk_loader_helper'

no_systems = false
data_dir = nil

load_relative_paths(%w[app/models app/services app/validators]) do |loader|
  loader.ignore("#{__dir__}/compose-init.rb")
  loader.inflector.inflect("app" => "") # preserve rails loader
  loader.inflector.inflect("rmt" => "RMT")
  loader.inflector.inflect("scc" => "SCC")
  loader.inflector.inflect("cli" => "CLI")
  loader.inflector.inflect("gpg" => "GPG")
  loader.inflector.inflect("smt_importer" => "SMTImporter")
  loader.push_dir(File.join(rmt_path, 'lib/rmt'), namespace: RMT)
  loader.collapse(File.join(rmt_path, 'lib'))
end

# Initialize the database
db_config = RMT::Config.db_config
ActiveRecord::Base.establish_connection(db_config)

begin
  Time.zone ||= 'UTC'
  script = RMT::CLI::SMTImporter.new(data_dir, no_systems)
  script.run ARGV
rescue RMT::CLI::SMTImporter::ImportException
  exit 1
end
