class Trellor::Cli

Public Class Methods

parse() click to toggle source
# File lib/cli.rb, line 6
def self.parse
  logger.info "$ trellor #{ARGV.join(' ')}"

  @opts = Trollop::options do
    banner "Usage: trellor [boardname [listname [cardname [description]]]]"
    version "trellor #{VERSION}"
    opt :archive, 'Archive a card', short: '-a'
    opt :cache, 'Cache (or re-cache)', short: '-c'
    opt :verbose, 'Run verbosely', short: '-v'
    opt :webapi, 'Run webapi', short: '-w'
    opt :slowtrellor, 'Make own connection rather than using webapi', short: '-s'
  end

  set_verbosity

  if webapi?
    require_relative 'web_trellor'
    web = WebTrellor.new
    # web.be_verbose = true if verbose?
    web.ensure_webapp_is_running(false)
    exit 0
  end

  if cache?
    hash = save_all
    p hash
  end

  query_trellor(*ARGV)
end

Private Class Methods

all() click to toggle source
# File lib/cli.rb, line 83
def self.all
  verbose_log('downloading all boards and lists')
  hash = {}
  trellor.boards.each do |board|
    verbose_log('downloading board', board.name)
    lists = {}
    board.lists.each{ |l| lists[l.name] = l.id }
    hash[board.name] = { id: board.id, lists: lists }
  end
  hash
end
archive?() click to toggle source
# File lib/cli.rb, line 141
def self.archive?
  @opts[:archive]
end
cache?() click to toggle source
# File lib/cli.rb, line 145
def self.cache?
  @opts[:cache]
end
filepath() click to toggle source
# File lib/cli.rb, line 65
def self.filepath
  homepath + '.config/.trellor'
end
get_all() click to toggle source
# File lib/cli.rb, line 79
def self.get_all
  JSON.parse(filepath.read)
end
homepath() click to toggle source
# File lib/cli.rb, line 62
def self.homepath
  Pathname.new(ENV['HOME'])
end
logger() click to toggle source
# File lib/cli.rb, line 121
def self.logger
  unless @logger
    @logger = Trellor.logger
    @logger.progname = '[cli]'
  end
  @logger
end
query_trellor(board_name=nil, list_name=nil, card_name=nil, descript=nil) click to toggle source
# File lib/cli.rb, line 95
def self.query_trellor(board_name=nil, list_name=nil, card_name=nil, descript=nil)
  verbose_log "board_name", board_name
  verbose_log "list_name", list_name
  verbose_log "card_name", card_name
  if board_name.nil?
    puts "Boards:", '-'*50
    trellor.board_names.each{ |name| puts name }
  elsif list_name.nil?
    puts "Lists for Board: #{board_name}", '-'*50
    trellor.list_names(board_name).each{ |name| puts name }
  elsif card_name.nil?
    puts "Cards for List: #{board_name}.#{list_name}", '-'*50
    trellor.card_names(board_name, list_name).each{ |name| puts name }
  elsif archive?
    trellor.archive_card(board_name, list_name, card_name)
    trellor.card_names(board_name, list_name).each{ |name| puts name }
  else
    trellor.create_card(board_name, list_name, card_name, descript)
    trellor.card_names(board_name, list_name).each{ |name| puts name }
  end
end
save_all() click to toggle source
# File lib/cli.rb, line 69
def self.save_all
  path = homepath + '.config'
  path.mkdir unless path.directory?
  hash = all
  filepath.open('w') do |out|
    out.puts JSON.pretty_generate(hash)
  end
  hash
end
set_verbosity() click to toggle source
# File lib/cli.rb, line 129
def self.set_verbosity
  if verbose?
    @logger.level = Logger::DEBUG
  else
    @logger.level = Logger::INFO
  end
end
trellor() click to toggle source
# File lib/cli.rb, line 39
def self.trellor
  unless @trellor
    verbose_log('creating Trellor instance')
    @trellor = if @opts[:slowtrellor]
      verbose_log('using local (slower) trellor')
      Trellor.new
    else
      verbose_log('using webapi')
      require_relative 'web_trellor'
      web = WebTrellor.new
      # web.be_verbose = true if verbose?
      web.ensure_webapp_is_running
      web
    end
    # @trellor.be_verbose = true if verbose?
  end
  @trellor
end
verbose?() click to toggle source
# File lib/cli.rb, line 58
def self.verbose?
  @opts[:verbose]
end
verbose_log(*args) click to toggle source
# File lib/cli.rb, line 117
def self.verbose_log(*args)
  logger.debug("           ****** #{args.inspect}")
end
webapi?() click to toggle source
# File lib/cli.rb, line 137
def self.webapi?
  @opts[:webapi]
end