github :: LoaderConfig :: defaultinit
# Loader configuration file
class LoaderConfig
super IniConfig
redef var default_config_file = "loader.ini"
# Default database host string for MongoDb
var default_db_host = "mongodb://mongo:27017/"
# Default database hostname
var default_db_name = "github_loader"
# MongoDb host name
var opt_db_host = new OptionString("MongoDb host", "--db-host")
# MongoDb database name
var opt_db_name = new OptionString("MongoDb database name", "--db-name")
# --verbose
var opt_verbose = new OptionCount("Verbosity level", "-v", "--verbose")
# --no-colors
var opt_no_colors = new OptionBool("Do not use colors in output", "--no-colors")
# --tokens
var opt_tokens = new OptionArray("Token list", "--tokens")
# --show-wallet
var opt_show_wallet = new OptionBool("Show wallet status", "--show-wallet")
# --show-jobs
var opt_show_jobs = new OptionBool("Show jobs status", "--show-jobs")
# --no-branches
var opt_no_branches = new OptionBool("Do not load branches", "--no-branches")
# --no-commits
var opt_no_commits = new OptionBool("Do not load commits from default branch", "--no-commits")
# --no-issues
var opt_no_issues = new OptionBool("Do not load issues", "--no-issues")
# --no-comments
var opt_no_comments = new OptionBool("Do not load issue comments", "--no-comments")
# --no-events
var opt_no_events = new OptionBool("Do not load issues events", "--no-events")
# --from
var opt_start = new OptionInt("Start loading issues from a number", 0, "--from")
# --clear
var opt_clear = new OptionBool("Clear job for given repo name", "--clear")
init do
super
tool_description = "Usage: loader <repo_name>\nLoad a GitHub repo into a MongoDb."
add_option(opt_db_host, opt_db_name)
add_option(opt_tokens, opt_show_wallet)
add_option(opt_verbose, opt_no_colors)
add_option(opt_show_jobs, opt_no_commits, opt_no_issues, opt_no_comments, opt_no_events)
add_option(opt_start, opt_clear)
end
# MongoDB server used for data persistence
fun db_host: String do
return opt_db_host.value or else ini["db.host"] or else default_db_host
end
# MongoDB DB used for data persistence
fun db_name: String do
return opt_db_name.value or else ini["db.name"] or else default_db_name
end
# Mongo db client
var client = new MongoClient(db_host) is lazy
# Mongo db instance
var db: MongoDb = client.database(db_name) is lazy
# Github tokens used to access data.
var tokens: Array[String] is lazy do
var opt_tokens = self.opt_tokens.value
if opt_tokens.not_empty then return opt_tokens
var res = new Array[String]
var ini_tokens = ini.section("tokens")
if ini_tokens == null then return res
for token in ini_tokens.values do
if token == null then continue
res.add token
end
return res
end
# Github tokens wallet
var wallet: GithubWallet is lazy do
return new GithubWallet(tokens)
end
# Use colors in console display
fun no_colors: Bool do
if opt_no_colors.value then return true
return ini["loader.no_colors"] == "true"
end
# Verbosity level (the higher the more verbose)
fun verbose_level: Int do
var opt = opt_start.value
if opt > 0 then
return info_level
end
var v = ini["loader.verbose"]
if v != null and v.to_i > 0 then
return info_level
end
return warn_level
end
# Logger used to print things
var logger: PopLogger is lazy do
var logger = new PopLogger
logger.level = verbose_level
return logger
end
# Should we avoid loading branches?
fun no_branches: Bool do
if opt_no_branches.value then return true
return ini["loader.no_branches"] == "true"
end
# Should we avoid loading commits?
fun no_commits: Bool do
if opt_no_commits.value then return true
return ini["loader.no_commits"] == "true"
end
# Should we avoid loading issues?
fun no_issues: Bool do
if opt_no_issues.value then return true
return ini["loader.no_issues"] == "true"
end
# Should we avoid loading issue comments?
fun no_comments: Bool do
if opt_no_comments.value then return true
return ini["loader.no_comments"] == "true"
end
# Should we avoid loading events?
fun no_events: Bool do
if opt_no_events.value then return true
return ini["loader.no_events"] == "true"
end
# At which issue number should we start?
fun start_from_issue: Int do
var opt = opt_start.value
if opt > 0 then return opt
var v = ini["loader.start"]
if v != null then return v.to_i
return 1
end
end
lib/github/loader.nit:25,1--190,3