#!/usr/bin/env ruby

$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))

require 'rubygems'
require 'shelr'

BASENAME = File.basename(__FILE__)
HELP     = <<-HELP

  Usage: #{BASENAME} command [arg]

  COMMANDS:

    Recording:

      record              - record new shellcast
      record --sound      - record new shellcast with sound

    Publishing:

      push last           - publish last record
      push last --private - publish private record
      push RECORD_ID      - publish record with given id

    Getting record as json:

      dump last           - dump last record as json to current dir
      dump RECORD_ID      - dump any record as json to current dir

    Replaying:

      list                - print list of records
      play last           - play last local record
      play RECORD_ID      - play local record
      play RECORD_URL     - play remote record
      play dump.json      - play local file dumped with `shelr dump`

    Setup:

      setup API_KEY [API_URL] - set your API key and API site
      backend [ttyrec|script] - setup recorder backend

    Visit: http://shelr.tv/ for more info.

HELP

case ARGV[0]
when '-h', '--help'
  puts HELP
when 'record'
  Shelr::Recorder.record!(:sound => ARGV[1] == '--sound')
when 'list'
  Shelr::Player.list
when 'play'
  if ARGV[1]
    if ARGV[1] =~ /^https?:.*/ # remote file
      Shelr::Player.play_remote(ARGV[1])
    elsif ARGV[1] =~ /.*\.json$/ # local file
      Shelr::Player.play_dump(ARGV[1])
    else
      Shelr::Player.play(:record_id => ARGV[1])
    end
  else
    puts "Missing id for shellcast"
    Shelr::Player.list
    puts "Select one..."
  end
when 'stop'
  puts '=> type "exit" or Ctrl+D'
  puts '=> Then `shelr push last`'
when 'dump'
  if ARGV[1]
    Shelr::Publisher.new.dump(ARGV[1])
  else
    puts "What do you want to dump?"
    Shelr::Player.list
    puts "Select one..."
  end
when 'push'
  if ARGV[1]
    Shelr::Publisher.new.publish(ARGV[1], ARGV[2] == '--private')
  else
    puts "What do you want to publish?"
    Shelr::Player.list
    puts "Select one..."
  end
when 'setup'
  if ARGV[2]
    Shelr.api_url = ARGV[2]
  end
  if ARGV[1]
    Shelr.api_key = ARGV[1]
  else
    puts "\n\tUsage: #{BASENAME} setup API_KEY\n\n"
  end
when 'backend'
  if ARGV[1]
    Shelr.backend = ARGV[1]
  else
    puts "\n\tUsage: #{BASENAME} backend [ttyrec|script]\n\n"
  end
when 'version'
  puts Shelr::VERSION
else
  puts HELP
end
