Add --force option to homesick rc command
Support automatically eval-ing .homesickrc file without prompting for user input. This is particularly useful for headless scripts that do not support user input.
This commit is contained in:
@@ -61,12 +61,15 @@ module Homesick
|
|||||||
end
|
end
|
||||||
|
|
||||||
desc 'rc CASTLE', 'Run the .homesickrc for the specified castle'
|
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)
|
def rc(name = DEFAULT_CASTLE_NAME)
|
||||||
inside repos_dir do
|
inside repos_dir do
|
||||||
destination = Pathname.new(name)
|
destination = Pathname.new(name)
|
||||||
homesickrc = destination.join('.homesickrc').expand_path
|
homesickrc = destination.join('.homesickrc').expand_path
|
||||||
if homesickrc.exist?
|
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
|
if proceed
|
||||||
say_status 'eval', homesickrc
|
say_status 'eval', homesickrc
|
||||||
inside destination do
|
inside destination do
|
||||||
|
|||||||
@@ -149,6 +149,26 @@ describe Homesick::CLI do
|
|||||||
end
|
end
|
||||||
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
|
context 'when told not to do so' do
|
||||||
before do
|
before do
|
||||||
expect_any_instance_of(Thor::Shell::Basic).to receive(:yes?).with(be_a(String)).and_return(false)
|
expect_any_instance_of(Thor::Shell::Basic).to receive(:yes?).with(be_a(String)).and_return(false)
|
||||||
|
|||||||
Reference in New Issue
Block a user