# frozen_string_literal: true require "thor" require_relative "labels/commands" require_relative "issues/commands" require_relative "search" require_relative "protect_branch" require_relative "login" require_relative "make_pr/commands" module Neetob class CLI module Github class Commands < Thor desc "labels", "Interact with the labels of Github repos" subcommand "labels", Labels::Commands desc "issues", "Interact with the issues of Github repos" subcommand "issues", Issues::Commands desc "make-pr", "Create PRs across multiple Github repos" subcommand "make_pr", MakePr::Commands desc "search", "Find the lines matching the given keyword in the specified file across all the neeto apps" option :apps, type: :array, aliases: "-a", required: true, desc: "Github app names. Can be matched using the '*' wildcard. Example: \"neeto*\" \"neeto-cal-web\"" option :keyword, type: :string, aliases: "-k", desc: "Keyword which needs to be searched", required: true option :path, type: :string, aliases: "-p", desc: "Path of the file in which you want to search the given keyword.", required: true def search Search.new(options[:apps], options[:keyword], options[:path], options[:sandbox]).run end desc "login", "Update the Github access token by authenticating via browser" def login Login.new end desc "protect_branch", "Protect the specified branch with the given rules" option :branch, type: :string, aliases: "-b", desc: "Name of the branch whose protections rules needs to be updated", required: true option :path, type: :string, aliases: "-p", desc: "The JSON file path which specify all the required rules for branch protection" option :apps, type: :array, aliases: "-a", required: true, desc: "Github app names. Can be matched using the '*' wildcard. Example: \"neeto*\" \"neeto-cal-web\"" def protect_branch ProtectBranch.new(options[:branch], options[:apps], options[:path], options[:sandbox]).run end end end end end