class SameBoat::Tasks

Public Instance Methods

install_tasks() click to toggle source
# File lib/same_boat/tasks.rb, line 7
def install_tasks
  namespace 'same_boat' do
    desc 'Detect file group diff'
    task row: :parse_options do
      same_boat = SameBoat.build(crew_paths: @options[:crews], journal_path: @options[:journal])
      result = same_boat.row
      p result
      exit(result)
    end

    desc 'Write file groupt stamp'
    task journal: :parse_options do
      same_boat = SameBoat.build(crew_paths: @options[:crews], journal_path: @options[:journal])
      same_boat.journal
      exit
    end

    task :parse_options do
      grouped_argv = ARGV.slice_before(/^-/).map{|a| a.first.start_with?('-') ? [a[0], a[1..-1].join(',')] : a}.flatten

      @options = {}
      OptionParser.new do |opts|
        opts.banner = 'Usage: rake same_boat:{row|journal} [options]'
        opts.on('-c', '--crews FILE_REGEXP', Array) { |v| @options[:crews] = v }
        opts.on('-j', '--journal JOURNAL_FILE_NAME') { |v| @options[:journal] = v }
      end.parse!(grouped_argv)
      @options[:journal] ||= SameBoat::DEFAULT_JOURNAL
      @options[:crews] ||= Dir[SameBoat::DEFAULT_CREWS]
    end
  end
end