Sha256: 211a5f775fbc93057d454fcc451a4a6ff7c11b6aca7fc7b22fba025172c6c21b

Contents?: true

Size: 1.96 KB

Versions: 2

Compression:

Stored size: 1.96 KB

Contents

# frozen_string_literal: true

require "thor"

require_relative "base"

module Neetob
  class CLI
    module Github
      module MakePr
        class ComplianceFix < Base
          attr_accessor :repos, :sandbox, :should_fix_nanos

          def initialize(repos, should_fix_nanos = false, sandbox = false)
            super()
            @repos = repos
            @sandbox = sandbox
            @should_fix_nanos = should_fix_nanos
            @failed_repos = []
          end

          def run
            matching_repos = should_fix_nanos ?
              add_org_suffix(find_all_matching_gems) :
              find_all_matching_apps_or_repos(repos, :github, sandbox)
            @failed_repos = matching_repos.clone
            delete_and_create_temp_neetob_dir
            matching_repos.each do |repo|
              ui.info("\nWorking on #{repo}\n")
              begin
                shallow_clone_repo_in_tmp_dir(repo)
                check_and_delete_remote_branch(repo)
                bundle_install(repo)
                fix_neeto_audit(repo)
                ui.info(add_commmit_and_push_changes(repo))
                delete_local_feature_branch(repo)
                pull_request = client.create_pull_request(repo, "main", BRANCH_NAME, PR_TITLE)
                ui.success("PR created in \"#{repo}\" project successfully.")
                @failed_repos.delete(repo)
              rescue StandardError => e
                ExceptionHandler.new(e).process
              end
            end
            print_failed_repos if @failed_repos.length > 0
            `rm -rf /tmp/neetob`
          end

          private

            def fix_neeto_audit(repo)
              `#{cd_to_repo_in_tmp_dir(repo)} && bundle exec neeto-audit -a`
            end

            def print_failed_repos
              ui.info("\nCompliance fix failed for repos:-")
              @failed_repos.each do |repo|
                ui.error(repo)
              end
            end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
neetob-0.4.2 lib/neetob/cli/github/make_pr/compliance_fix.rb
neetob-0.4.1 lib/neetob/cli/github/make_pr/compliance_fix.rb