class Adder

Public Class Methods

add(options) click to toggle source
# File lib/adder.rb, line 36
def self::add(options) 
  @log.debug('options are ' << options.to_s)
  if options.file
    @@events_file = options.file
    @@events_backup = File.dirname(@@events_file) << File::Separator << 'bak_' << File.basename(@@events_file)
  else
    @log.error('To add events, you must name a file on the command-line. Aborting')
    exit false
  end
  if(!options.event || !options.year)
    @log.error("To add events, you must provide them on the command-line.\n\tPSE start the program with option -h or --help to see an option-overview.")
    exit false
  end

  @@log.level = $LOG_LEVEL if $LOG_LEVEL 
  fields = [:event, :year, :background]
  @log.debug('options are ' << options.to_s)
  if options[:event] && options[:year]
    if !options[:background]
      @log.warn('Optional background information is missing')
      bg = ''
    else
      bg = options.background
    end

    ev_def = "$events << [\"" << options.event << "\", " << options.year << ", \"" << bg << "\"]" 
    @log.debug('writing events-backup to ' << @@events_backup)
    File.open(@@events_backup, 'w+') {|bak| bak.write( File.read(@@events_file))}
    @log.debug('adding new event to the list: ' << ev_def)
    File.open(@@events_file, 'a') {|evf| evf.puts(ev_def)}
    @log.info('A new event has been added to ' << @@events_file << '.')
  else
    opts = options.to_h.keys
    @log.error('Option missing: ' << fields.each {|f| opts.delete(f) }.join(', '))
    exit false
  end
end