7 Commits

Author SHA1 Message Date
Joshua Nichols
34ef4a4659 Regenerated gemspec for version 0.3.0 2010-04-01 00:15:54 -04:00
Joshua Nichols
4ccbd927fa Bumped to 0.3.0 2010-04-01 00:15:14 -04:00
Joshua Nichols
595c53370e Converted README to markdown. 2010-04-01 00:13:06 -04:00
Joshua Nichols
43facf1ec0 Renamed 'link' command to 'symlink' 2010-03-31 23:59:05 -04:00
Joshua Nichols
46b2cbfa3f Renamed symlink action to ln_s. 2010-03-31 23:57:18 -04:00
Joshua Nichols
cde7989e85 Fix conflict resolution when destination is a plain file (not a symlink). 2010-03-31 23:18:38 -04:00
Joshua Nichols
5db3048e71 Fix header in changelog 2010-03-19 00:35:10 -04:00
7 changed files with 31 additions and 17 deletions

View File

@@ -1,3 +1,8 @@
# 3.0.0
* Renamed 'link' to 'symlink'
* Fixed conflict resolution when symlink destination exists and is a normal file
# 2.0.0
* Better support for recognizing git urls (thanks jacobat!)
@@ -12,6 +17,6 @@
* Fixed linking, which tries to exclude . and .. from the list of files to
link (thanks Martinos!)
# 0.1.0
# 0.1.0
* Initial release

View File

@@ -1,14 +1,13 @@
= homesick
# homesick
A man's home (directory) is his castle, so don't leave home with out it.
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.
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.
We call a repository that is compatible with homesick to be a 'castle'. To act as a castle, a repository must be organized like so:
* Contains a 'home' directory
* 'home' contains any number of files and directories that begin with '.'
* Optionally has a README file
To get started, install homesick first:
@@ -24,13 +23,17 @@ Alternatively, if it's on github, there's a slightly shorter way:
With the castle cloned, you can now link its contents into your home dir:
homesick link pickled-vim
homesick symlink pickled-vim
If you're not sure what castles you have around, you can easily list them:
homesick list
== Note on Patches/Pull Requests
Not sure what else homesick has up its sleeve? There's always the built in help:
homesick help
## Note on Patches/Pull Requests
* Fork the project.
* Make your feature addition or bug fix.
@@ -38,6 +41,6 @@ If you're not sure what castles you have around, you can easily list them:
* Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
* Send me a pull request. Bonus points for topic branches.
== Copyright
## Copyright
Copyright (c) 2010 Joshua Nichols. See LICENSE for details.

View File

@@ -22,7 +22,7 @@ Jeweler::Tasks.new do |gem|
gem.email = "josh@technicalpickles.com"
gem.homepage = "http://github.com/technicalpickles/homesick"
gem.authors = ["Joshua Nichols"]
gem.version = "0.2.0"
gem.version = "0.3.0"
# Have dependencies? Add them to Gemfile
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings

View File

@@ -2,7 +2,7 @@
require 'pathname'
lib = Pathname.new(__FILE__).dirname.join('..', 'lib').expand_path
$LOAD_PATH.unshift.unshift lib.to_s unless $LOAD_PATH.include?(lib.to_s)
$LOAD_PATH.unshift lib.to_s
require 'homesick'

View File

@@ -5,11 +5,11 @@
Gem::Specification.new do |s|
s.name = %q{homesick}
s.version = "0.2.0"
s.version = "0.3.0"
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Joshua Nichols"]
s.date = %q{2010-03-19}
s.date = %q{2010-04-01}
s.default_executable = %q{homesick}
s.description = %q{
A mans home (directory) is his castle, so dont leave home with out it.
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
s.extra_rdoc_files = [
"ChangeLog.markdown",
"LICENSE",
"README.rdoc"
"README.markdown"
]
s.files = [
".document",
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
"ChangeLog.markdown",
"Gemfile",
"LICENSE",
"README.rdoc",
"README.markdown",
"Rakefile",
"bin/homesick",
"homesick.gemspec",

View File

@@ -28,8 +28,8 @@ class Homesick < Thor
end
end
desc "link NAME", "Symlinks all dotfiles from the specified castle"
def link(home)
desc "symlink NAME", "Symlinks all dotfiles from the specified castle"
def symlink(home)
unless castle_dir(home).exist?
say_status :error, "Castle #{home} did not exist in #{repos_dir}", :red
@@ -44,7 +44,7 @@ class Homesick < Thor
inside user_dir do
adjusted_path = (user_dir + path).basename
symlink absolute_path, adjusted_path
ln_s absolute_path, adjusted_path
end
end
end

View File

@@ -18,7 +18,7 @@ class Homesick
end
end
def symlink(source, destination, config = {})
def ln_s(source, destination, config = {})
destination = Pathname.new(destination)
if destination.symlink?
@@ -31,6 +31,12 @@ class Homesick
system "ln -sf #{source} #{destination}" unless options[:pretend]
end
end
elsif destination.exist?
say_status :conflict, "#{destination} exists", :red unless options[:quiet]
if shell.file_collision(destination) { source }
system "ln -sf #{source} #{destination}" unless options[:pretend]
end
else
say_status :symlink, "#{source.expand_path} to #{destination.expand_path}", :green unless options[:quiet]
system "ln -s #{source} #{destination}" unless options[:pretend]