# frozen_string_literal: true require "thor" require_relative "../base" module Neetob class CLI module Github module Labels class Update < Base attr_accessor :repos, :sandbox, :old_name, :new_name def initialize(repos, old_name, new_name, sandbox = false) super() @repos = repos @sandbox = sandbox @old_name = old_name @new_name = new_name end def run matching_repos = find_all_matching_apps_or_repos(repos, :github, sandbox) matching_repos.each do |repo| ui.info("\nUpdating label for #{repo} repo \n") begin update_label!(repo, old_name, new_name) rescue Octokit::NotFound ui.say("Ignoring update for #{repo} repo as it doesn't have the \"#{old_name}\" label.") rescue StandardError => e ExceptionHandler.new(e).process end end end private def update_label!(repo, old_name, new_name) client.label(repo, new_name) ui.error("Label with name \"#{new_name}\" already exists.") nil rescue Octokit::NotFound client.update_label(repo, old_name, { name: new_name }) ui.success("Label \"#{old_name}\" updated to \"#{new_name}\" successfully") rescue StandardError => e ExceptionHandler.new(e).process end end end end end end