# frozen_string_literal: true require "thor" require_relative "base" module Neetob class CLI module Github module MakePr class Script < Base attr_accessor :repos, :sandbox, :path_to_the_script_file, :pr_description, :should_fix_nanos def initialize(repos, path_to_the_script_file, pr_title, branch_name, pr_description, should_fix_nanos, sandbox = false) super(pr_title, branch_name) @repos = repos @sandbox = sandbox @path_to_the_script_file = path_to_the_script_file @pr_description = pr_description @should_fix_nanos = should_fix_nanos end def run matching_repos = should_fix_nanos ? add_org_suffix(find_all_matching_gems) : find_all_matching_apps_or_repos(repos, :github, sandbox) delete_and_create_temp_neetob_dir matching_repos.each do |repo| ui.info("\n Working on #{repo} \n") begin clone_repo_in_tmp_dir(repo) check_and_delete_remote_branch(repo) update_script_file_permissions execute_script(repo) ui.info(add_commmit_and_push_changes(repo)) delete_local_feature_branch(repo) res = client.create_pull_request(repo, "main", branch_name, pr_title, pr_description) ui.success("PR created in \"#{repo}\" project successfully.") rescue StandardError => e ExceptionHandler.new(e).process end end `rm -rf /tmp/neetob` end private def update_script_file_permissions `chmod +x #{path_to_the_script_file}` end def execute_script(repo) `#{cd_to_repo_in_tmp_dir(repo)} && #{path_to_the_script_file}` end end end end end end