Skip to content

Commit

Permalink
feat: add explicit commands
Browse files Browse the repository at this point in the history
  • Loading branch information
mrexox committed Jun 1, 2023
1 parent 6e7d716 commit c3342b5
Showing 1 changed file with 136 additions and 42 deletions.
178 changes: 136 additions & 42 deletions src/coverage_reporter/cli/cmd.cr
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ module CoverageReporter::Cli

# CI options overrides
property service_name : String?
property service_number : String?
property service_job_id : String?
property service_build_url : String?
property service_job_url : String?
Expand All @@ -96,6 +97,7 @@ module CoverageReporter::Cli
def overrides : CI::Options
CI::Options.new(
service_name: service_name,
service_number: service_number,
service_job_id: service_job_id,
service_build_url: service_build_url,
service_job_url: service_job_url,
Expand All @@ -107,7 +109,123 @@ module CoverageReporter::Cli

private def parse_args(args, opts = Opts.new)
option_parser = OptionParser.new do |parser|
parser.banner = "Usage: coveralls [options]"
parser.banner = "Usage: coveralls [command] [options]"

parser.on("report", "Report coverage") do
parser.banner = "Usage: coveralls report [options]"

parser.on("--build-number=ID", "Build number") do |build_number|
opts.service_number = build_number
end

parser.on(
"-bPATH",
"--base-path=PATH",
"Path to the root folder of the project the coverage was collected in"
) do |path|
opts.base_path = path
end

parser.on("-fFILENAME", "--file=FILENAME", "Coverage artifact file to be reported, e.g. coverage/lcov.info (detected by default)") do |name|
opts.filename = name.presence
end

parser.on("-jFLAG", "--job-flag=FLAG", "Coverage job flag name, e.g. Unit Tests") do |flag|
opts.job_flag_name = flag.presence
end

parser.on("-p", "--parallel", "Set the parallel flag. Requires webhook for completion (coveralls --done)") do
opts.parallel = true
end

parser.on("--format=FORMAT", "Force coverage file format, supported formats: #{Parser::PARSERS.map(&.name).join(", ")}") do |format|
opts.format = format.presence
end

parser.on("--allow-empty", "Allow empty coverage results and exit 0") do
opts.allow_empty = true
end

parser.on("--compare-ref=REF", "Git branch name to compare the coverage with") do |ref|
opts.compare_ref = ref.presence
end

parser.on("--compare-sha=SHA", "Git commit SHA to compare the coverage with") do |sha|
opts.compare_sha = sha.presence
end

parser.on("--carryforward=FLAGS", "Comma-separated list of parallel job flags") do |flags|
opts.carryforward = flags
end

parser.on("--service-name=NAME", "Build service name override") do |service_name|
opts.service_name = service_name.presence
end

parser.on("--service-job-id=ID", "Build job override") do |service_job_id|
opts.service_job_id = service_job_id.presence
end

parser.on("--service-build-url=URL", "Build URL override") do |service_build_url|
opts.service_build_url = service_build_url.presence
end

parser.on("--service-job-url=URL", "Build job URL override") do |service_job_url|
opts.service_job_url = service_job_url.presence
end

parser.on("--service-branch=NAME", "Branch name override") do |service_branch|
opts.service_branch = service_branch.presence
end

parser.on("--service-pull-request=NUMBER", "PR number override") do |service_pull_request|
opts.service_pull_request = service_pull_request.presence
end
end

parser.on("done", "Close a parallel build") do
parser.banner = "Usage: coveralls done [options]"

opts.parallel_done = true

parser.on("--carryforward=FLAGS", "Comma-separated list of parallel job flags") do |flags|
opts.carryforward = flags
end

parser.on("--build-number=ID", "Build number") do |build_number|
opts.service_number = build_number
end
end

parser.on("version", "Print version") do
puts VERSION
exit 0
end

parser.on("--debug", "Debug mode: data being sent to Coveralls will be printed to console") do
opts.debug = true
Log.set(Log::Level::Debug)
end

parser.on("--dry-run", "Dry run (no request sent)") do
opts.dry_run = true
end

parser.on("-n", "--no-logo", "Do not show Coveralls logo in logs") do
opts.no_logo = true
end

parser.on("-q", "--quiet", "Suppress all output") do
Log.set(Log::Level::Error)
end

parser.on("-h", "--help", "Show this help") do
# TODO: add environment variable notes
puts "Coveralls Coverage Reporter v#{CoverageReporter::VERSION}"
puts parser
exit 0
end

parser.on(
"-rTOKEN",
"--repo-token=TOKEN",
Expand All @@ -129,99 +247,75 @@ module CoverageReporter::Cli
parser.on(
"-bPATH",
"--base-path=PATH",
"Path to the root folder of the project the coverage was collected in"
"DEPRECATED: Path to the root folder of the project the coverage was collected in"
) do |path|
opts.base_path = path
end

parser.on("-fFILENAME", "--file=FILENAME", "Coverage artifact file to be reported, e.g. coverage/lcov.info (detected by default)") do |name|
parser.on("-fFILENAME", "--file=FILENAME", "DEPRECATED: Coverage artifact file to be reported, e.g. coverage/lcov.info (detected by default)") do |name|
opts.filename = name.presence
end

parser.on("-jFLAG", "--job-flag=FLAG", "Coverage job flag name, e.g. Unit Tests") do |flag|
parser.on("-jFLAG", "--job-flag=FLAG", "DEPRECATED: Coverage job flag name, e.g. Unit Tests") do |flag|
opts.job_flag_name = flag.presence
end

parser.on("-p", "--parallel", "Set the parallel flag. Requires webhook for completion (coveralls --done)") do
parser.on("-p", "--parallel", "DEPRECATED: Set the parallel flag. Requires webhook for completion (coveralls --done)") do
opts.parallel = true
end

parser.on("-d", "--done", "Call webhook after all parallel jobs (-p) done") do
parser.on("-d", "--done", "DEPRECATED: Call webhook after all parallel jobs (-p) done") do
opts.parallel_done = true
end

parser.on("-n", "--no-logo", "Do not show Coveralls logo in logs") do
opts.no_logo = true
end

parser.on("-q", "--quiet", "Suppress all output") do
Log.set(Log::Level::Error)
end

parser.on("--format=FORMAT", "Force coverage file format, supported formats: #{Parser::PARSERS.map(&.name).join(", ")}") do |format|
parser.on("--format=FORMAT", "DEPRECATED: Force coverage file format, supported formats: #{Parser::PARSERS.map(&.name).join(", ")}") do |format|
opts.format = format.presence
end

parser.on("--allow-empty", "Allow empty coverage results and exit 0") do
parser.on("--allow-empty", "DEPRECATED: Allow empty coverage results and exit 0") do
opts.allow_empty = true
end

parser.on("--compare-ref=REF", "Git branch name to compare the coverage with") do |ref|
parser.on("--compare-ref=REF", "DEPRECATED: Git branch name to compare the coverage with") do |ref|
opts.compare_ref = ref.presence
end

parser.on("--compare-sha=SHA", "Git commit SHA to compare the coverage with") do |sha|
parser.on("--compare-sha=SHA", "DEPRECATED: Git commit SHA to compare the coverage with") do |sha|
opts.compare_sha = sha.presence
end

parser.on("--carryforward=FLAGS", "Comma-separated list of parallel job flags") do |flags|
parser.on("--carryforward=FLAGS", "DEPRECATED: Comma-separated list of parallel job flags") do |flags|
opts.carryforward = flags
end

parser.on("--service-name=NAME", "Build service name override") do |service_name|
parser.on("--service-name=NAME", "DEPRECATED: Build service name override") do |service_name|
opts.service_name = service_name.presence
end

parser.on("--service-job-id=ID", "Build job override") do |service_job_id|
parser.on("--service-job-id=ID", "DEPRECATED: Build job override") do |service_job_id|
opts.service_job_id = service_job_id.presence
end

parser.on("--service-build-url=URL", "Build URL override") do |service_build_url|
parser.on("--service-build-url=URL", "DEPRECATED: Build URL override") do |service_build_url|
opts.service_build_url = service_build_url.presence
end

parser.on("--service-job-url=URL", "Build job URL override") do |service_job_url|
parser.on("--service-job-url=URL", "DEPRECATED: Build job URL override") do |service_job_url|
opts.service_job_url = service_job_url.presence
end

parser.on("--service-branch=NAME", "Branch name override") do |service_branch|
parser.on("--service-branch=NAME", "DEPRECATED: Branch name override") do |service_branch|
opts.service_branch = service_branch.presence
end

parser.on("--service-pull-request=NUMBER", "PR number override") do |service_pull_request|
parser.on("--service-pull-request=NUMBER", "DEPRECATED: PR number override") do |service_pull_request|
opts.service_pull_request = service_pull_request.presence
end

parser.on("--debug", "Debug mode: data being sent to Coveralls will be printed to console") do
opts.debug = true
Log.set(Log::Level::Debug)
end

parser.on("--dry-run", "Dry run (no request sent)") do
opts.dry_run = true
end

parser.on("-v", "--version", "Show version") do
parser.on("-v", "--version", "DEPRECATED: Show version") do
puts VERSION
exit 0
end

parser.on("-h", "--help", "Show this help") do
# TODO: add environment variable notes
puts "Coveralls Coverage Reporter v#{CoverageReporter::VERSION}"
puts parser
exit 0
end
end

option_parser.parse(args)
Expand Down

0 comments on commit c3342b5

Please sign in to comment.