Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
093db8bdac | ||
|
|
04602efd6e | ||
|
|
3265de0c1d | ||
|
|
e4a428e0c5 | ||
|
|
6cc28450a4 | ||
|
|
a0c7fbacb7 | ||
|
|
b750094934 | ||
|
|
d953a964cd | ||
|
|
aa95ffac82 | ||
|
|
9c345828b0 | ||
|
|
59c137c653 | ||
|
|
3d405542af | ||
|
|
88ff4b85ce | ||
|
|
461ac5f226 | ||
|
|
a7d2d0a3f3 |
2
Rakefile
2
Rakefile
@@ -22,7 +22,7 @@ Jeweler::Tasks.new do |gem|
|
|||||||
gem.email = ["josh@technicalpickles.com", "info@muratayusuke.com"]
|
gem.email = ["josh@technicalpickles.com", "info@muratayusuke.com"]
|
||||||
gem.homepage = "http://github.com/technicalpickles/homesick"
|
gem.homepage = "http://github.com/technicalpickles/homesick"
|
||||||
gem.authors = ["Joshua Nichols", "Yusuke Murata"]
|
gem.authors = ["Joshua Nichols", "Yusuke Murata"]
|
||||||
gem.version = "0.9.4"
|
gem.version = "0.9.6"
|
||||||
gem.license = "MIT"
|
gem.license = "MIT"
|
||||||
# Have dependencies? Add them to Gemfile
|
# Have dependencies? Add them to Gemfile
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.name = "homesick"
|
s.name = "homesick"
|
||||||
s.version = "0.9.4"
|
s.version = "0.9.6"
|
||||||
|
|
||||||
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
||||||
s.authors = ["Joshua Nichols", "Yusuke Murata"]
|
s.authors = ["Joshua Nichols", "Yusuke Murata"]
|
||||||
s.date = "2013-07-31"
|
s.date = "2013-10-18"
|
||||||
s.description = "\n A man's home (directory) is his castle, so don't leave home with out it.\n\n Homesick is sorta like rip, but for dotfiles. It uses git to clone a repository containing dotfiles, and saves them in ~/.homesick. It then allows you to symlink all the dotfiles into place with a single command. \n\n "
|
s.description = "\n A man's home (directory) is his castle, so don't leave home with out it.\n\n Homesick is sorta like rip, but for dotfiles. It uses git to clone a repository containing dotfiles, and saves them in ~/.homesick. It then allows you to symlink all the dotfiles into place with a single command. \n\n "
|
||||||
s.email = ["josh@technicalpickles.com", "info@muratayusuke.com"]
|
s.email = ["josh@technicalpickles.com", "info@muratayusuke.com"]
|
||||||
s.executables = ["homesick"]
|
s.executables = ["homesick"]
|
||||||
@@ -39,11 +39,11 @@ Gem::Specification.new do |s|
|
|||||||
s.homepage = "http://github.com/technicalpickles/homesick"
|
s.homepage = "http://github.com/technicalpickles/homesick"
|
||||||
s.licenses = ["MIT"]
|
s.licenses = ["MIT"]
|
||||||
s.require_paths = ["lib"]
|
s.require_paths = ["lib"]
|
||||||
s.rubygems_version = "2.0.3"
|
s.rubygems_version = "1.8.23"
|
||||||
s.summary = "A man's home is his castle. Never leave your dotfiles behind."
|
s.summary = "A man's home is his castle. Never leave your dotfiles behind."
|
||||||
|
|
||||||
if s.respond_to? :specification_version then
|
if s.respond_to? :specification_version then
|
||||||
s.specification_version = 4
|
s.specification_version = 3
|
||||||
|
|
||||||
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
||||||
s.add_runtime_dependency(%q<thor>, [">= 0.14.0"])
|
s.add_runtime_dependency(%q<thor>, [">= 0.14.0"])
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class Homesick < Thor
|
|||||||
|
|
||||||
add_runtime_options!
|
add_runtime_options!
|
||||||
|
|
||||||
GITHUB_NAME_REPO_PATTERN = /\A([A-Za-z_-]+\/[A-Za-z_-]+)\Z/
|
GITHUB_NAME_REPO_PATTERN = /\A([A-Za-z0-9_-]+\/[A-Za-z0-9_-]+)\Z/
|
||||||
SUBDIR_FILENAME = '.homesick_subdir'
|
SUBDIR_FILENAME = '.homesick_subdir'
|
||||||
|
|
||||||
DEFAULT_CASTLE_NAME = 'dotfiles'
|
DEFAULT_CASTLE_NAME = 'dotfiles'
|
||||||
@@ -33,7 +33,7 @@ class Homesick < Thor
|
|||||||
|
|
||||||
ln_s uri, destination
|
ln_s uri, destination
|
||||||
elsif uri =~ GITHUB_NAME_REPO_PATTERN
|
elsif uri =~ GITHUB_NAME_REPO_PATTERN
|
||||||
destination = Pathname.new($1)
|
destination = Pathname.new(uri).basename
|
||||||
git_clone "https://github.com/#{$1}.git", :destination => destination
|
git_clone "https://github.com/#{$1}.git", :destination => destination
|
||||||
elsif uri =~ /%r([^%r]*?)(\.git)?\Z/
|
elsif uri =~ /%r([^%r]*?)(\.git)?\Z/
|
||||||
destination = Pathname.new($1)
|
destination = Pathname.new($1)
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class Homesick
|
|||||||
|
|
||||||
def git_add(file, config = {})
|
def git_add(file, config = {})
|
||||||
say_status 'git add file', '', :green unless options[:quiet]
|
say_status 'git add file', '', :green unless options[:quiet]
|
||||||
system "git add #{file}" unless options[:pretend]
|
system "git add '#{file}'" unless options[:pretend]
|
||||||
end
|
end
|
||||||
|
|
||||||
def git_status(config = {})
|
def git_status(config = {})
|
||||||
@@ -89,11 +89,11 @@ class Homesick
|
|||||||
say_status :conflict, "#{destination} exists", :red unless options[:quiet]
|
say_status :conflict, "#{destination} exists", :red unless options[:quiet]
|
||||||
|
|
||||||
if options[:force] || shell.file_collision(destination) { source }
|
if options[:force] || shell.file_collision(destination) { source }
|
||||||
system "mv #{source} #{destination}" unless options[:pretend]
|
system "mv '#{source}' '#{destination}'" unless options[:pretend]
|
||||||
end
|
end
|
||||||
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]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -120,19 +120,19 @@ class Homesick
|
|||||||
say_status :conflict, "#{destination} exists and points to #{destination.readlink}", :red unless options[:quiet]
|
say_status :conflict, "#{destination} exists and points to #{destination.readlink}", :red unless options[:quiet]
|
||||||
|
|
||||||
if options[:force] || shell.file_collision(destination) { source }
|
if options[:force] || shell.file_collision(destination) { source }
|
||||||
system "ln -nsf #{source} #{destination}" unless options[:pretend]
|
system "ln -nsf '#{source}' '#{destination}'" unless options[:pretend]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elsif destination.exist?
|
elsif destination.exist?
|
||||||
say_status :conflict, "#{destination} exists", :red unless options[:quiet]
|
say_status :conflict, "#{destination} exists", :red unless options[:quiet]
|
||||||
|
|
||||||
if options[:force] || shell.file_collision(destination) { source }
|
if options[:force] || shell.file_collision(destination) { source }
|
||||||
system "rm -rf #{destination}" unless options[:pretend]
|
system "rm -rf '#{destination}'" unless options[:pretend]
|
||||||
system "ln -sf #{source} #{destination}" unless options[:pretend]
|
system "ln -sf '#{source}' '#{destination}'" unless options[:pretend]
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
say_status :symlink, "#{source.expand_path} to #{destination.expand_path}", :green unless options[:quiet]
|
say_status :symlink, "#{source.expand_path} to #{destination.expand_path}", :green unless options[:quiet]
|
||||||
system "ln -s #{source} #{destination}" unless options[:pretend]
|
system "ln -s '#{source}' '#{destination}'" unless options[:pretend]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ describe 'homesick' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should clone a github repo' do
|
it 'should clone a github repo' do
|
||||||
homesick.should_receive(:git_clone).with('https://github.com/wfarr/dotfiles.git', :destination => Pathname.new('wfarr/dotfiles'))
|
homesick.should_receive(:git_clone).with('https://github.com/wfarr/dotfiles.git', :destination => Pathname.new('dotfiles'))
|
||||||
|
|
||||||
homesick.clone 'wfarr/dotfiles'
|
homesick.clone 'wfarr/dotfiles'
|
||||||
end
|
end
|
||||||
@@ -397,6 +397,19 @@ describe 'homesick' do
|
|||||||
some_rc_file.readlink.should == tracked_file
|
some_rc_file.readlink.should == tracked_file
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should handle files with parens' do
|
||||||
|
castle = given_castle('castle_repo')
|
||||||
|
|
||||||
|
some_rc_file = home.file 'Default (Linux).sublime-keymap'
|
||||||
|
|
||||||
|
homesick.track(some_rc_file.to_s, 'castle_repo')
|
||||||
|
|
||||||
|
tracked_file = castle.join('Default (Linux).sublime-keymap')
|
||||||
|
tracked_file.should exist
|
||||||
|
|
||||||
|
some_rc_file.readlink.should == tracked_file
|
||||||
|
end
|
||||||
|
|
||||||
it 'should track a file in nested folder structure' do
|
it 'should track a file in nested folder structure' do
|
||||||
castle = given_castle('castle_repo')
|
castle = given_castle('castle_repo')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user