dit 0.2.3 → 0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dit +1 -1
  3. data/lib/dit/cmd.rb +23 -0
  4. data/lib/dit.rb +33 -6
  5. metadata +3 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3c4c89fb99119f2cfd0a0d85295b43d502f3221
4
- data.tar.gz: 129081c7feed5a0c291afd6c3a1c2b61343441fe
3
+ metadata.gz: 842ec58e97f7f0b07c8d2d246fccf573f4414675
4
+ data.tar.gz: 9d8810fca2dee2624ba6f0c30c245cb199a7a32b
5
5
  SHA512:
6
- metadata.gz: d1cd1d7ee772cf636c6e90f1e69f1f6e4d304f4f0ba8f96ba8ed345a5570bd7960e6abb8ce91008e8c9fc83634fc04fb1782d85b3221d0e167d51889a727b5db
7
- data.tar.gz: 334f0e4709b9e9a97f43932d6d1d3259311d125e2e59be1750da8cd3fff53faaf96cc1d85bbcf90f2aaef1a5aee2c9ba16229abd09a08b20dde6ba77a034b9d8
6
+ metadata.gz: 5aba260ee163c1120040d36fe400994645eaa2decca5e399f4b9d6f085175257bb99a0203314ff2ed2897dd8aa9b76550b097de438e7098ee9462e752ce1700d
7
+ data.tar.gz: 939a7a10e38c2fae3e510be92ab8c9ee07862fd000a926c760368c67f45f55d8b3792f543dc396534a9b0968d4cf30776269e0087f2964271802c08214317c32
data/bin/dit CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'dit'
3
+ require 'dit/cmd'
4
4
  DitCMD.start(ARGV)
data/lib/dit/cmd.rb ADDED
@@ -0,0 +1,23 @@
1
+ require 'dit'
2
+
3
+ class DitCMD < Thor
4
+ desc 'init', 'Initialize the current directory as a dit directory.'
5
+ def init
6
+ Dit.init
7
+ end
8
+
9
+ desc 'rehash', "Manually symlink everything in case a git hook didn't run."
10
+ def rehash
11
+ Dit.symlink_all
12
+ end
13
+
14
+ desc 'version', 'Print the dit version.'
15
+ def version
16
+ puts "Dit #{Dit.version} on ruby #{RUBY_VERSION}"
17
+ end
18
+
19
+ desc 'clean', 'Clean dead symlinks from your home dir.'
20
+ def clean
21
+ Dit.clean_home
22
+ end
23
+ end
data/lib/dit.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  require 'thor'
2
2
  require 'git'
3
3
  require 'os'
4
- require 'json'
5
4
  require 'fileutils'
5
+ require 'set'
6
6
 
7
7
  # This is the class where all the dit work is done.
8
8
  # The thor class is basically a very thin layer on top of this that just
@@ -60,8 +60,15 @@ class Dit
60
60
  end
61
61
 
62
62
  def self.symlink_list(list)
63
+ root_list = Set[]
63
64
  list.each do |f|
64
65
  f.strip!
66
+ root = f.split('/')[0]
67
+ root ||= f
68
+ root_list = root_list | Set[root]
69
+ end
70
+ root_list.delete?('')
71
+ root_list.each do |f|
65
72
  wd_f = File.absolute_path f
66
73
  home_f = File.absolute_path(f).gsub(Dir.getwd, Dir.home)
67
74
  symlink wd_f, home_f
@@ -77,11 +84,13 @@ class Dit
77
84
  symlink_list `git ls-tree -r #{current_branch} --name-only`.split("\n")
78
85
  end
79
86
 
80
- def self.repo
81
- Git.open(Dir.getwd)
82
- end
83
-
84
87
  def self.symlink(a, b)
88
+ if File.exist?(b)
89
+ return if (File.symlink?(b) && File.readlink(b).include(Dir.getwd))
90
+ puts "#{b} conflicts with #{a}. Remove #{b}? [yN]"
91
+ response = STDIN.gets.upcase
92
+ return unless response == 'Y'
93
+ end
85
94
  File.symlink(a, b)
86
95
  rescue
87
96
  puts "Failed to symlink #{a} to #{b}"
@@ -153,8 +162,21 @@ class Dit
153
162
  end
154
163
  end
155
164
 
165
+ def self.clean_home
166
+ Dir.chdir(Dir.home) do
167
+ existing_dotfiles = Dir.glob('.*')
168
+ existing_dotfiles.each do |f|
169
+ next if f == '.' || f == '..'
170
+ if File.symlink?(f)
171
+ f_abs = File.readlink(f)
172
+ File.delete(f) unless File.exist?(f_abs)
173
+ end
174
+ end
175
+ end
176
+ end
177
+
156
178
  def self.version
157
- '0.2.3'
179
+ '0.3'
158
180
  end
159
181
  end
160
182
 
@@ -173,4 +195,9 @@ class DitCMD < Thor
173
195
  def version
174
196
  puts "Dit #{Dit.version} on ruby #{RUBY_VERSION}"
175
197
  end
198
+
199
+ desc 'clean', 'Clean dead symlinks from your home dir.'
200
+ def clean
201
+ Dit.clean_home
202
+ end
176
203
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Fahringer
@@ -68,6 +68,7 @@ extra_rdoc_files: []
68
68
  files:
69
69
  - bin/dit
70
70
  - lib/dit.rb
71
+ - lib/dit/cmd.rb
71
72
  homepage: http://github.com/vulpino/dit
72
73
  licenses:
73
74
  - MIT
@@ -93,3 +94,4 @@ signing_key:
93
94
  specification_version: 4
94
95
  summary: Dit is a dotfiles manager that thinks it's git.
95
96
  test_files: []
97
+ has_rdoc: