class Guac::Commands::Setup
Constants
- PROMPT_QUEUE
Public Class Methods
new(options, thor)
click to toggle source
# File lib/guac/commands/setup.rb, line 17 def initialize(options, thor) @options = options @config = Guac::Config.configs @defaults = Guac::Config.defaults @thor = thor end
Public Instance Methods
execute(_input: $stdin, output: $stdout)
click to toggle source
# File lib/guac/commands/setup.rb, line 24 def execute(_input: $stdin, output: $stdout) @output = output @output.puts "\nš„ Welcome to the tableside Guac builder š„\n".green @body = @defaults.dup @body.merge!(@config) unless @config.nil? PROMPT_QUEUE.each do |prompt| send(prompt) @output.puts "\n" end Guac::Config.save_configs(@body) @output.puts "š„ Config saved in ~/.guacrc š„\n".bold.green @output.puts Guac::Config.configs.to_yaml end
Private Instance Methods
parse_branch_aliases(result)
click to toggle source
# File lib/guac/commands/setup.rb, line 92 def parse_branch_aliases(result) branch_pairs = result.split(/ \s*/) {}.tap do |obj| branch_pairs.each do |pair| branches = pair.split(':') obj[branches[0]] = branches[1] end end end
prompt_branch_aliases()
click to toggle source
# File lib/guac/commands/setup.rb, line 58 def prompt_branch_aliases @output.puts 'Git branch aliases'.bold.blue @output.puts 'Input format: `branch_name:branch_name_alias`' result = @thor.yes?('Would you like to configure aliases? (y/n)'.bold) return unless result @body[:repos].each do |repo| result = @thor.ask("Alias for `#{repo[:name].colorize(:blue)}`:") next unless valid_result?(result) repo[:branch_aliases] = parse_branch_aliases(result) end end
prompt_default_branch()
click to toggle source
# File lib/guac/commands/setup.rb, line 80 def prompt_default_branch @output.puts "Default branch".bold.blue @output.puts "Default: `#{@defaults[:default_branch].bold}`" result = @thor.ask('Enter branch or press return for default:'.bold) @body[:default_branch] = result if valid_result?(result) end
prompt_pull_strategy()
click to toggle source
# File lib/guac/commands/setup.rb, line 72 def prompt_pull_strategy @output.puts 'Pull strategy'.bold.blue @output.puts "Default: `#{@defaults[:pull_strategy].bold}`" result = @thor.ask('Enter strategy or press return for default:'.bold) @body[:pull_strategy] = result if valid_result?(result) end
prompt_repos()
click to toggle source
# File lib/guac/commands/setup.rb, line 43 def prompt_repos @output.puts 'Git Repos (separated by spaces)'.bold.blue @output.puts 'Input absolute paths or drag & drop folders here (e.g. ~/Repos/one ~/Repos/two)' result = @thor.ask('Repos:'.bold, required: true) dirs = result.split(/ \s*/) validate_repos(dirs) @body[:repos] = dirs.map do |r| { dir: r, name: r.split('/').last, } end end
valid_result?(result)
click to toggle source
# File lib/guac/commands/setup.rb, line 88 def valid_result?(result) result && !result.strip.empty? end
validate_repos(dirs)
click to toggle source
# File lib/guac/commands/setup.rb, line 102 def validate_repos(dirs) return if Guac::Repo.valid?(dirs) error = "1 or more directories could not be found, or are not git repos!".yellow.bold raise Guac::Commands::Error, error end