diff --git a/lib/homesick/cli.rb b/lib/homesick/cli.rb index 8754031..00f5e19 100644 --- a/lib/homesick/cli.rb +++ b/lib/homesick/cli.rb @@ -66,12 +66,15 @@ module Homesick end desc 'rc CASTLE', 'Run the .homesickrc for the specified castle' + method_option :force, + default: false, + desc: 'Evaluate .homesickrc without prompting.' def rc(name = DEFAULT_CASTLE_NAME) inside repos_dir do destination = Pathname.new(name) homesickrc = destination.join('.homesickrc').expand_path if homesickrc.exist? - proceed = shell.yes?("#{name} has a .homesickrc. Proceed with evaling it? (This could be destructive)") + proceed = options[:force] || shell.yes?("#{name} has a .homesickrc. Proceed with evaling it? (This could be destructive)") if proceed say_status 'eval', homesickrc inside destination do diff --git a/spec/homesick_cli_spec.rb b/spec/homesick_cli_spec.rb index 9df3e2a..54f0331 100644 --- a/spec/homesick_cli_spec.rb +++ b/spec/homesick_cli_spec.rb @@ -169,6 +169,26 @@ describe Homesick::CLI do end end + context 'when options[:force] == true' do + let(:homesick) { Homesick::CLI.new [], force: true } + before do + expect_any_instance_of(Thor::Shell::Basic).to_not receive(:yes?) + end + + it 'executes the .homesickrc' do + castle.file('.homesickrc') do |file| + file << "File.open(Dir.pwd + '/testing', 'w') do |f| + f.print 'testing' + end" + end + + expect(homesick).to receive(:say_status).with('eval', kind_of(Pathname)) + homesick.rc castle + + expect(castle.join('testing')).to exist + end + end + context 'when told not to do so' do before do expect_any_instance_of(Thor::Shell::Basic).to receive(:yes?).with(be_a(String)).and_return(false)