class Gitrob::CLI

Constants

DB_MIGRATIONS_PATH
HELP_COMMANDS

Attributes

configuration[R]

Public Class Methods

configuration() click to toggle source
# File lib/gitrob/cli.rb, line 210
def self.configuration
  @config
end
configuration=(config) click to toggle source
# File lib/gitrob/cli.rb, line 206
def self.configuration=(config)
  @config = config
end
debug(message) click to toggle source
# File lib/gitrob/cli.rb, line 186
def self.debug(message)
  output "[#]".light_cyan + " #{message}\n" if debugging_enabled?
end
debugging_enabled?() click to toggle source
# File lib/gitrob/cli.rb, line 202
def self.debugging_enabled? # rubocop:disable Style/TrivialAccessors
  @debugging_enabled
end
disable_debugging() click to toggle source
# File lib/gitrob/cli.rb, line 198
def self.disable_debugging
  @debugging_enabled = false
end
enable_debugging() click to toggle source
# File lib/gitrob/cli.rb, line 194
def self.enable_debugging
  @debugging_enabled = true
end
error(message) click to toggle source
# File lib/gitrob/cli.rb, line 177
def self.error(message)
  output "[!]".light_red + " #{message}\n"
end
fatal(message) click to toggle source
# File lib/gitrob/cli.rb, line 181
def self.fatal(message)
  output "[!]".light_white.on_red + " #{message}\n"
  exit(1)
end
info(message) click to toggle source
# File lib/gitrob/cli.rb, line 150
def self.info(message)
  output "[*]".light_blue + " #{message}\n"
end
new(*args) click to toggle source
Calls superclass method
# File lib/gitrob/cli.rb, line 45
def initialize(*args)
  super
  Hashie.logger = Logger.new(nil) # Disable warnings from Hashie
  self.class.enable_debugging if options[:debug]
  String.disable_colorization(!options[:color])
  return if help_command?
  banner
  configure unless configured?
  load_configuration
  prepare_database
end
output(string) click to toggle source
# File lib/gitrob/cli.rb, line 190
def self.output(string)
  print string
end
output_failed_task(exception, fatal_error) click to toggle source
# File lib/gitrob/cli.rb, line 163
def self.output_failed_task(exception, fatal_error)
  message = "#{exception.class}: #{exception.message}"
  debug exception.backtrace.join("\n")
  if fatal_error
    fatal message
  else
    error message
  end
end
task(message, fatal_error=false) { |block| ... } click to toggle source
# File lib/gitrob/cli.rb, line 154
def self.task(message, fatal_error=false, &block)
  output "[*]".light_blue + " #{message}"
  yield block
  output " done\n".light_green
rescue => e
  output " failed\n".light_red
  output_failed_task(e, fatal_error)
end
warn(message) click to toggle source
# File lib/gitrob/cli.rb, line 173
def self.warn(message)
  output "[!]".light_yellow + " #{message}\n"
end

Public Instance Methods

accept_tos() click to toggle source
# File lib/gitrob/cli.rb, line 105
def accept_tos
  Gitrob::CLI::Commands::AcceptTermsOfUse.start(options)
end
analyze(targets) click to toggle source
# File lib/gitrob/cli.rb, line 83
def analyze(targets)
  accept_tos
  Gitrob::CLI::Commands::Analyze.start(targets, options)
end
banner() click to toggle source
configure() click to toggle source
# File lib/gitrob/cli.rb, line 95
def configure
  Gitrob::CLI::Commands::Configure.start(options)
end
configured?() click to toggle source
# File lib/gitrob/cli.rb, line 115
def configured?
  Gitrob::CLI::Commands::Configure.configured?
end
help_command?() click to toggle source
# File lib/gitrob/cli.rb, line 110
def help_command?
  !ENV["GITROB_ENV"] == "TEST" &&
    (ARGV.empty? || HELP_COMMANDS.include?(ARGV.first.downcase))
end
load_configuration() click to toggle source
# File lib/gitrob/cli.rb, line 119
def load_configuration
  self.class.task("Loading configuration...", true) do
    @configuration = Gitrob::CLI::Commands::Configure.load_configuration!
    self.class.configuration = @configuration
  end
end
load_models() click to toggle source
# File lib/gitrob/cli.rb, line 139
def load_models
  require "gitrob/models/assessment"
  require "gitrob/models/github_access_token"
  require "gitrob/models/owner"
  require "gitrob/models/repository"
  require "gitrob/models/blob"
  require "gitrob/models/flag"
  require "gitrob/models/comparison"
end
prepare_database() click to toggle source
# File lib/gitrob/cli.rb, line 126
def prepare_database
  self.class.task("Preparing database...", true) do
    Sequel.extension :migration, :core_extensions
    db = Sequel.connect(configuration["sql_connection_uri"])
    Sequel::Migrator.run(db, DB_MIGRATIONS_PATH)
    Sequel::Model.raise_on_save_failure = true
    Sequel::Model.db = db
    Sequel::Model.plugin :validation_helpers
    Sequel::Model.plugin :timestamps
    load_models
  end
end
server() click to toggle source
# File lib/gitrob/cli.rb, line 89
def server
  accept_tos
  Gitrob::CLI::Commands::Server.start(options)
end