class Tracco::CLI

Public Class Methods

source_root() click to toggle source
# File lib/tracco/cli.rb, line 9
def self.source_root
  File.join(File.dirname(__FILE__), "..", "..", "config")
end

Public Instance Methods

collect(starting_date_as_string=Date.today.to_s) click to toggle source
# File lib/tracco/cli.rb, line 40
def collect(starting_date_as_string=Date.today.to_s)
  set_logger_level(options[:verbose])
  invoke :ensure_env

  starting_date = date_from(starting_date_as_string)
  environment = environment_from(options)
  Tracco::Database.load_env(environment, options[:mongoid_config_path])

  puts "Collecting tracking data starting from #{starting_date} in the #{environment} env."
  tracker = Tracco::TrelloTracker.new
  tracker.track(starting_date)
end
console() click to toggle source
# File lib/tracco/cli.rb, line 26
def console
  environment = environment_from(options)
  run "export TRACCO_ENV=#{environment}; irb -rubygems -I lib -r tracco -r startup_trello.rb -r awesome_print"
end
ensure_env(*args) click to toggle source
# File lib/tracco/cli.rb, line 98
def ensure_env(*args)
  %w{developer_public_key access_token_key}.each do |each_name|
    unless ENV[each_name] || authorization_params_from_config_file[each_name]
      error("Missing <#{each_name}> configuration parameter: set it as environment variable or in the config/config.yml file.")
    end
  end
  unless tracker_username
    error("Missing <tracker_username> configuration parameter: set it as environment variable or in the config/config.yml file.")
  end
end
export_google_docs(spreadsheet="tracco", worksheet="tracking") click to toggle source
# File lib/tracco/cli.rb, line 78
def export_google_docs(spreadsheet="tracco", worksheet="tracking")
  set_logger_level(options[:verbose])
  invoke :ensure_env

  environment = environment_from(options)
  Tracco::Database.load_env(environment, options[:mongoid_config_path])

  exporter = Tracco::Exporters::GoogleDocs.new(spreadsheet, worksheet)
  spreadsheet_url = exporter.export
  say "[DONE]".color(:green)
  say "Go to #{spreadsheet_url}"
end
init() click to toggle source
# File lib/tracco/cli.rb, line 54
def init
  template_files.each do |template_file|
    target_file = File.basename(template_file).sub('.template', '')
    target_path = File.join('config', target_file)
    if File.exists?(target_path)
      say "skipping #{target_file.color(:yellow)}, already exists."
    else
      run "mkdir -p config"
      run "cp -f #{template_file} #{target_path}"
      say "please edit the #{target_file} to have all the proper configurations"
    end
  end
end
version() click to toggle source
# File lib/tracco/cli.rb, line 93
def version
  say "Tracco version #{Tracco::VERSION}"
end

Private Instance Methods

date_from(starting_date_as_string) click to toggle source
# File lib/tracco/cli.rb, line 122
def date_from(starting_date_as_string)
  if starting_date_as_string == "today"
    Date.today
  else
    parse_date(starting_date_as_string) || error("Invalid date: #{starting_date_as_string}")
  end
end
environment_from(options) click to toggle source
# File lib/tracco/cli.rb, line 115
def environment_from(options)
  environment = options[:environment]
  error_invalid_environment(environment) unless is_valid_env?(environment)

  return environment
end
error(message) click to toggle source
# File lib/tracco/cli.rb, line 138
def error(message)
  say "[ERROR] ".color(:red) << message
  exit 1
end
error_invalid_environment(environment) click to toggle source
# File lib/tracco/cli.rb, line 143
def error_invalid_environment(environment)
  error("Invalid environment specified: #{environment}")
end
is_valid_env?(environment) click to toggle source
# File lib/tracco/cli.rb, line 134
def is_valid_env?(environment)
  %w{production development test}.include? environment
end
parse_date(date_as_string) click to toggle source
# File lib/tracco/cli.rb, line 130
def parse_date(date_as_string)
  Date.parse(date_as_string) rescue nil
end
set_logger_level(verbose) click to toggle source
# File lib/tracco/cli.rb, line 111
def set_logger_level(verbose)
  Trello.logger.level = verbose ? Logger::DEBUG : Logger::INFO
end
template_files() click to toggle source
# File lib/tracco/cli.rb, line 147
def template_files
  local_templates = Dir.glob("config/*.template.yml")
  if local_templates.empty?
    templates_from_gem
  else
    local_templates
  end
end
templates_from_gem() click to toggle source
# File lib/tracco/cli.rb, line 156
def templates_from_gem
  Dir.glob("#{tracco_gem.full_gem_path}/config/*.template.yml")
end
tracco_gem() click to toggle source
# File lib/tracco/cli.rb, line 160
def tracco_gem
  if Gem::Specification.respond_to?(:find_by_name)
    Gem::Specification.find_by_name('tracco')
  else
    Gem.searcher.find('tracco')
  end
end