dotfile_linker 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.3
data/Gemfile CHANGED
@@ -2,6 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in dotfile_linker.gemspec
4
4
  gemspec
5
- gem 'rake', '~>0.9'
6
- gem 'rspec', '~>2.9'
7
- gem 'colorize'
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
- # DotfileLinker
1
+ # DotfileLinker [![Build Status](https://secure.travis-ci.org/dillonkearns/dotfile-linker.png?branch=master)](http://travis-ci.org/dillonkearns/dotfile-linker?branch=master) [![Dependency Status](https://gemnasium.com/dillonkearns/dotfile_linker.png)](https://gemnasium.com/dillonkearns/dotfile_linker) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/dillonkearns/dotfile-linker)
2
2
 
3
- A simple script to help you symlink your dotfiles to your home directory.
3
+ A simple command-line utility to help you symlink your dotfiles to your home directory. Just run `dotfile_linker` from
4
+ your dotfiles directory.
4
5
 
5
6
  ## Description
6
7
 
@@ -10,14 +11,13 @@ structure on how you manage your dotfiles.
10
11
 
11
12
  ## Installation
12
13
 
13
- Download the source, then run:
14
+ This gem is hosted on [rubygems.org](https://rubygems.org/gems/dotfile_linker), so simply install with:
14
15
 
15
- $ bundle install
16
- $ rake install
16
+ $ gem install dotfile_linker
17
17
 
18
18
  ## Usage
19
19
 
20
- Run `link_dotfiles` from your dotfiles directory. The script will then run through each file that isn't already
20
+ Run `dotfile_linker` from your dotfiles directory. The script will then run through each file that isn't already
21
21
  symlinked in your home directory and ask if you want to symlink it. The `-d` option cycles through existing symlinks in
22
22
  your home directory and asks if you'd like to remove them.
23
23
 
data/Rakefile CHANGED
@@ -2,3 +2,5 @@
2
2
  require "bundler/gem_tasks"
3
3
  require "rspec/core/rake_task"
4
4
  RSpec::Core::RakeTask.new("spec")
5
+
6
+ task :default => :spec
@@ -0,0 +1,6 @@
1
+ #! /usr/bin/ruby
2
+
3
+ $LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
4
+ require 'dotfile_linker'
5
+
6
+ DotfileLinker::Linker.new.start
@@ -4,10 +4,8 @@ require File.expand_path('../lib/dotfile_linker/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Dillon Kearns"]
6
6
  gem.email = ["dillon@dillonkearns.com"]
7
- gem.description = "This gem aims to provide a simple, unopinionated solution to managing symlinking your " \
8
- "dotfiles, allowing you to save them in an isolated, versioned directory and keep your home " \
9
- "directory clean. Similar tools exist, but tend to impose a structure on how you manage your dotfiles."
10
- gem.summary = "A simple script to help you symlink your dotfiles to your home directory."
7
+ gem.description = "A simple command-line utility to help you symlink your dotfiles to your home directory. Just run `dotfile_linker` from your dotfiles directory."
8
+ gem.summary = gem.description
11
9
  gem.homepage = "https://github.com/dillonkearns/dotfile-linker"
12
10
 
13
11
  gem.files = `git ls-files`.split($\)
@@ -18,7 +16,8 @@ Gem::Specification.new do |gem|
18
16
  gem.version = DotfileLinker::VERSION
19
17
 
20
18
  gem.required_ruby_version = ">=1.8.7"
21
- gem.add_runtime_dependency("colorize")
22
- gem.add_development_dependency("rake", "~>0.9")
23
- gem.add_development_dependency("rspec", "~>2.9")
19
+
20
+ gem.add_runtime_dependency "colorize", "~> 0.5.8"
21
+ gem.add_development_dependency "rake", "~> 0.9.2"
22
+ gem.add_development_dependency "rspec", "~> 2.11.0"
24
23
  end
@@ -1,69 +1,144 @@
1
1
  require 'dotfile_linker/version'
2
2
  require 'optparse'
3
+ require 'fileutils'
3
4
  require 'colorize'
4
5
 
5
6
  class String
6
7
  def human_filename
7
- self.gsub(%r{^(/[^/]+){2}}, '~')
8
+ self.sub(/^#{ ENV['HOME'] }/, '~')
8
9
  end
9
10
  end
10
11
 
11
12
  module DotfileLinker
12
- BLACKLIST = %w{ .git }
13
- @@options = {}
13
+ class InvalidDotfilesDir < RuntimeError; end
14
14
 
15
- def self.parse_options
16
- optparse = OptionParser.new do |opts|
17
- opts.on('-d', '--delete', 'Delete symlinks') { @@options[:delete_mode] = true }
18
- opts.on_tail('-v', '--version', 'Show version') { puts VERSION; exit }
19
- opts.on_tail('-h', '--help', 'Show this message') { puts opts; exit }
15
+ class Linker
16
+ BLACKLIST = %w{ .git }
17
+
18
+ def initialize
19
+ @options = {}
20
20
  end
21
- optparse.parse!
22
- end
23
21
 
24
- def self.exclude_file?(filename)
25
- filename =~ /^\.\.?$/ or BLACKLIST.include?(filename)
26
- end
22
+ def dotfiles_dir
23
+ @options[:path] || Dir.pwd
24
+ end
27
25
 
28
- def self.positive_user_response?
29
- case gets.strip
30
- when /^y/i
31
- true
32
- when /^n/i
33
- false
34
- else
35
- puts 'Exiting'
36
- exit
26
+ def home_dir
27
+ ENV['HOME']
37
28
  end
38
- end
39
29
 
40
- def self.link_file(filename)
41
- unless exclude_file?(filename)
42
- symlink_file = File.expand_path("~/#{ filename }")
43
- actual_file = File.expand_path(filename)
44
- if @@options[:delete_mode]
45
- if File.symlink?(symlink_file)
46
- puts "delete symlink #{ symlink_file.human_filename.magenta }? (y/n)"
47
- File.delete(symlink_file) if positive_user_response?
48
- end
30
+ def ignore_file_name
31
+ File.expand_path("~/.dotfile_linker_ignore")
32
+ end
33
+
34
+ def raise_if_home_and_dotfiles_dir_match
35
+ if File.expand_path(home_dir) == File.expand_path(dotfiles_dir)
36
+ raise InvalidDotfilesDir, "Please specify your dotfiles directory by running `link_dotfiles` from that path, or providing a --path flag".red
37
+ end
38
+ end
39
+
40
+ def user_response(message)
41
+ puts message
42
+ case gets.strip
43
+ when /^y/i
44
+ :yes
45
+ when /^n/i
46
+ :no
47
+ when /^i/i
48
+ :ignore
49
+ when /^q/i
50
+ :quit
49
51
  else
50
- unless File.symlink?(symlink_file)
51
- puts "link %s -> %s? (y/n)" % [symlink_file.human_filename.magenta, actual_file.human_filename.cyan]
52
- File.symlink(actual_file, symlink_file) if positive_user_response?
52
+ user_response("Please enter a valid response")
53
+ end
54
+ end
55
+
56
+ def user_response_or_exit(message)
57
+ response = user_response(message)
58
+ if response == :quit
59
+ puts "Exiting"
60
+ exit
61
+ end
62
+ response
63
+ end
64
+
65
+ def parse_options
66
+ optparse = OptionParser.new do |opts|
67
+ opts.on('-p', '--path PATH', String, 'Use [PATH] as dotfiles directory (instead of current directory)') { |path| @options[:path] = File.expand_path(path) }
68
+ opts.on_tail('-u', '--unlink', 'Unlink mode') { @options[:unlink_mode] = true }
69
+ opts.on_tail('-v', '--version', 'Show version') { puts VERSION; exit }
70
+ opts.on_tail('-h', '--help', 'Show this message') { puts opts; exit }
71
+ end
72
+ optparse.parse!
73
+ end
74
+
75
+ def ignore_list
76
+ @ignore_list ||=
77
+ begin
78
+ File.open(ignore_file_name, 'rb').lines.to_a.map(&:chomp)
79
+ rescue Errno::ENOENT
80
+ []
53
81
  end
82
+ end
83
+
84
+ def ignore_file(filename)
85
+ File.open(ignore_file_name, 'a') do |f|
86
+ f.puts filename
54
87
  end
55
88
  end
56
- end
57
89
 
58
- def self.link_files
59
- Dir.foreach(Dir.pwd) { |filename| link_file(filename) }
60
- end
90
+ def exclude_file?(filename)
91
+ filename =~ /^\.\.?$/ or BLACKLIST.include?(filename) or ignore_list.include?(filename)
92
+ end
93
+
94
+ def link_file(filename)
95
+ home_dir_file_path = File.expand_path("~/#{ filename }")
96
+ dotfiles_dir_file_path = File.expand_path("#{ dotfiles_dir }/#{ filename }")
97
+ unless File.symlink?(home_dir_file_path) || exclude_file?(filename)
98
+ case user_response_or_exit("move and link #{ home_dir_file_path.human_filename.magenta } -> #{ dotfiles_dir_file_path.human_filename.cyan }? (y/n/i[gnore])")
99
+ when :yes
100
+ FileUtils.mv(home_dir_file_path, dotfiles_dir_file_path, :verbose => true)
101
+ FileUtils.ln_s(dotfiles_dir_file_path, home_dir_file_path, :verbose => true)
102
+ when :ignore
103
+ ignore_file(filename)
104
+ puts "ignored #{filename.cyan}"
105
+ end
106
+ end
107
+ end
108
+
109
+ def link_files
110
+ Dir.foreach(home_dir) { |filename| link_file(filename) }
111
+ end
112
+
113
+ def unlink_file(filename)
114
+ home_dir_symlink_path = File.expand_path("~/#{ filename }")
115
+ dotfiles_dir_file_path = File.expand_path("#{ dotfiles_dir }/#{ filename }")
116
+ if File.symlink?(home_dir_symlink_path)
117
+ case user_response_or_exit("unlink #{ home_dir_symlink_path.human_filename.magenta } and restore #{ dotfiles_dir_file_path.human_filename.cyan }? (y/n)")
118
+ when :yes
119
+ FileUtils.rm(home_dir_symlink_path, :verbose => true)
120
+ FileUtils.mv(dotfiles_dir_file_path, home_dir_symlink_path, :verbose => true)
121
+ end
122
+ end
123
+ end
61
124
 
62
- def self.start
63
- parse_options
64
- link_files
65
- puts 'Done'
66
- rescue Interrupt
67
- # do nothing
125
+ def unlink_files
126
+ Dir.foreach(dotfiles_dir) { |filename| unlink_file(filename) }
127
+ end
128
+
129
+ def start
130
+ raise_if_home_and_dotfiles_dir_match
131
+ parse_options
132
+ if @options[:unlink_mode]
133
+ unlink_files
134
+ else
135
+ link_files
136
+ end
137
+ puts 'Finished'
138
+ rescue Interrupt
139
+ # do nothing
140
+ rescue InvalidDotfilesDir => e
141
+ puts e.message
142
+ end
68
143
  end
69
144
  end
@@ -1,3 +1,3 @@
1
1
  module DotfileLinker
2
- VERSION = "0.0.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -1,42 +1,180 @@
1
- require 'rspec'
1
+ require 'spec_helper'
2
2
  require 'dotfile_linker'
3
3
 
4
- describe DotfileLinker do
5
- describe ".exclude_file?" do
4
+ describe DotfileLinker::Linker do
5
+ before(:each) do
6
+ @linker = DotfileLinker::Linker.new
7
+ @linker.stub(:user_response).and_return(:yes)
8
+ DotfileLinker::Linker.any_instance.stub(:puts)
9
+ end
10
+
11
+ describe "#user_response" do
12
+ before do
13
+ @linker = DotfileLinker::Linker.new
14
+ end
15
+
16
+ it "returns expected symbols" do
17
+ values = { :yes => %w{y Y yes Yes},
18
+ :no => %w{n N no No},
19
+ :ignore => %w{i I ignore Ignore},
20
+ :quit => %w{q Q quit Quit} }
21
+ values.each do |k, v|
22
+ v.each do |response|
23
+ @linker.stub(:gets).and_return(response)
24
+ @linker.user_response('fake message').should == k
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ describe "#exclude_file?" do
6
31
  it "excludes files in blacklist" do
7
- %w{ . .. .git }.each { |filename| DotfileLinker.exclude_file?(filename).should be }
32
+ %w{ . .. .git }.each { |filename| @linker.exclude_file?(filename).should be }
8
33
  end
9
34
 
10
35
  it "doesn't exclude files prefixed with dot" do
11
- %w{ .bash_profile .emacs .gitconfig .tmux.conf }.each { |filename| DotfileLinker.exclude_file?(filename).should_not be }
36
+ %w{ .bash_profile .emacs .gitconfig .tmux.conf }.each { |filename| @linker.exclude_file?(filename).should_not be }
12
37
  end
13
38
 
14
39
  it "doesn't exclude files that aren't prefixed with dot" do
15
- ['my_script' 'sample.rb'].each { |filename| DotfileLinker.exclude_file?(filename).should_not be }
40
+ ['my_script' 'sample.rb'].each { |filename| @linker.exclude_file?(filename).should_not be }
41
+ end
42
+
43
+ it "excludes files in ignore list" do
44
+ @linker.stub(:ignore_list).and_return(%w{ignored_file .other_ignored_file})
45
+ @linker.exclude_file?('ignored_file').should be
46
+ @linker.exclude_file?('.other_ignored_file').should be
16
47
  end
17
48
  end
18
49
 
19
- describe ".link_file when symlink doesn't already exist" do
20
- before do
21
- DotfileLinker.stub!(:positive_user_response?).and_return(true)
22
- File.stub!(:symlink?).and_return(false)
50
+ describe "#ignore_list" do
51
+ it "excludes files which are in the .dotfiles_ignore file" do
52
+ File.should_receive(:open).with(File.expand_path("~/.dotfile_linker_ignore"), kind_of(String)).and_return(".ignored_file1\n.ignored_file2\n.ignored_file3\n")
53
+ @linker.ignore_list.should == %w[.ignored_file1 .ignored_file2 .ignored_file3]
54
+ end
55
+
56
+ it "returns [] when file does not exist" do
57
+ File.should_receive(:open).with(File.expand_path("~/.dotfile_linker_ignore"), kind_of(String)).and_raise(Errno::ENOENT)
58
+ @linker.ignore_list.should == []
59
+ end
60
+ end
23
61
 
62
+ describe "#ignore_file" do
63
+ it "should write a new ignore entry" do
64
+ file = mock('file')
65
+ File.should_receive(:open).with(@linker.ignore_file_name, 'a').and_yield(file)
66
+ file.should_receive(:puts).with('some_file')
67
+ @linker.ignore_file('some_file')
68
+ end
69
+ end
70
+
71
+ describe "#raise_if_home_and_dotfiles_dir_match" do
72
+ it "raises exception when home dir and dotfiles dir are the same" do
73
+ @linker.stub(:dotfiles_dir).and_return(@linker.home_dir)
74
+ expect { @linker.raise_if_home_and_dotfiles_dir_match }.to raise_error(DotfileLinker::InvalidDotfilesDir)
75
+ end
76
+ end
77
+
78
+ describe "#link_file" do
79
+ before do
24
80
  @bad_filenames = %w{ . .. .git }
25
81
  @good_filenames = %w{.bash_profile .bashrc .dotrc .emacs .gemrc .gitconfig .gitignore_global .irbrc .oh-my-zsh
26
82
  .pryrc .rvmrc .ssh .tmux.conf .zshrc .zshrc.pre-oh-my-zsh}
27
83
  end
28
84
 
29
- it "links accepted files to home directory" do
30
- @good_filenames.each do |filename|
31
- File.should_receive(:symlink).with("#{ Dir.pwd }/#{ filename }", "#{ Dir.home }/#{ filename }")
32
- DotfileLinker.link_file(filename)
85
+ describe "when the user ignores a file" do
86
+ before do
87
+ @linker.stub(:user_response).and_return(:ignore)
88
+ end
89
+
90
+ it "should call #ignore_file" do
91
+ @linker.should_receive(:ignore_file).with("file I want to ignore")
92
+ @linker.link_file("file I want to ignore")
93
+ end
94
+ end
95
+
96
+ describe "when file exists in ~/" do
97
+ before do
98
+ File.stub(:exist?).with(/^#{ ENV['HOME'] }/).and_return(true)
99
+ end
100
+
101
+ describe "and is a symlink" do
102
+ before do
103
+ File.stub(:symlink?).and_return(true)
104
+ end
105
+
106
+ it "doesn't attempt to move or symlink any files" do
107
+ FileUtils.should_not_receive(:ln_s)
108
+ FileUtils.should_not_receive(:mv)
109
+
110
+ @good_filenames.each do |filename|
111
+ @linker.link_file(filename)
112
+ end
113
+
114
+ @bad_filenames.each do |filename|
115
+ @linker.link_file(filename)
116
+ end
117
+ end
118
+ end
119
+
120
+ describe "and is not a symlink" do
121
+ before do
122
+ File.stub(:symlink?).and_return(false)
123
+ end
124
+
125
+ it "should move then symlinks accepted files" do
126
+ @good_filenames.each do |filename|
127
+ home_dir_file_path = "#{ ENV['HOME'] }/#{ filename }"
128
+ dotfiles_dir_file_path = "#{ @linker.dotfiles_dir }/#{ filename }"
129
+ FileUtils.should_receive(:mv).with(home_dir_file_path, dotfiles_dir_file_path, { :verbose => true }).ordered
130
+ FileUtils.should_receive(:ln_s).with(dotfiles_dir_file_path, home_dir_file_path, { :verbose => true }).ordered
131
+ @linker.link_file(filename)
132
+ end
133
+ end
134
+
135
+ it "shouldn't move or symlink blacklisted files" do
136
+ FileUtils.should_not_receive(:ln_s)
137
+ FileUtils.should_not_receive(:mv)
138
+ @bad_filenames.each do |filename|
139
+ @linker.link_file(filename)
140
+ end
141
+ end
33
142
  end
34
143
  end
144
+ end
145
+
146
+ describe "#unlink_file" do
147
+ [true, false].each do |home_dir_file_is_symlink|
148
+ describe "when symlink #{ "isn't" unless home_dir_file_is_symlink } in ~" do
149
+ it "should #{ "not" unless home_dir_file_is_symlink } remove symlink and move file" do
150
+ filename = "file_to_unlink"
151
+ home_dir_file_path = "#{ ENV['HOME'] }/#{ filename }"
152
+ dotfiles_dir_file_path = "#{ @linker.dotfiles_dir }/#{ filename }"
153
+
154
+ File.stub(:symlink?).with(home_dir_file_path).and_return(home_dir_file_is_symlink)
155
+ if home_dir_file_is_symlink
156
+ FileUtils.should_receive(:rm).with(home_dir_file_path, { :verbose => true }).ordered
157
+ FileUtils.should_receive(:mv).with(dotfiles_dir_file_path, home_dir_file_path, { :verbose => true }).ordered
158
+ else
159
+ FileUtils.should_not_receive(:rm)
160
+ FileUtils.should_not_receive(:mv)
161
+ end
162
+ @linker.unlink_file(filename)
163
+ end
164
+ end
165
+ end
166
+
167
+ describe "with negative response" do
168
+ before do
169
+ @linker.stub(:user_response).and_return(:no)
170
+ end
171
+
172
+ it "does not remove symlink or move file" do
173
+ File.stub(:symlink?).and_return(true)
174
+ FileUtils.should_not_receive(:rm)
175
+ FileUtils.should_not_receive(:mv)
35
176
 
36
- it "doesn't link blacklisted files" do
37
- @bad_filenames.each do |filename|
38
- File.should_not_receive(:symlink)
39
- DotfileLinker.link_file(filename)
177
+ @linker.unlink_file('some_file')
40
178
  end
41
179
  end
42
180
  end
@@ -47,7 +185,7 @@ describe DotfileLinker do
47
185
  end
48
186
 
49
187
  it "replaces home dir for long path" do
50
- File.expand_path("#{ Dir.home }/some/test/dir/.gitignore").human_filename.should == '~/some/test/dir/.gitignore'
188
+ File.expand_path("~/some/test/dir/.gitignore").human_filename.should == '~/some/test/dir/.gitignore'
51
189
  end
52
190
  end
53
191
  end
@@ -0,0 +1 @@
1
+ require 'rspec'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dotfile_linker
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
+ - 1
7
8
  - 0
8
9
  - 0
9
- - 2
10
- version: 0.0.2
10
+ version: 1.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dillon Kearns
@@ -15,72 +15,81 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-09-25 00:00:00 Z
18
+ date: 2012-10-07 00:00:00 -07:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  version_requirements: &id001 !ruby/object:Gem::Requirement
22
23
  none: false
23
24
  requirements:
24
- - - ">="
25
+ - - ~>
25
26
  - !ruby/object:Gem::Version
26
- hash: 3
27
+ hash: 27
27
28
  segments:
28
29
  - 0
29
- version: "0"
30
+ - 5
31
+ - 8
32
+ version: 0.5.8
33
+ requirement: *id001
30
34
  prerelease: false
31
- type: :runtime
32
35
  name: colorize
33
- requirement: *id001
36
+ type: :runtime
34
37
  - !ruby/object:Gem::Dependency
35
38
  version_requirements: &id002 !ruby/object:Gem::Requirement
36
39
  none: false
37
40
  requirements:
38
41
  - - ~>
39
42
  - !ruby/object:Gem::Version
40
- hash: 25
43
+ hash: 63
41
44
  segments:
42
45
  - 0
43
46
  - 9
44
- version: "0.9"
47
+ - 2
48
+ version: 0.9.2
49
+ requirement: *id002
45
50
  prerelease: false
46
- type: :development
47
51
  name: rake
48
- requirement: *id002
52
+ type: :development
49
53
  - !ruby/object:Gem::Dependency
50
54
  version_requirements: &id003 !ruby/object:Gem::Requirement
51
55
  none: false
52
56
  requirements:
53
57
  - - ~>
54
58
  - !ruby/object:Gem::Version
55
- hash: 17
59
+ hash: 35
56
60
  segments:
57
61
  - 2
58
- - 9
59
- version: "2.9"
62
+ - 11
63
+ - 0
64
+ version: 2.11.0
65
+ requirement: *id003
60
66
  prerelease: false
61
- type: :development
62
67
  name: rspec
63
- requirement: *id003
64
- description: This gem aims to provide a simple, unopinionated solution to managing symlinking your dotfiles, allowing you to save them in an isolated, versioned directory and keep your home directory clean. Similar tools exist, but tend to impose a structure on how you manage your dotfiles.
68
+ type: :development
69
+ description: A simple command-line utility to help you symlink your dotfiles to your home directory. Just run `dotfile_linker` from your dotfiles directory.
65
70
  email:
66
71
  - dillon@dillonkearns.com
67
72
  executables:
68
- - link_dotfiles
73
+ - dotfile_linker
69
74
  extensions: []
70
75
 
71
76
  extra_rdoc_files: []
72
77
 
73
78
  files:
74
79
  - .gitignore
80
+ - .rspec
81
+ - .travis.yml
75
82
  - Gemfile
76
83
  - LICENSE
77
84
  - README.md
78
85
  - Rakefile
79
- - bin/link_dotfiles
86
+ - bin/dotfile_linker
80
87
  - dotfile_linker.gemspec
81
88
  - lib/dotfile_linker.rb
82
89
  - lib/dotfile_linker/version.rb
83
90
  - spec/dotfile_linker_spec.rb
91
+ - spec/spec_helper.rb
92
+ has_rdoc: true
84
93
  homepage: https://github.com/dillonkearns/dotfile-linker
85
94
  licenses: []
86
95
 
@@ -112,9 +121,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
121
  requirements: []
113
122
 
114
123
  rubyforge_project:
115
- rubygems_version: 1.8.24
124
+ rubygems_version: 1.5.3
116
125
  signing_key:
117
126
  specification_version: 3
118
- summary: A simple script to help you symlink your dotfiles to your home directory.
127
+ summary: A simple command-line utility to help you symlink your dotfiles to your home directory. Just run `dotfile_linker` from your dotfiles directory.
119
128
  test_files:
120
129
  - spec/dotfile_linker_spec.rb
130
+ - spec/spec_helper.rb
data/bin/link_dotfiles DELETED
@@ -1,6 +0,0 @@
1
- #! /usr/bin/ruby
2
-
3
- $:.unshift(File.expand_path("../../lib", __FILE__))
4
- require 'dotfile_linker'
5
-
6
- DotfileLinker.start