lib/neetob/cli/github/labels/upsert.rb in neetob-0.1.2 vs lib/neetob/cli/github/labels/upsert.rb in neetob-0.1.4

- old
+ new

@@ -7,52 +7,86 @@ module Neetob class CLI module Github module Labels class Upsert < Base - attr_accessor :apps, :required_labels_json_file_path, :sandbox + WHITE_COLOR_HEX_CODE = "ffffff" - def initialize(apps, required_labels_json_file_path = "", sandbox = false) + attr_accessor :apps, :required_labels_json_file_path, :sandbox, :all_neeto_repos, :name, :color, :description + + def initialize(apps, required_labels_json_file_path = "", sandbox = false, all_neeto_repos = false, + name = "", color = "", description = "") super() @apps = apps @required_labels_json_file_path = required_labels_json_file_path @sandbox = sandbox + @all_neeto_repos = all_neeto_repos + @name = name + @color = color + @description = description end def run - matching_apps = find_all_matching_apps(apps, :github, sandbox) + check_for_apps_and_all_neeto_repos_option(apps, all_neeto_repos) + matching_apps = find_all_matching_apps(apps, :github, sandbox, false, all_neeto_repos) inform_about_default_labels_file matching_apps.each do |app| - ui.info("\n Working on #{app} repo \n") + ui.info("\nWorking on #{app} repo\n") begin - required_labels = read_json_file(required_labels_json_file_path || default_labels_file_path) + required_labels = get_required_labels required_labels.each do |label| create_or_update_label(app, label) + sleep(1) end rescue StandardError => e ExceptionHandler.new(e).process end end end private + def get_required_labels + if name.blank? && (!color.blank? || !description.blank?) + ui.error("Please provide \"name\" for the label you want to upsert.") + exit + end + + if !name.blank? + return create_label_payload + end + + read_json_file(required_labels_json_file_path || default_labels_file_path) + end + + def create_label_payload + [ + { + "name" => name, + "color" => color, + "description" => description + }.compact + ] + end + def create_or_update_label(app, label_details) begin client.update_label(app, label_details["name"], label_details) ui.success("Label \"#{label_details["name"]}\" updated successfully") rescue Octokit::NotFound - client.add_label(app, label_details["name"], label_details["color"], label_details) + client.add_label( + app, label_details["name"], label_details["color"] || WHITE_COLOR_HEX_CODE, + label_details) ui.success("Label \"#{label_details["name"]}\" created successfully") end end def default_labels_file_path File.expand_path("../../../../../data/github-labels.json", __dir__) end def inform_about_default_labels_file - if required_labels_json_file_path.nil? + if required_labels_json_file_path.nil? && name.nil? ui.info("Upserting labels from the \"neetob/data/github-labels.json\" file") end end end end