#!/usr/bin/env ruby # frozen_string_literal: true require "bundler/setup" require "optparse" require_relative "../lib/gitlab_quality/test_tooling" params = {} options = OptionParser.new do |opts| opts.banner = "Usage: #{$PROGRAM_NAME} [options]" opts.on('-i', '--input-files INPUT_FILES', String, 'RSpec report files (JSON or JUnit XML)') do |input_files| params[:input_files] = input_files end opts.on('--test-case-project TEST_CASE_PROJECT', String, 'Can be an integer or a group/project string') do |test_case_project| params[:test_case_project] = test_case_project end opts.on('-t', '--test-case-project-token TEST_CASE_PROJECT_TOKEN', String, 'A valid access token with `api` scope and Reporter permission in TEST_CASE_PROJECT') do |test_case_project_token| params[:test_case_project_token] = test_case_project_token end opts.on('--results-issue-project RESULTS_ISSUE_PROJECT', String, 'Can be an integer or a group/project string') do |results_issue_project| params[:results_issue_project] = results_issue_project end opts.on('-r', '--results-issue-project-token RESULTS_ISSUE_PROJECT_TOKEN', String, 'A valid access token with `api` scope and Reporter permission in RESULTS_ISSUE_PROJECT') do |results_issue_project_token| params[:results_issue_project_token] = results_issue_project_token end opts.on('--dry-run', "Perform a dry-run (don't create/update issues or test cases)") do params[:dry_run] = true end opts.on_tail('-v', '--version', 'Show the version') do require_relative "../lib/gitlab_quality/test_tooling/version" puts "#{$PROGRAM_NAME} : #{GitlabQuality::TestTooling::VERSION}" exit end opts.on_tail('-h', '--help', 'Show the usage') do puts "Purpose: Report test results from RSpec report files (JSON or JUnit XML) in GitLab test cases and result issues" puts opts exit end opts.parse(ARGV) end if params.any? GitlabQuality::TestTooling::Report::ReportResults.new(**params).invoke! else puts options exit 1 end