require 'erb' require 'ostruct' require 'optparse' require 'optparse/time' require 'pry' require 'pp' require_relative 'lib/zandronum_doom_vars.rb' # Main module for the builder module Main class Options def self.parse_arguments(args) options = OpenStruct.new options.verbose = false options.instance_name = 'doom-server' options.iwad_file = 'doom.wad' options.ini_file = './doom-server.ini' opt_parser = OptionParser.new do |opts| opts.banner = "#{__FILE__} [options]" opts.on('-v', '--[no-]verbose', 'Run verbosely') do |v| options[:verbose] = v end opts.on('-n', '--name [NAME]', 'Logical name of the server instance (NOT the \'hostname\' var!)') do |instance_name| options[:instance_name] = instance_name end opts.on('-i', '--ini-file [FILE]', '.ini file to populate settings from') do |ini| options[:ini_file] = ini end opts.on_tail('-h', '--help', 'Show this message') do puts opts exit end end opt_parser.parse!(args) options end end # Adds'help' option if ARGV is empty # because it's the polite thing to do ARGV.empty? && ARGV.push('-h') settings = Options.parse_arguments(ARGV) doom_vars = DoomVars::ZandronumDoomVars.new(settings.instance_name) # TODO: process .ini file settings and kick off templating process begin erb :'summon.bash' erb :'adminlist.txt' erb :'banlist.txt' erb :'default.cfg' erb :'whitelist.txt' rescue StandardError => se puts "There was a problem creating the configuration files:\n#{se.message}" end end