Revert changes that use "\" and disable the line length cop

This commit is contained in:
Nicolas McCurdy
2014-01-20 21:03:21 -05:00
parent 08a71f657f
commit 95943deb82
5 changed files with 52 additions and 98 deletions

View File

@@ -12,5 +12,8 @@ ClassLength:
CyclomaticComplexity: CyclomaticComplexity:
Max: 13 Max: 13
LineLength:
Enabled: false
MethodLength: MethodLength:
Max: 36 Max: 36

View File

@@ -32,8 +32,7 @@ class Homesick < Thor
destination = nil destination = nil
if File.exist?(uri) if File.exist?(uri)
uri = Pathname.new(uri).expand_path uri = Pathname.new(uri).expand_path
fail "Castle already cloned to #{uri}" \ fail "Castle already cloned to #{uri}" if uri.to_s.start_with?(repos_dir.to_s)
if uri.to_s.start_with?(repos_dir.to_s)
destination = uri.basename destination = uri.basename
@@ -59,17 +58,16 @@ class Homesick < Thor
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 "\ proceed = shell.yes?("#{name} has a .homesickrc. Proceed with evaling it? (This could be destructive)")
"evaling it? (This could be destructive)")
if proceed if proceed
shell.say_status 'eval', homesickrc shell.say_status 'eval', homesickrc
inside destination do inside destination do
eval homesickrc.read, binding, homesickrc.expand_path.to_s eval homesickrc.read, binding, homesickrc.expand_path.to_s
end end
else else
shell.say_status 'eval skip', "not evaling #{homesickrc}, " \ shell.say_status 'eval skip',
"#{destination} may need manual " \ "not evaling #{homesickrc}, #{destination} may need manual configuration",
"configuration", :blue :blue
end end
end end
end end
@@ -122,8 +120,7 @@ class Homesick < Thor
desc 'symlink CASTLE', 'Symlinks all dotfiles from the specified castle' desc 'symlink CASTLE', 'Symlinks all dotfiles from the specified castle'
method_option :force, method_option :force,
default: false, default: false,
desc: 'Overwrite existing conflicting symlinks without ' \ desc: 'Overwrite existing conflicting symlinks without prompting.'
'prompting.'
def symlink(name = DEFAULT_CASTLE_NAME) def symlink(name = DEFAULT_CASTLE_NAME)
check_castle_existance(name, 'symlink') check_castle_existance(name, 'symlink')
@@ -164,9 +161,7 @@ class Homesick < Thor
mv absolute_path, castle_path mv absolute_path, castle_path
else else
shell.say_status(:track, shell.say_status(:track,
"#{target} already exists, and is more recent " \ "#{target} already exists, and is more recent than #{file}. Run 'homesick SYMLINK CASTLE' to create symlinks.",
"than #{file}. Run 'homesick SYMLINK CASTLE' " \
"to create symlinks.",
:blue) unless options[:quiet] :blue) unless options[:quiet]
end end
else else
@@ -184,8 +179,7 @@ class Homesick < Thor
end end
# are we tracking something nested? Add the parent dir to the manifest # are we tracking something nested? Add the parent dir to the manifest
subdir_add(castle, relative_dir) \ subdir_add(castle, relative_dir) unless relative_dir.eql?(Pathname.new('.'))
unless relative_dir.eql?(Pathname.new('.'))
end end
desc 'list', 'List cloned castles' desc 'list', 'List cloned castles'
@@ -254,8 +248,7 @@ class Homesick < Thor
check_castle_existance castle, 'cd' check_castle_existance castle, 'cd'
castle_dir = repos_dir.join(castle) castle_dir = repos_dir.join(castle)
say_status "cd #{castle_dir.realpath}", say_status "cd #{castle_dir.realpath}",
"Opening a new shell in castle '#{castle}'. To return to the " \ "Opening a new shell in castle '#{castle}'. To return to the original one exit from the new shell.",
"original one exit from the new shell.",
:green :green
inside castle_dir do inside castle_dir do
system(ENV['SHELL']) system(ENV['SHELL'])
@@ -267,8 +260,7 @@ class Homesick < Thor
def open(castle = DEFAULT_CASTLE_NAME) def open(castle = DEFAULT_CASTLE_NAME)
unless ENV['EDITOR'] unless ENV['EDITOR']
say_status :error, say_status :error,
'The $EDITOR environment variable must be set to use ' \ 'The $EDITOR environment variable must be set to use this command',
'this command',
:red :red
exit(1) exit(1)
@@ -276,8 +268,7 @@ class Homesick < Thor
check_castle_existance castle, 'open' check_castle_existance castle, 'open'
castle_dir = repos_dir.join(castle) castle_dir = repos_dir.join(castle)
say_status "#{ENV['EDITOR']} #{castle_dir.realpath}", say_status "#{ENV['EDITOR']} #{castle_dir.realpath}",
"Opening the root directory of castle '#{castle}' in editor " \ "Opening the root directory of castle '#{castle}' in editor '#{ENV['EDITOR']}'.",
"'#{ENV['EDITOR']}'.",
:green :green
inside castle_dir do inside castle_dir do
system(ENV['EDITOR']) system(ENV['EDITOR'])
@@ -306,8 +297,7 @@ class Homesick < Thor
def check_castle_existance(name, action) def check_castle_existance(name, action)
unless castle_dir(name).exist? unless castle_dir(name).exist?
say_status :error, say_status :error,
"Could not #{action} #{name}, expected " \ "Could not #{action} #{name}, expected #{castle_dir(name)} exist and contain dotfiles",
"#{castle_dir(name)} exist and contain dotfiles",
:red :red
exit(1) exit(1)

View File

@@ -7,19 +7,16 @@ class Homesick
config ||= {} config ||= {}
destination = config[:destination] || File.basename(repo, '.git') destination = config[:destination] || File.basename(repo, '.git')
destination = Pathname.new(destination) \ destination = Pathname.new(destination) unless destination.kind_of?(Pathname)
unless destination.kind_of?(Pathname)
FileUtils.mkdir_p destination.dirname FileUtils.mkdir_p destination.dirname
if destination.directory? if destination.directory?
say_status :exist, destination.expand_path, :blue \ say_status :exist, destination.expand_path, :blue unless options[:quiet]
unless options[:quiet]
else else
say_status 'git clone', say_status 'git clone',
"#{repo} to #{destination.expand_path}", "#{repo} to #{destination.expand_path}",
:green unless options[:quiet] :green unless options[:quiet]
system "git clone -q --config push.default=upstream " \ system "git clone -q --config push.default=upstream --recursive #{repo} #{destination}" unless options[:pretend]
"--recursive #{repo} #{destination}" unless options[:pretend]
end end
end end
@@ -28,8 +25,7 @@ class Homesick
inside path do inside path do
if path.join('.git').exist? if path.join('.git').exist?
say_status 'git init', 'already initialized', :blue \ say_status 'git init', 'already initialized', :blue unless options[:quiet]
unless options[:quiet]
else else
say_status 'git init', '' unless options[:quiet] say_status 'git init', '' unless options[:quiet]
system 'git init >/dev/null' unless options[:pretend] system 'git init >/dev/null' unless options[:pretend]
@@ -42,8 +38,7 @@ class Homesick
existing_remote = nil if existing_remote == '' existing_remote = nil if existing_remote == ''
if existing_remote if existing_remote
say_status 'git remote', "#{name} already exists", :blue \ say_status 'git remote', "#{name} already exists", :blue unless options[:quiet]
unless options[:quiet]
else else
say_status 'git remote', "add #{name} #{url}" unless options[:quiet] say_status 'git remote', "add #{name} #{url}" unless options[:quiet]
system "git remote add #{name} #{url}" unless options[:pretend] system "git remote add #{name} #{url}" unless options[:pretend]
@@ -57,8 +52,7 @@ class Homesick
def git_submodule_update(config = {}) def git_submodule_update(config = {})
say_status 'git submodule', 'update', :green unless options[:quiet] say_status 'git submodule', 'update', :green unless options[:quiet]
system 'git submodule --quiet update --init --recursive ' \ system 'git submodule --quiet update --init --recursive >/dev/null 2>&1' unless options[:pretend]
'>/dev/null 2>&1' unless options[:pretend]
end end
def git_pull(config = {}) def git_pull(config = {})
@@ -74,8 +68,7 @@ class Homesick
def git_commit_all(config = {}) def git_commit_all(config = {})
say_status 'git commit all', '', :green unless options[:quiet] say_status 'git commit all', '', :green unless options[:quiet]
if config[:message] if config[:message]
system "git commit -a -m '#{config[:message]}'" \ system "git commit -a -m '#{config[:message]}'" unless options[:pretend]
unless options[:pretend]
else else
system 'git commit -v -a' unless options[:pretend] system 'git commit -v -a' unless options[:pretend]
end end
@@ -101,13 +94,9 @@ class Homesick
destination = Pathname.new(destination + source.basename) destination = Pathname.new(destination + source.basename)
if destination.exist? if destination.exist?
say_status :conflict, "#{destination} exists", :red \ say_status :conflict, "#{destination} exists", :red unless options[:quiet]
unless options[:quiet]
system "mv '#{source}' '#{destination}'" \ system "mv '#{source}' '#{destination}'" if (options[:force] || shell.file_collision(destination) { source }) && !options[:pretend]
if (options[:force] ||
shell.file_collision(destination) { source }) &&
!options[:pretend]
else else
# this needs some sort of message here. # this needs some sort of message here.
system "mv '#{source}' '#{destination}'" unless options[:pretend] system "mv '#{source}' '#{destination}'" unless options[:pretend]
@@ -118,12 +107,10 @@ class Homesick
target = Pathname.new(target) target = Pathname.new(target)
if target.symlink? if target.symlink?
say_status :unlink, "#{target.expand_path}", :green \ say_status :unlink, "#{target.expand_path}", :green unless options[:quiet]
unless options[:quiet]
FileUtils.rm_rf target FileUtils.rm_rf target
else else
say_status :conflict, "#{target} is not a symlink", :red \ say_status :conflict, "#{target} is not a symlink", :red unless options[:quiet]
unless options[:quiet]
end end
end end
@@ -141,12 +128,10 @@ class Homesick
target = Pathname.new(target) target = Pathname.new(target)
if target.symlink? if target.symlink?
say_status :unlink, "#{target.expand_path}", :green \ say_status :unlink, "#{target.expand_path}", :green unless options[:quiet]
unless options[:quiet]
FileUtils.rm_rf target FileUtils.rm_rf target
else else
say_status :conflict, "#{target} is not a symlink", :red \ say_status :conflict, "#{target} is not a symlink", :red unless options[:quiet]
unless options[:quiet]
end end
end end
@@ -181,18 +166,15 @@ class Homesick
def handle_symlink_action(action, source, destination) def handle_symlink_action(action, source, destination)
case action case action
when :identical when :identical
say_status :identical, destination.expand_path, :blue \ say_status :identical, destination.expand_path, :blue unless options[:quiet]
unless options[:quiet]
when :symlink_conflict when :symlink_conflict
say_status :conflict, say_status :conflict,
"#{destination} exists and points to " \ "#{destination} exists and points to #{destination.readlink}",
"#{destination.readlink}",
:red unless options[:quiet] :red unless options[:quiet]
system "ln -nsf '#{source}' '#{destination}'" if collision_accepted? system "ln -nsf '#{source}' '#{destination}'" if collision_accepted?
when :conflict when :conflict
say_status :conflict, "#{destination} exists", :red \ say_status :conflict, "#{destination} exists", :red unless options[:quiet]
unless options[:quiet]
if collision_accepted? if collision_accepted?
system "rm -rf '#{destination}'" unless options[:pretend] system "rm -rf '#{destination}'" unless options[:pretend]

View File

@@ -25,8 +25,7 @@ describe 'homesick' do
expect($stdout).to receive(:print) expect($stdout).to receive(:print)
expect($stdin).to receive(:gets).and_return('y') expect($stdin).to receive(:gets).and_return('y')
expect_any_instance_of(Thor::Shell::Basic).to \ expect_any_instance_of(Thor::Shell::Basic).to receive(:say_status).with('eval', kind_of(Pathname))
receive(:say_status).with('eval', kind_of(Pathname))
homesick.clone local_repo homesick.clone local_repo
castles.join('some_repo').join('testing').should exist castles.join('some_repo').join('testing').should exist
@@ -51,8 +50,7 @@ describe 'homesick' do
it 'should raise an error' do it 'should raise an error' do
homesick.should_not_receive(:git_clone) homesick.should_not_receive(:git_clone)
expect { homesick.clone @existing_dir.to_s }.to \ expect { homesick.clone @existing_dir.to_s }.to raise_error(/already cloned/i)
raise_error(/already cloned/i)
end end
end end
end end
@@ -103,8 +101,7 @@ describe 'homesick' do
homesick.clone 'gitolite:pickled-vim.git' homesick.clone 'gitolite:pickled-vim.git'
end end
it 'should throw an exception when trying to clone a malformed uri ' \ it 'should throw an exception when trying to clone a malformed uri like malformed' do
'like malformed' do
homesick.should_not_receive(:git_clone) homesick.should_not_receive(:git_clone)
expect { homesick.clone 'malformed' }.to raise_error expect { homesick.clone 'malformed' }.to raise_error
end end
@@ -134,8 +131,7 @@ describe 'homesick' do
end" end"
end end
expect_any_instance_of(Thor::Shell::Basic).to \ expect_any_instance_of(Thor::Shell::Basic).to receive(:say_status).with('eval', kind_of(Pathname))
receive(:say_status).with('eval', kind_of(Pathname))
homesick.rc castle homesick.rc castle
castle.join('testing').should exist castle.join('testing').should exist
@@ -155,8 +151,7 @@ describe 'homesick' do
end" end"
end end
expect_any_instance_of(Thor::Shell::Basic).to \ expect_any_instance_of(Thor::Shell::Basic).to receive(:say_status).with('eval skip', /not evaling.+/, :blue)
receive(:say_status).with('eval skip', /not evaling.+/, :blue)
homesick.rc castle homesick.rc castle
castle.join('testing').should_not exist castle.join('testing').should_not exist
@@ -381,8 +376,7 @@ describe 'homesick' do
it 'should say "nothing to commit" when there are no changes' do it 'should say "nothing to commit" when there are no changes' do
given_castle('castle_repo') given_castle('castle_repo')
text = Capture.stdout { homesick.status('castle_repo') } text = Capture.stdout { homesick.status('castle_repo') }
text.should =~ Regexp.new('nothing to commit \(create\/copy files and ' \ text.should =~ /nothing to commit \(create\/copy files and use "git add" to track\)$/
'use "git add" to track\)$')
end end
it 'should say "Changes to be committed" when there are changes' do it 'should say "Changes to be committed" when there are changes' do
@@ -433,22 +427,18 @@ describe 'homesick' do
end end
describe 'pull' do describe 'pull' do
it 'should perform a pull, submodule init and update when the given ' \ it 'should perform a pull, submodule init and update when the given castle exists' do
'castle exists' do
given_castle('castle_repo') given_castle('castle_repo')
homesick.stub(:system).once.with('git pull --quiet') homesick.stub(:system).once.with('git pull --quiet')
homesick.stub(:system).once.with('git submodule --quiet init') homesick.stub(:system).once.with('git submodule --quiet init')
homesick.stub(:system).once.with('git submodule --quiet update ' \ homesick.stub(:system).once.with('git submodule --quiet update --init --recursive >/dev/null 2>&1')
'--init --recursive >/dev/null 2>&1')
homesick.pull 'castle_repo' homesick.pull 'castle_repo'
end end
it 'should print an error message when trying to pull a non-existant ' \ it 'should print an error message when trying to pull a non-existant castle' do
'castle' do
homesick.should_receive('say_status').once homesick.should_receive('say_status').once
.with(:error, .with(:error,
Regexp.new('Could not pull castle_repo, expected ' \ %r{Could not pull castle_repo, expected /tmp/construct_container.* exist and contain dotfiles},
'/tmp/construct_container.* exist and contain dotfiles'),
:red) :red)
expect { homesick.pull 'castle_repo' }.to raise_error(SystemExit) expect { homesick.pull 'castle_repo' }.to raise_error(SystemExit)
end end
@@ -461,8 +451,7 @@ describe 'homesick' do
homesick.stub(:system).exactly(2).times homesick.stub(:system).exactly(2).times
.with('git submodule --quiet init') .with('git submodule --quiet init')
homesick.stub(:system).exactly(2).times homesick.stub(:system).exactly(2).times
.with('git submodule --quiet update --init --recursive ' \ .with('git submodule --quiet update --init --recursive >/dev/null 2>&1')
'>/dev/null 2>&1')
Capture.stdout do Capture.stdout do
Capture.stderr { homesick.invoke 'pull', [], all: true } Capture.stderr { homesick.invoke 'pull', [], all: true }
end end
@@ -478,12 +467,10 @@ describe 'homesick' do
homesick.push 'castle_repo' homesick.push 'castle_repo'
end end
it 'should print an error message when trying to push a non-existant '\ it 'should print an error message when trying to push a non-existant castle' do
'castle' do
homesick.should_receive('say_status').once homesick.should_receive('say_status').once
.with(:error, .with(:error,
Regexp.new('Could not push castle_repo, expected ' \ %r{Could not push castle_repo, expected /tmp/construct_container.* exist and contain dotfiles},
'/tmp/construct_container.* exist and contain dotfiles'),
:red) :red)
expect { homesick.push 'castle_repo' }.to raise_error(SystemExit) expect { homesick.push 'castle_repo' }.to raise_error(SystemExit)
end end
@@ -595,8 +582,7 @@ describe 'homesick' do
end end
end end
it 'should remove the parent of a tracked file from the subdir_file ' \ it 'should remove the parent of a tracked file from the subdir_file if the parent itself is tracked' do
'if the parent itself is tracked' do
castle = given_castle('castle_repo') castle = given_castle('castle_repo')
some_nested_file = home.file('some/nested/file.txt') some_nested_file = home.file('some/nested/file.txt')
@@ -614,8 +600,7 @@ describe 'homesick' do
describe 'destroy' do describe 'destroy' do
it 'removes the symlink files' do it 'removes the symlink files' do
expect_any_instance_of(Thor::Shell::Basic).to \ expect_any_instance_of(Thor::Shell::Basic).to receive(:yes?).and_return('y')
receive(:yes?).and_return('y')
given_castle('stronghold') given_castle('stronghold')
some_rc_file = home.file '.some_rc_file' some_rc_file = home.file '.some_rc_file'
homesick.track(some_rc_file.to_s, 'stronghold') homesick.track(some_rc_file.to_s, 'stronghold')
@@ -625,8 +610,7 @@ describe 'homesick' do
end end
it 'deletes the cloned repository' do it 'deletes the cloned repository' do
expect_any_instance_of(Thor::Shell::Basic).to \ expect_any_instance_of(Thor::Shell::Basic).to receive(:yes?).and_return('y')
receive(:yes?).and_return('y')
castle = given_castle('stronghold') castle = given_castle('stronghold')
some_rc_file = home.file '.some_rc_file' some_rc_file = home.file '.some_rc_file'
homesick.track(some_rc_file.to_s, 'stronghold') homesick.track(some_rc_file.to_s, 'stronghold')
@@ -647,8 +631,7 @@ describe 'homesick' do
it 'returns an error message when the given castle does not exist' do it 'returns an error message when the given castle does not exist' do
homesick.should_receive('say_status').once homesick.should_receive('say_status').once
.with(:error, .with(:error,
Regexp.new('Could not cd castle_repo, expected ' \ %r{Could not cd castle_repo, expected /tmp/construct_container.* exist and contain dotfiles},
'/tmp/construct_container.* exist and contain dotfiles'),
:red) :red)
expect { homesick.cd 'castle_repo' }.to raise_error(SystemExit) expect { homesick.cd 'castle_repo' }.to raise_error(SystemExit)
end end
@@ -666,14 +649,12 @@ describe 'homesick' do
Capture.stdout { homesick.open 'castle_repo' } Capture.stdout { homesick.open 'castle_repo' }
end end
it 'returns an error message when the $EDITOR environment variable is ' \ it 'returns an error message when the $EDITOR environment variable is not set' do
'not set' do
# Set the default editor to make sure it fails. # Set the default editor to make sure it fails.
ENV.stub(:[]).with('EDITOR').and_return(nil) ENV.stub(:[]).with('EDITOR').and_return(nil)
homesick.should_receive('say_status').once homesick.should_receive('say_status').once
.with(:error, .with(:error,
'The $EDITOR environment variable must be set to use '\ 'The $EDITOR environment variable must be set to use this command',
'this command',
:red) :red)
expect { homesick.open 'castle_repo' }.to raise_error(SystemExit) expect { homesick.open 'castle_repo' }.to raise_error(SystemExit)
end end
@@ -683,8 +664,7 @@ describe 'homesick' do
ENV.stub(:[]).with('EDITOR').and_return('vim') ENV.stub(:[]).with('EDITOR').and_return('vim')
homesick.should_receive('say_status').once homesick.should_receive('say_status').once
.with(:error, .with(:error,
Regexp.new('Could not open castle_repo, expected ' \ %r{Could not open castle_repo, expected /tmp/construct_container.* exist and contain dotfiles},
'/tmp/construct_container.* exist and contain dotfiles'),
:red) :red)
expect { homesick.open 'castle_repo' }.to raise_error(SystemExit) expect { homesick.open 'castle_repo' }.to raise_error(SystemExit)
end end

View File

@@ -24,8 +24,7 @@ RSpec.configure do |config|
system 'git init >/dev/null 2>&1' system 'git init >/dev/null 2>&1'
system 'git config user.email "test@test.com"' system 'git config user.email "test@test.com"'
system 'git config user.name "Test Name"' system 'git config user.name "Test Name"'
system "git remote add origin " \ system "git remote add origin git://github.com/technicalpickles/#{name}.git >/dev/null 2>&1"
"git://github.com/technicalpickles/#{name}.git >/dev/null 2>&1"
if subdirs if subdirs
subdir_file = castle.join(Homesick::SUBDIR_FILENAME) subdir_file = castle.join(Homesick::SUBDIR_FILENAME)
subdirs.each do |subdir| subdirs.each do |subdir|