diff --git a/lib/homesick.rb b/lib/homesick.rb index cc03e81..6c82838 100644 --- a/lib/homesick.rb +++ b/lib/homesick.rb @@ -10,14 +10,14 @@ class Homesick < Thor add_runtime_options! GITHUB_NAME_REPO_PATTERN = /\A([A-Za-z_-]+\/[A-Za-z_-]+)\Z/ - SUBDIR_FILENAME = ".homesick_subdir" + SUBDIR_FILENAME = '.homesick_subdir' def initialize(args=[], options={}, config={}) super self.shell = Homesick::Shell.new end - desc "clone URI", "Clone +uri+ as a castle for homesick" + desc 'clone URI', 'Clone +uri+ as a castle for homesick' def clone(uri) inside repos_dir do destination = nil @@ -54,20 +54,20 @@ class Homesick < Thor if homesickrc.exist? proceed = shell.yes?("#{uri} has a .homesickrc. Proceed with evaling it? (This could be destructive)") if proceed - shell.say_status "eval", homesickrc + shell.say_status 'eval', homesickrc inside destination do eval homesickrc.read, binding, homesickrc.expand_path 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 end - desc "pull CASTLE", "Update the specified castle" - method_option :all, :type => :boolean, :default => false, :required => false, :desc => "Update all cloned castles" - def pull(name="") + desc 'pull CASTLE', 'Update the specified castle' + method_option :all, :type => :boolean, :default => false, :required => false, :desc => 'Update all cloned castles' + def pull(name='') if options[:all] inside_each_castle do |castle| shell.say castle.to_s.gsub(repos_dir.to_s + '/', '') + ':' @@ -79,22 +79,22 @@ class Homesick < Thor end - desc "commit CASTLE", "Commit the specified castle's changes" + desc 'commit CASTLE', "Commit the specified castle's changes" def commit(name) commit_castle name end - desc "push CASTLE", "Push the specified castle" + desc 'push CASTLE', 'Push the specified castle' def push(name) push_castle name end - desc "symlink CASTLE", "Symlinks all dotfiles from the specified castle" - method_option :force, :default => false, :desc => "Overwrite existing conflicting symlinks without prompting." + desc 'symlink CASTLE', 'Symlinks all dotfiles from the specified castle' + method_option :force, :default => false, :desc => 'Overwrite existing conflicting symlinks without prompting.' def symlink(name) - check_castle_existance(name, "symlink") + check_castle_existance(name, 'symlink') inside castle_dir(name) do subdirs = subdirs(name) @@ -109,7 +109,7 @@ class Homesick < Thor end end - desc "track FILE CASTLE", "add a file to a castle" + desc 'track FILE CASTLE', 'add a file to a castle' def track(file, castle) castle = Pathname.new(castle) file = Pathname.new(file.chomp('/')) @@ -154,19 +154,19 @@ class Homesick < Thor end end - desc "list", "List cloned castles" + desc 'list', 'List cloned castles' def list inside_each_castle do |castle| say_status castle.relative_path_from(repos_dir).to_s, `git config remote.origin.url`.chomp, :cyan end end - desc "generate PATH", "generate a homesick-ready git repo at PATH" + desc 'generate PATH', 'generate a homesick-ready git repo at PATH' def generate(castle) castle = Pathname.new(castle).expand_path github_user = `git config github.user`.chomp - github_user = nil if github_user == "" + github_user = nil if github_user == '' github_repo = castle.basename empty_directory castle @@ -177,7 +177,7 @@ class Homesick < Thor git_remote_add 'origin', url end - empty_directory "home" + empty_directory 'home' end end @@ -222,7 +222,7 @@ class Homesick < Thor end def update_castle(castle) - check_castle_existance(castle, "pull") + check_castle_existance(castle, 'pull') inside repos_dir.join(castle) do git_pull git_submodule_init @@ -231,14 +231,14 @@ class Homesick < Thor end def commit_castle(castle) - check_castle_existance(castle, "commit") + check_castle_existance(castle, 'commit') inside repos_dir.join(castle) do git_commit_all end end def push_castle(castle) - check_castle_existance(castle, "push") + check_castle_existance(castle, 'push') inside repos_dir.join(castle) do git_push end @@ -308,7 +308,7 @@ class Homesick < Thor def symlink_each(castle, basedir, subdirs) absolute_basedir = Pathname.new(basedir).expand_path inside basedir do - files = Pathname.glob('{.*,*}').reject{|a| [".", ".."].include?(a.to_s)} + files = Pathname.glob('{.*,*}').reject{|a| ['.', '..'].include?(a.to_s)} files.each do |path| absolute_path = path.expand_path castle_home = castle_dir(castle) diff --git a/lib/homesick/actions.rb b/lib/homesick/actions.rb index 86411a6..3911fdd 100644 --- a/lib/homesick/actions.rb +++ b/lib/homesick/actions.rb @@ -16,13 +16,13 @@ class Homesick end end - def git_init(path = ".") + def git_init(path = '.') path = Pathname.new(path) inside path do unless path.join('.git').exist? say_status 'git init', '' unless options[:quiet] - system "git init >/dev/null" unless options[:pretend] + system 'git init >/dev/null' unless options[:pretend] else say_status 'git init', 'already initialized', :blue unless options[:quiet] end @@ -43,27 +43,27 @@ class Homesick def git_submodule_init(config = {}) say_status 'git submodule', 'init', :green unless options[:quiet] - system "git submodule --quiet init" unless options[:pretend] + system 'git submodule --quiet init' unless options[:pretend] end 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 = {}) say_status 'git pull', '', :green unless options[:quiet] - system "git pull --quiet" unless options[:pretend] + system 'git pull --quiet' unless options[:pretend] end def git_push(config = {}) say_status 'git push', '', :green unless options[:quiet] - system "git push" unless options[:pretend] + system 'git push' unless options[:pretend] end def git_commit_all(config = {}) say_status 'git commit all', '', :green unless options[:quiet] - system "git commit -v -a" unless options[:pretend] + system 'git commit -v -a' unless options[:pretend] end def git_add(file, config = {}) diff --git a/spec/homesick_spec.rb b/spec/homesick_spec.rb index 50fbf1a..bc4e7c4 100644 --- a/spec/homesick_spec.rb +++ b/spec/homesick_spec.rb @@ -1,236 +1,236 @@ require 'spec_helper' -describe "homesick" do +describe 'homesick' do let(:home) { create_construct } after { home.destroy! } - let(:castles) { home.directory(".homesick/repos") } + let(:castles) { home.directory('.homesick/repos') } let(:homesick) { Homesick.new } before { homesick.stub!(:repos_dir).and_return(castles) } - describe "clone" do - context "of a file" do - it "should symlink existing directories" do + describe 'clone' do + context 'of a file' do + it 'should symlink existing directories' do somewhere = create_construct local_repo = somewhere.directory('wtf') homesick.clone local_repo - castles.join("wtf").readlink.should == local_repo + castles.join('wtf').readlink.should == local_repo end - context "when it exists in a repo directory" do + context 'when it exists in a repo directory' do before do - existing_castle = given_castle("existing_castle") + existing_castle = given_castle('existing_castle') @existing_dir = existing_castle.parent end - it "should not symlink" do + it 'should not symlink' do homesick.should_not_receive(:git_clone) homesick.clone @existing_dir.to_s rescue nil end - it "should raise an error" do + it 'should raise an error' do expect { homesick.clone @existing_dir.to_s }.to raise_error(/already cloned/i) end end end - it "should clone git repo like file:///path/to.git" do - bare_repo = File.join(create_construct.to_s, "dotfiles.git") + it 'should clone git repo like file:///path/to.git' do + bare_repo = File.join(create_construct.to_s, 'dotfiles.git') system "git init --bare #{bare_repo} >/dev/null 2>&1" homesick.clone "file://#{bare_repo}" File.directory?(File.join(home.to_s, '.homesick/repos/dotfiles')).should be_true end - it "should clone git repo like git://host/path/to.git" do + it 'should clone git repo like git://host/path/to.git' do homesick.should_receive(:git_clone).with('git://github.com/technicalpickles/pickled-vim.git') - homesick.clone "git://github.com/technicalpickles/pickled-vim.git" + homesick.clone 'git://github.com/technicalpickles/pickled-vim.git' end - it "should clone git repo like git@host:path/to.git" do + it 'should clone git repo like git@host:path/to.git' do homesick.should_receive(:git_clone).with('git@github.com:technicalpickles/pickled-vim.git') homesick.clone 'git@github.com:technicalpickles/pickled-vim.git' end - it "should clone git repo like http://host/path/to.git" do + it 'should clone git repo like http://host/path/to.git' do homesick.should_receive(:git_clone).with('http://github.com/technicalpickles/pickled-vim.git') homesick.clone 'http://github.com/technicalpickles/pickled-vim.git' end - it "should clone git repo like http://host/path/to" do + it 'should clone git repo like http://host/path/to' do homesick.should_receive(:git_clone).with('http://github.com/technicalpickles/pickled-vim') homesick.clone 'http://github.com/technicalpickles/pickled-vim' end - it "should clone git repo like host-alias:repos.git" do + it 'should clone git repo like host-alias:repos.git' do homesick.should_receive(:git_clone).with('gitolite:pickled-vim.git') homesick.clone 'gitolite:pickled-vim.git' end - it "should not try to clone a malformed uri like malformed" do + it 'should not try to clone a malformed uri like malformed' do homesick.should_not_receive(:git_clone) homesick.clone 'malformed' rescue nil 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 expect { homesick.clone 'malformed' }.to raise_error end - it "should clone a github repo" do + it 'should clone a github repo' do homesick.should_receive(:git_clone).with('git://github.com/wfarr/dotfiles.git', :destination => Pathname.new('wfarr/dotfiles')) - homesick.clone "wfarr/dotfiles" + homesick.clone 'wfarr/dotfiles' end end - describe "symlink" do - let(:castle) { given_castle("glencairn") } + describe 'symlink' do + let(:castle) { given_castle('glencairn') } - it "links dotfiles from a castle to the home folder" do - dotfile = castle.file(".some_dotfile") + it 'links dotfiles from a castle to the home folder' do + dotfile = castle.file('.some_dotfile') - homesick.symlink("glencairn") + homesick.symlink('glencairn') - home.join(".some_dotfile").readlink.should == dotfile + home.join('.some_dotfile').readlink.should == dotfile end - it "links non-dotfiles from a castle to the home folder" do - dotfile = castle.file("bin") + it 'links non-dotfiles from a castle to the home folder' do + dotfile = castle.file('bin') - homesick.symlink("glencairn") + homesick.symlink('glencairn') - home.join("bin").readlink.should == dotfile + home.join('bin').readlink.should == dotfile end - context "when forced" do + context 'when forced' do let(:homesick) { Homesick.new [], :force => true } - it "can override symlinks to directories" do + it 'can override symlinks to directories' do somewhere_else = create_construct - existing_dotdir_link = home.join(".vim") + existing_dotdir_link = home.join('.vim') FileUtils.ln_s somewhere_else, existing_dotdir_link - dotdir = castle.directory(".vim") + dotdir = castle.directory('.vim') - homesick.symlink("glencairn") + homesick.symlink('glencairn') existing_dotdir_link.readlink.should == dotdir end - it "can override existing directory" do + it 'can override existing directory' do somewhere_else = create_construct - existing_dotdir = home.directory(".vim") + existing_dotdir = home.directory('.vim') - dotdir = castle.directory(".vim") + dotdir = castle.directory('.vim') - homesick.symlink("glencairn") + homesick.symlink('glencairn') existing_dotdir.readlink.should == dotdir end end context "with '.config' in .homesick_subdir" do - let(:castle) { given_castle("glencairn", [".config"]) } - it "can symlink in sub directory" do - dotdir = castle.directory(".config") - dotfile = dotdir.file(".some_dotfile") + let(:castle) { given_castle('glencairn', ['.config']) } + it 'can symlink in sub directory' do + dotdir = castle.directory('.config') + dotfile = dotdir.file('.some_dotfile') - homesick.symlink("glencairn") + homesick.symlink('glencairn') - home_dotdir = home.join(".config") + home_dotdir = home.join('.config') home_dotdir.symlink?.should be == false - home_dotdir.join(".some_dotfile").readlink.should == dotfile + home_dotdir.join('.some_dotfile').readlink.should == dotfile end end context "with '.config/appA' in .homesick_subdir" do - let(:castle) { given_castle("glencairn", [".config/appA"]) } - it "can symlink in nested sub directory" do - dotdir = castle.directory(".config").directory("appA") - dotfile = dotdir.file(".some_dotfile") + let(:castle) { given_castle('glencairn', ['.config/appA']) } + it 'can symlink in nested sub directory' do + dotdir = castle.directory('.config').directory('appA') + dotfile = dotdir.file('.some_dotfile') - homesick.symlink("glencairn") + homesick.symlink('glencairn') - home_dotdir = home.join(".config").join("appA") + home_dotdir = home.join('.config').join('appA') home_dotdir.symlink?.should be == false - home_dotdir.join(".some_dotfile").readlink.should == dotfile + home_dotdir.join('.some_dotfile').readlink.should == dotfile end end context "with '.config' and '.config/appA' in .homesick_subdir" do - let(:castle) { given_castle("glencairn", [".config", ".config/appA"]) } - it "can symlink under both of .config and .config/appA" do - config_dir = castle.directory(".config") - config_dotfile = config_dir.file(".some_dotfile") - appA_dir = config_dir.directory("appA") - appA_dotfile = appA_dir.file(".some_appfile") + let(:castle) { given_castle('glencairn', ['.config', '.config/appA']) } + it 'can symlink under both of .config and .config/appA' do + config_dir = castle.directory('.config') + config_dotfile = config_dir.file('.some_dotfile') + appA_dir = config_dir.directory('appA') + appA_dotfile = appA_dir.file('.some_appfile') - homesick.symlink("glencairn") + homesick.symlink('glencairn') - home_config_dir = home.join(".config") - home_appA_dir = home_config_dir.join("appA") + home_config_dir = home.join('.config') + home_appA_dir = home_config_dir.join('appA') home_config_dir.symlink?.should be == false - home_config_dir.join(".some_dotfile").readlink.should be == config_dotfile + home_config_dir.join('.some_dotfile').readlink.should be == config_dotfile home_appA_dir.symlink?.should be == false - home_appA_dir.join(".some_appfile").readlink.should == appA_dotfile + home_appA_dir.join('.some_appfile').readlink.should == appA_dotfile end end end - describe "list" do - it "should say each castle in the castle directory" do + describe 'list' do + it 'should say each castle in the castle directory' do given_castle('zomg') given_castle('wtf/zomg') - homesick.should_receive(:say_status).with("zomg", "git://github.com/technicalpickles/zomg.git", :cyan) - homesick.should_receive(:say_status).with("wtf/zomg", "git://github.com/technicalpickles/zomg.git", :cyan) + homesick.should_receive(:say_status).with('zomg', 'git://github.com/technicalpickles/zomg.git', :cyan) + homesick.should_receive(:say_status).with('wtf/zomg', 'git://github.com/technicalpickles/zomg.git', :cyan) homesick.list end end - describe "pull" do + describe 'pull' do - xit "needs testing" + xit 'needs testing' - describe "--all" do - xit "needs testing" + describe '--all' do + xit 'needs testing' end end - describe "commit" do + describe 'commit' do - xit "needs testing" + xit 'needs testing' end - describe "push" do + describe 'push' do - xit "needs testing" + xit 'needs testing' end - describe "track" do - it "should move the tracked file into the castle" do + describe 'track' do + it 'should move the tracked file into the castle' do castle = given_castle('castle_repo') some_rc_file = home.file '.some_rc_file' homesick.track(some_rc_file.to_s, 'castle_repo') - tracked_file = castle.join(".some_rc_file") + tracked_file = castle.join('.some_rc_file') tracked_file.should exist some_rc_file.readlink.should == tracked_file @@ -258,7 +258,7 @@ describe "homesick" do some_nested_dir.realpath.should == tracked_file.realpath end - describe "subdir_file" do + describe 'subdir_file' do it 'should add the nested files parent to the subdir_file' do castle = given_castle('castle_repo') diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1c78cf3..97110d7 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -20,7 +20,7 @@ RSpec.configure do |config| name = Pathname.new(path).basename castles.directory(path) do |castle| Dir.chdir(castle) do - system "git init >/dev/null 2>&1" + system 'git init >/dev/null 2>&1' system "git remote add origin git://github.com/technicalpickles/#{name}.git >/dev/null 2>&1" if subdirs then subdir_file = castle.join(Homesick::SUBDIR_FILENAME) @@ -28,7 +28,7 @@ RSpec.configure do |config| system "echo #{subdir} >> #{subdir_file}" end end - return castle.directory("home") + return castle.directory('home') end end end