diff --git a/.rubocop.yml b/.rubocop.yml index 005d569..67ee52d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -12,5 +12,8 @@ ClassLength: CyclomaticComplexity: Max: 13 +LineLength: + Enabled: false + MethodLength: Max: 36 diff --git a/lib/homesick.rb b/lib/homesick.rb index a007e1c..7b8d76f 100644 --- a/lib/homesick.rb +++ b/lib/homesick.rb @@ -32,8 +32,7 @@ class Homesick < Thor destination = nil if File.exist?(uri) uri = Pathname.new(uri).expand_path - fail "Castle already cloned to #{uri}" \ - if uri.to_s.start_with?(repos_dir.to_s) + fail "Castle already cloned to #{uri}" if uri.to_s.start_with?(repos_dir.to_s) destination = uri.basename @@ -59,17 +58,16 @@ class Homesick < Thor 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 = shell.yes?("#{name} has a .homesickrc. Proceed with evaling it? (This could be destructive)") if proceed shell.say_status 'eval', homesickrc inside destination do eval homesickrc.read, binding, homesickrc.expand_path.to_s end else - shell.say_status 'eval skip', "not evaling #{homesickrc}, " \ - "#{destination} may need manual " \ - "configuration", :blue + shell.say_status 'eval skip', + "not evaling #{homesickrc}, #{destination} may need manual configuration", + :blue end end end @@ -122,8 +120,7 @@ class Homesick < Thor desc 'symlink CASTLE', 'Symlinks all dotfiles from the specified castle' method_option :force, default: false, - desc: 'Overwrite existing conflicting symlinks without ' \ - 'prompting.' + desc: 'Overwrite existing conflicting symlinks without prompting.' def symlink(name = DEFAULT_CASTLE_NAME) check_castle_existance(name, 'symlink') @@ -164,9 +161,7 @@ class Homesick < Thor mv absolute_path, castle_path else shell.say_status(:track, - "#{target} already exists, and is more recent " \ - "than #{file}. Run 'homesick SYMLINK CASTLE' " \ - "to create symlinks.", + "#{target} already exists, and is more recent than #{file}. Run 'homesick SYMLINK CASTLE' to create symlinks.", :blue) unless options[:quiet] end else @@ -184,8 +179,7 @@ class Homesick < Thor end # are we tracking something nested? Add the parent dir to the manifest - subdir_add(castle, relative_dir) \ - unless relative_dir.eql?(Pathname.new('.')) + subdir_add(castle, relative_dir) unless relative_dir.eql?(Pathname.new('.')) end desc 'list', 'List cloned castles' @@ -254,8 +248,7 @@ class Homesick < Thor check_castle_existance castle, 'cd' castle_dir = repos_dir.join(castle) say_status "cd #{castle_dir.realpath}", - "Opening a new shell in castle '#{castle}'. To return to the " \ - "original one exit from the new shell.", + "Opening a new shell in castle '#{castle}'. To return to the original one exit from the new shell.", :green inside castle_dir do system(ENV['SHELL']) @@ -267,8 +260,7 @@ class Homesick < Thor def open(castle = DEFAULT_CASTLE_NAME) unless ENV['EDITOR'] say_status :error, - 'The $EDITOR environment variable must be set to use ' \ - 'this command', + 'The $EDITOR environment variable must be set to use this command', :red exit(1) @@ -276,8 +268,7 @@ class Homesick < Thor check_castle_existance castle, 'open' castle_dir = repos_dir.join(castle) say_status "#{ENV['EDITOR']} #{castle_dir.realpath}", - "Opening the root directory of castle '#{castle}' in editor " \ - "'#{ENV['EDITOR']}'.", + "Opening the root directory of castle '#{castle}' in editor '#{ENV['EDITOR']}'.", :green inside castle_dir do system(ENV['EDITOR']) @@ -306,8 +297,7 @@ class Homesick < Thor def check_castle_existance(name, action) unless castle_dir(name).exist? say_status :error, - "Could not #{action} #{name}, expected " \ - "#{castle_dir(name)} exist and contain dotfiles", + "Could not #{action} #{name}, expected #{castle_dir(name)} exist and contain dotfiles", :red exit(1) diff --git a/lib/homesick/actions.rb b/lib/homesick/actions.rb index bdae043..eb1eced 100644 --- a/lib/homesick/actions.rb +++ b/lib/homesick/actions.rb @@ -7,19 +7,16 @@ class Homesick config ||= {} destination = config[:destination] || File.basename(repo, '.git') - destination = Pathname.new(destination) \ - unless destination.kind_of?(Pathname) + destination = Pathname.new(destination) unless destination.kind_of?(Pathname) FileUtils.mkdir_p destination.dirname if destination.directory? - say_status :exist, destination.expand_path, :blue \ - unless options[:quiet] + say_status :exist, destination.expand_path, :blue unless options[:quiet] else say_status 'git clone', "#{repo} to #{destination.expand_path}", :green unless options[:quiet] - system "git clone -q --config push.default=upstream " \ - "--recursive #{repo} #{destination}" unless options[:pretend] + system "git clone -q --config push.default=upstream --recursive #{repo} #{destination}" unless options[:pretend] end end @@ -28,8 +25,7 @@ class Homesick inside path do if path.join('.git').exist? - say_status 'git init', 'already initialized', :blue \ - unless options[:quiet] + say_status 'git init', 'already initialized', :blue unless options[:quiet] else say_status 'git init', '' unless options[:quiet] system 'git init >/dev/null' unless options[:pretend] @@ -42,8 +38,7 @@ class Homesick existing_remote = nil if existing_remote == '' if existing_remote - say_status 'git remote', "#{name} already exists", :blue \ - unless options[:quiet] + say_status 'git remote', "#{name} already exists", :blue unless options[:quiet] else say_status 'git remote', "add #{name} #{url}" unless options[:quiet] system "git remote add #{name} #{url}" unless options[:pretend] @@ -57,8 +52,7 @@ class Homesick def git_submodule_update(config = {}) say_status 'git submodule', 'update', :green unless options[:quiet] - system 'git submodule --quiet update --init --recursive ' \ - '>/dev/null 2>&1' unless options[:pretend] + system 'git submodule --quiet update --init --recursive >/dev/null 2>&1' unless options[:pretend] end def git_pull(config = {}) @@ -74,8 +68,7 @@ class Homesick def git_commit_all(config = {}) say_status 'git commit all', '', :green unless options[:quiet] if config[:message] - system "git commit -a -m '#{config[:message]}'" \ - unless options[:pretend] + system "git commit -a -m '#{config[:message]}'" unless options[:pretend] else system 'git commit -v -a' unless options[:pretend] end @@ -101,13 +94,9 @@ class Homesick destination = Pathname.new(destination + source.basename) if destination.exist? - say_status :conflict, "#{destination} exists", :red \ - unless options[:quiet] + say_status :conflict, "#{destination} exists", :red unless options[:quiet] - system "mv '#{source}' '#{destination}'" \ - if (options[:force] || - shell.file_collision(destination) { source }) && - !options[:pretend] + system "mv '#{source}' '#{destination}'" if (options[:force] || shell.file_collision(destination) { source }) && !options[:pretend] else # this needs some sort of message here. system "mv '#{source}' '#{destination}'" unless options[:pretend] @@ -118,12 +107,10 @@ class Homesick target = Pathname.new(target) if target.symlink? - say_status :unlink, "#{target.expand_path}", :green \ - unless options[:quiet] + say_status :unlink, "#{target.expand_path}", :green unless options[:quiet] FileUtils.rm_rf target else - say_status :conflict, "#{target} is not a symlink", :red \ - unless options[:quiet] + say_status :conflict, "#{target} is not a symlink", :red unless options[:quiet] end end @@ -141,12 +128,10 @@ class Homesick target = Pathname.new(target) if target.symlink? - say_status :unlink, "#{target.expand_path}", :green \ - unless options[:quiet] + say_status :unlink, "#{target.expand_path}", :green unless options[:quiet] FileUtils.rm_rf target else - say_status :conflict, "#{target} is not a symlink", :red \ - unless options[:quiet] + say_status :conflict, "#{target} is not a symlink", :red unless options[:quiet] end end @@ -181,18 +166,15 @@ class Homesick def handle_symlink_action(action, source, destination) case action when :identical - say_status :identical, destination.expand_path, :blue \ - unless options[:quiet] + say_status :identical, destination.expand_path, :blue unless options[:quiet] when :symlink_conflict say_status :conflict, - "#{destination} exists and points to " \ - "#{destination.readlink}", + "#{destination} exists and points to #{destination.readlink}", :red unless options[:quiet] system "ln -nsf '#{source}' '#{destination}'" if collision_accepted? when :conflict - say_status :conflict, "#{destination} exists", :red \ - unless options[:quiet] + say_status :conflict, "#{destination} exists", :red unless options[:quiet] if collision_accepted? system "rm -rf '#{destination}'" unless options[:pretend] diff --git a/spec/homesick_spec.rb b/spec/homesick_spec.rb index 6650dd1..1b7b7a0 100644 --- a/spec/homesick_spec.rb +++ b/spec/homesick_spec.rb @@ -25,8 +25,7 @@ describe 'homesick' do expect($stdout).to receive(:print) expect($stdin).to receive(:gets).and_return('y') - expect_any_instance_of(Thor::Shell::Basic).to \ - receive(:say_status).with('eval', kind_of(Pathname)) + expect_any_instance_of(Thor::Shell::Basic).to receive(:say_status).with('eval', kind_of(Pathname)) homesick.clone local_repo castles.join('some_repo').join('testing').should exist @@ -51,8 +50,7 @@ describe 'homesick' do it 'should raise an error' do homesick.should_not_receive(:git_clone) - expect { homesick.clone @existing_dir.to_s }.to \ - raise_error(/already cloned/i) + expect { homesick.clone @existing_dir.to_s }.to raise_error(/already cloned/i) end end end @@ -103,8 +101,7 @@ describe 'homesick' do homesick.clone 'gitolite:pickled-vim.git' end - it 'should throw an exception when trying to clone a malformed uri ' \ - 'like malformed' do + it 'should throw an exception when trying to clone a malformed uri like malformed' do homesick.should_not_receive(:git_clone) expect { homesick.clone 'malformed' }.to raise_error end @@ -134,8 +131,7 @@ describe 'homesick' do end" end - expect_any_instance_of(Thor::Shell::Basic).to \ - receive(:say_status).with('eval', kind_of(Pathname)) + expect_any_instance_of(Thor::Shell::Basic).to receive(:say_status).with('eval', kind_of(Pathname)) homesick.rc castle castle.join('testing').should exist @@ -155,8 +151,7 @@ describe 'homesick' do end" end - expect_any_instance_of(Thor::Shell::Basic).to \ - receive(:say_status).with('eval skip', /not evaling.+/, :blue) + expect_any_instance_of(Thor::Shell::Basic).to receive(:say_status).with('eval skip', /not evaling.+/, :blue) homesick.rc castle 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 given_castle('castle_repo') text = Capture.stdout { homesick.status('castle_repo') } - text.should =~ Regexp.new('nothing to commit \(create\/copy files and ' \ - 'use "git add" to track\)$') + text.should =~ /nothing to commit \(create\/copy files and use "git add" to track\)$/ end it 'should say "Changes to be committed" when there are changes' do @@ -433,22 +427,18 @@ describe 'homesick' do end describe 'pull' do - it 'should perform a pull, submodule init and update when the given ' \ - 'castle exists' do + it 'should perform a pull, submodule init and update when the given castle exists' do given_castle('castle_repo') 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 update ' \ - '--init --recursive >/dev/null 2>&1') + homesick.stub(:system).once.with('git submodule --quiet update --init --recursive >/dev/null 2>&1') homesick.pull 'castle_repo' end - it 'should print an error message when trying to pull a non-existant ' \ - 'castle' do + it 'should print an error message when trying to pull a non-existant castle' do homesick.should_receive('say_status').once .with(:error, - Regexp.new('Could not pull castle_repo, expected ' \ - '/tmp/construct_container.* exist and contain dotfiles'), + %r{Could not pull castle_repo, expected /tmp/construct_container.* exist and contain dotfiles}, :red) expect { homesick.pull 'castle_repo' }.to raise_error(SystemExit) end @@ -461,8 +451,7 @@ describe 'homesick' do homesick.stub(:system).exactly(2).times .with('git submodule --quiet init') homesick.stub(:system).exactly(2).times - .with('git submodule --quiet update --init --recursive ' \ - '>/dev/null 2>&1') + .with('git submodule --quiet update --init --recursive >/dev/null 2>&1') Capture.stdout do Capture.stderr { homesick.invoke 'pull', [], all: true } end @@ -478,12 +467,10 @@ describe 'homesick' do homesick.push 'castle_repo' end - it 'should print an error message when trying to push a non-existant '\ - 'castle' do + it 'should print an error message when trying to push a non-existant castle' do homesick.should_receive('say_status').once .with(:error, - Regexp.new('Could not push castle_repo, expected ' \ - '/tmp/construct_container.* exist and contain dotfiles'), + %r{Could not push castle_repo, expected /tmp/construct_container.* exist and contain dotfiles}, :red) expect { homesick.push 'castle_repo' }.to raise_error(SystemExit) end @@ -595,8 +582,7 @@ describe 'homesick' do end end - it 'should remove the parent of a tracked file from the subdir_file ' \ - 'if the parent itself is tracked' do + it 'should remove the parent of a tracked file from the subdir_file if the parent itself is tracked' do castle = given_castle('castle_repo') some_nested_file = home.file('some/nested/file.txt') @@ -614,8 +600,7 @@ describe 'homesick' do describe 'destroy' do it 'removes the symlink files' do - expect_any_instance_of(Thor::Shell::Basic).to \ - receive(:yes?).and_return('y') + expect_any_instance_of(Thor::Shell::Basic).to receive(:yes?).and_return('y') given_castle('stronghold') some_rc_file = home.file '.some_rc_file' homesick.track(some_rc_file.to_s, 'stronghold') @@ -625,8 +610,7 @@ describe 'homesick' do end it 'deletes the cloned repository' do - expect_any_instance_of(Thor::Shell::Basic).to \ - receive(:yes?).and_return('y') + expect_any_instance_of(Thor::Shell::Basic).to receive(:yes?).and_return('y') castle = given_castle('stronghold') some_rc_file = home.file '.some_rc_file' 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 homesick.should_receive('say_status').once .with(:error, - Regexp.new('Could not cd castle_repo, expected ' \ - '/tmp/construct_container.* exist and contain dotfiles'), + %r{Could not cd castle_repo, expected /tmp/construct_container.* exist and contain dotfiles}, :red) expect { homesick.cd 'castle_repo' }.to raise_error(SystemExit) end @@ -666,14 +649,12 @@ describe 'homesick' do Capture.stdout { homesick.open 'castle_repo' } end - it 'returns an error message when the $EDITOR environment variable is ' \ - 'not set' do + it 'returns an error message when the $EDITOR environment variable is not set' do # Set the default editor to make sure it fails. ENV.stub(:[]).with('EDITOR').and_return(nil) homesick.should_receive('say_status').once .with(:error, - 'The $EDITOR environment variable must be set to use '\ - 'this command', + 'The $EDITOR environment variable must be set to use this command', :red) expect { homesick.open 'castle_repo' }.to raise_error(SystemExit) end @@ -683,8 +664,7 @@ describe 'homesick' do ENV.stub(:[]).with('EDITOR').and_return('vim') homesick.should_receive('say_status').once .with(:error, - Regexp.new('Could not open castle_repo, expected ' \ - '/tmp/construct_container.* exist and contain dotfiles'), + %r{Could not open castle_repo, expected /tmp/construct_container.* exist and contain dotfiles}, :red) expect { homesick.open 'castle_repo' }.to raise_error(SystemExit) end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index aed4112..e594897 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -24,8 +24,7 @@ RSpec.configure do |config| system 'git init >/dev/null 2>&1' system 'git config user.email "test@test.com"' system 'git config user.name "Test Name"' - system "git remote add origin " \ - "git://github.com/technicalpickles/#{name}.git >/dev/null 2>&1" + system "git remote add origin git://github.com/technicalpickles/#{name}.git >/dev/null 2>&1" if subdirs subdir_file = castle.join(Homesick::SUBDIR_FILENAME) subdirs.each do |subdir|