lib/big_keeper/command/feature&hotfix.rb
require 'big_keeper/command/feature&hotfix/start'require 'big_keeper/command/feature&hotfix/finish'require 'big_keeper/command/feature&hotfix/switch'require 'big_keeper/command/feature&hotfix/update'require 'big_keeper/command/feature&hotfix/pull'require 'big_keeper/command/feature&hotfix/push'require 'big_keeper/command/feature&hotfix/rebase'require 'big_keeper/command/feature&hotfix/publish'require 'big_keeper/command/feature&hotfix/delete'require 'big_keeper/command/feature&hotfix/list'require 'big_keeper/util/leancloud_logger' module BigKeeperMethod `feature_and_hotfix_command` has a Cognitive Complexity of 71 (exceeds 5 allowed). Consider refactoring.
Method `feature_and_hotfix_command` has 130 lines of code (exceeds 25 allowed). Consider refactoring. def self.feature_and_hotfix_command(type) desc "Gitflow #{GitflowType.name(type)} operations" command GitflowType.command(type) do |c| c.desc "Start a new #{GitflowType.name(type)} with name for given modules and main project" c.command :start do |start| start.action do |global_options, options, args| path = File.expand_path(global_options[:path]) version = global_options[:ver] user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/start") help_now!('user name is required') if user and user.empty? help_now!("#{GitflowType.name(type)} name is required") if args.length < 1 name = args[0] modules = args[(1...args.length)] if args.length > 1 start(path, version, user, name, modules, type) end end c.desc "Update modules for the #{GitflowType.name(type)} with name" c.command :update do |update| update.action do |global_options, options, args| path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/update") help_now!('user name is required') if user and user.empty? modules = args[(0...args.length)] if args.length > 0 update(path, user, modules, type) end end c.desc "Switch to the #{GitflowType.name(type)} with name" c.command :switch do |switch| switch.action do |global_options, options, args| path = File.expand_path(global_options[:path]) version = global_options[:ver] user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/switch") help_now!('user name is required') if user and user.empty? help_now!("#{GitflowType.name(type)} name is required") if args.length < 1 name = args[0] switch_to(path, version, user, name, type) end end c.desc "Pull remote changes for current #{GitflowType.name(type)}"Similar blocks of code found in 4 locations. Consider refactoring. c.command :pull do |pull| pull.action do |global_options, options, args| path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/pull") help_now!('user name is required') if user and user.empty? pull(path, user, type) end end c.desc "Push local changes to remote for current #{GitflowType.name(type)}" c.command :push do |push| push.action do |global_options, options, args| path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/push") help_now!('user name is required') if user and user.empty? help_now!('comment message is required') if args.length < 1 help_now!(%Q(comment message should be wrappered with '' or "")) if args.length > 1 comment = args[0] push(path, user, comment, type) end end c.desc "Rebase '#{GitflowType.base_branch(type)}' to current #{GitflowType.name(type)}"Similar blocks of code found in 4 locations. Consider refactoring. c.command :rebase do |rebase| rebase.action do |global_options, options, args| path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/rebase") help_now!('user name is required') if user and user.empty? rebase(path, user, type) end end c.desc "Finish current #{GitflowType.name(type)}"Similar blocks of code found in 4 locations. Consider refactoring. c.command :finish do |finish| finish.action do |global_options, options, args| path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/finish") help_now!('user name is required') if user and user.empty? finish(path, user, type) end end c.desc "Publish current #{GitflowType.name(type)}"Similar blocks of code found in 4 locations. Consider refactoring. c.command :publish do |publish| publish.action do |global_options, options, args| path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/publish") help_now!('user name is required') if user and user.empty? publish(path, user, type) end end c.desc "Delete #{GitflowType.name(type)} with name" c.command :delete do |delete| delete.action do |global_options, options, args| path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/delete") help_now!('user name is required') if user and user.empty? help_now!("#{GitflowType.name(type)} name is required") if args.length < 1 name = args[0] delete(path, user, name, type) end end c.desc "List all the #{GitflowType.name(type)}s" c.command :list do |list| list.flag %i[v version] , default_value: 'all versions' list.desc "Print list of TREE format." list.command :tree do |tree| tree.action do |global_options, options, args| LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/list/tree") Logger.highlight("Generating #{GitflowType.name(type)} tree of all version...") if args.length < 1 path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase list(path, user, type, options) end end list.desc "Print list of JSON format." list.command :json do |json| json.action do |global_options, options, args| LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/list/json") options[:json] = true path = File.expand_path(global_options[:path]) user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase list(path, user, type, options) end end end end endend