homesick 1.1.5 → 1.1.6
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.
- checksums.yaml +4 -4
- data/ChangeLog.markdown +11 -6
- data/README.markdown +3 -3
- data/homesick.gemspec +3 -3
- data/lib/homesick/cli.rb +6 -5
- data/lib/homesick/utils.rb +2 -2
- data/lib/homesick/version.rb +1 -1
- data/spec/homesick_cli_spec.rb +38 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 883e37c1c9867b8620d8749c258607c19d35f887
|
4
|
+
data.tar.gz: 5f88fd0008afdb5d8bd4100077eb3ce63be3d99d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d983e5d652622d7fa93f02577186493271978cbfbcdbeffbb4409a2d064bf1a1985c6ca5cbcaec52adb088840ddd3e19d7de0e0e09630a06eb515ed3a614029
|
7
|
+
data.tar.gz: '00119db9851844f54697fe5ee309b463cb37cf7d7e29226c728f0a4ef95b35cc898f11eaf13580297f0aa634f297013de32d82cccc8ad2cc4e45017fd1db5739'
|
data/ChangeLog.markdown
CHANGED
@@ -1,29 +1,34 @@
|
|
1
|
-
#1.1.
|
1
|
+
#1.1.6
|
2
|
+
* Makesure the FileUtils is imported correctly to avoid a potential error
|
3
|
+
* Fixes an issue where comparing a diff would not use the content of the new file
|
4
|
+
* Small documentation fixes
|
5
|
+
|
6
|
+
# 1.1.5
|
2
7
|
* Fixed problem with version number being incorrect.
|
3
8
|
|
4
|
-
#1.1.4
|
9
|
+
# 1.1.4
|
5
10
|
* Make sure symlink conflicts are explicitly communicated to a user and symlinks are not silently overwritten
|
6
11
|
* Use real paths of symlinks when linking a castle into home
|
7
12
|
* Fix a problem when in a diff when asking a user to resolve a conflict
|
8
13
|
* Some code refactoring and fixes
|
9
14
|
|
10
|
-
#1.1.3
|
15
|
+
# 1.1.3
|
11
16
|
* Allow a destination to be passed when cloning a castle
|
12
17
|
* Make sure `homesick edit` opens default editor in the root of the given castle
|
13
18
|
* Fixed bug when diffing edited files
|
14
19
|
* Fixed crashing bug when attempting to diff directories
|
15
20
|
* Ensure that messages are escaped correctly on `git commit all`
|
16
21
|
|
17
|
-
#1.1.2
|
22
|
+
# 1.1.2
|
18
23
|
* Added '--force' option to the rc command to bypass confirmation checks when running a .homesickrc file
|
19
24
|
* Added a check to make sure that a minimum of Git 1.8.0 is installed. This stops Homesick failing silently if Git is not installed.
|
20
25
|
* Code refactoring and fixes.
|
21
26
|
|
22
|
-
#1.1.0
|
27
|
+
# 1.1.0
|
23
28
|
* Added exec and exec_all commands to run commands inside one or all clones castles.
|
24
29
|
* Code refactoring.
|
25
30
|
|
26
|
-
#1.0.0
|
31
|
+
# 1.0.0
|
27
32
|
* Removed support for Ruby 1.8.7
|
28
33
|
* Added a version command
|
29
34
|
|
data/README.markdown
CHANGED
@@ -30,7 +30,7 @@ Alternatively, if it's on github, there's a slightly shorter way:
|
|
30
30
|
|
31
31
|
With the castle cloned, you can now link its contents into your home dir:
|
32
32
|
|
33
|
-
homesick
|
33
|
+
homesick link pickled-vim
|
34
34
|
|
35
35
|
You can remove symlinks anytime when you don't need them anymore
|
36
36
|
|
@@ -84,7 +84,7 @@ If you ever want to see what version of homesick you have type:
|
|
84
84
|
|
85
85
|
## .homesick_subdir
|
86
86
|
|
87
|
-
`homesick
|
87
|
+
`homesick link` basically makes symlink to only first depth in `castle/home`. If you want to link nested files/directories, please use .homesick_subdir.
|
88
88
|
|
89
89
|
For example, when you have castle like this:
|
90
90
|
|
@@ -114,7 +114,7 @@ castle/.homesick_subdir
|
|
114
114
|
|
115
115
|
.config
|
116
116
|
|
117
|
-
and run `homesick
|
117
|
+
and run `homesick link CASTLE`. The result is:
|
118
118
|
|
119
119
|
~
|
120
120
|
|-- .config
|
data/homesick.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: homesick 1.1.
|
5
|
+
# stub: homesick 1.1.6 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "homesick".freeze
|
9
|
-
s.version = "1.1.
|
9
|
+
s.version = "1.1.6"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Joshua Nichols".freeze, "Yusuke Murata".freeze]
|
14
|
-
s.date = "2017-
|
14
|
+
s.date = "2017-12-20"
|
15
15
|
s.description = "\n Your home directory is your castle. Don't leave your dotfiles behind.\n \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 ".freeze
|
16
16
|
s.email = ["josh@technicalpickles.com".freeze, "info@muratayusuke.com".freeze]
|
17
17
|
s.executables = ["homesick".freeze]
|
data/lib/homesick/cli.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
+
require 'fileutils'
|
2
3
|
require 'thor'
|
3
4
|
|
4
5
|
module Homesick
|
@@ -27,13 +28,13 @@ module Homesick
|
|
27
28
|
# Hack in support for diffing symlinks
|
28
29
|
# Also adds support for checking if destination or content is a directory
|
29
30
|
shell_metaclass = class << shell; self; end
|
30
|
-
shell_metaclass.send(:define_method, :show_diff) do |destination,
|
31
|
+
shell_metaclass.send(:define_method, :show_diff) do |destination, source|
|
31
32
|
destination = Pathname.new(destination)
|
32
|
-
|
33
|
-
return 'Unable to create diff: destination or content is a directory' if destination.directory? ||
|
34
|
-
return super(destination,
|
33
|
+
source = Pathname.new(source)
|
34
|
+
return 'Unable to create diff: destination or content is a directory' if destination.directory? || source.directory?
|
35
|
+
return super(destination, File.binread(source)) unless destination.symlink?
|
35
36
|
say "- #{destination.readlink}", :red, true
|
36
|
-
say "+ #{
|
37
|
+
say "+ #{source.expand_path}", :green, true
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
data/lib/homesick/utils.rb
CHANGED
@@ -37,7 +37,7 @@ module Homesick
|
|
37
37
|
def check_castle_existance(name, action)
|
38
38
|
return if castle_dir(name).exist?
|
39
39
|
say_status :error,
|
40
|
-
"Could not #{action} #{name}, expected #{castle_dir(name)} exist and contain dotfiles",
|
40
|
+
"Could not #{action} #{name}, expected #{castle_dir(name)} to exist and contain dotfiles",
|
41
41
|
:red
|
42
42
|
exit(1)
|
43
43
|
end
|
@@ -150,7 +150,7 @@ module Homesick
|
|
150
150
|
|
151
151
|
def collision_accepted?(destination, source)
|
152
152
|
fail "Arguments must be instances of Pathname, #{destination.class.name} and #{source.class.name} given" unless destination.instance_of?(Pathname) && source.instance_of?(Pathname)
|
153
|
-
options[:force] || shell.file_collision(destination) {
|
153
|
+
options[:force] || shell.file_collision(destination) { source }
|
154
154
|
end
|
155
155
|
|
156
156
|
def each_file(castle, basedir, subdirs)
|
data/lib/homesick/version.rb
CHANGED
data/spec/homesick_cli_spec.rb
CHANGED
@@ -331,6 +331,40 @@ describe Homesick::CLI do
|
|
331
331
|
expect(home.join('.some_dotfile').readlink).to eq(dotfile)
|
332
332
|
end
|
333
333
|
end
|
334
|
+
|
335
|
+
context 'when call and some files conflict' do
|
336
|
+
it 'shows differences for conflicting text files' do
|
337
|
+
contents = {:castle => 'castle has new content', :home => 'home already has content'}
|
338
|
+
|
339
|
+
dotfile = castle.file('text')
|
340
|
+
File.open(dotfile.to_s, 'w') do |f|
|
341
|
+
f.write contents[:castle]
|
342
|
+
end
|
343
|
+
File.open(home.join('text').to_s, 'w') do |f|
|
344
|
+
f.write contents[:home]
|
345
|
+
end
|
346
|
+
message = Capture.stdout { homesick.shell.show_diff(home.join('text'), dotfile) }
|
347
|
+
expect(message.b).to match(/- ?#{contents[:home]}\n.*\+ ?#{contents[:castle]}$/m)
|
348
|
+
end
|
349
|
+
it 'shows message or differences for conflicting binary files' do
|
350
|
+
# content which contains NULL character, without any parentheses, braces, ...
|
351
|
+
contents = {:castle => (0..255).step(30).map{|e| e.chr}.join(), :home => (0..255).step(30).reverse_each.map{|e| e.chr}.join()}
|
352
|
+
|
353
|
+
dotfile = castle.file('binary')
|
354
|
+
File.open(dotfile.to_s, 'w') do |f|
|
355
|
+
f.write contents[:castle]
|
356
|
+
end
|
357
|
+
File.open(home.join('binary').to_s, 'w') do |f|
|
358
|
+
f.write contents[:home]
|
359
|
+
end
|
360
|
+
message = Capture.stdout { homesick.shell.show_diff(home.join('binary'), dotfile) }
|
361
|
+
if homesick.shell.is_a?(Thor::Shell::Color)
|
362
|
+
expect(message.b).to match(/- ?#{contents[:home]}\n.*\+ ?#{contents[:castle]}$/m)
|
363
|
+
elsif homesick.shell.is_a?(Thor::Shell::Basic)
|
364
|
+
expect(message.b).to match(/^Binary files .+ differ$/)
|
365
|
+
end
|
366
|
+
end
|
367
|
+
end
|
334
368
|
end
|
335
369
|
|
336
370
|
describe 'unlink' do
|
@@ -499,7 +533,7 @@ describe Homesick::CLI do
|
|
499
533
|
it 'prints an error message when trying to pull a non-existant castle' do
|
500
534
|
expect(homesick).to receive('say_status').once
|
501
535
|
.with(:error,
|
502
|
-
/Could not pull castle_repo, expected .* exist and contain dotfiles/,
|
536
|
+
/Could not pull castle_repo, expected .* to exist and contain dotfiles/,
|
503
537
|
:red)
|
504
538
|
expect { homesick.pull 'castle_repo' }.to raise_error(SystemExit)
|
505
539
|
end
|
@@ -529,7 +563,7 @@ describe Homesick::CLI do
|
|
529
563
|
|
530
564
|
it 'prints an error message when trying to push a non-existant castle' do
|
531
565
|
expect(homesick).to receive('say_status').once
|
532
|
-
.with(:error, /Could not push castle_repo, expected .* exist and contain dotfiles/, :red)
|
566
|
+
.with(:error, /Could not push castle_repo, expected .* to exist and contain dotfiles/, :red)
|
533
567
|
expect { homesick.push 'castle_repo' }.to raise_error(SystemExit)
|
534
568
|
end
|
535
569
|
end
|
@@ -687,7 +721,7 @@ describe Homesick::CLI do
|
|
687
721
|
|
688
722
|
it 'returns an error message when the given castle does not exist' do
|
689
723
|
expect(homesick).to receive('say_status').once
|
690
|
-
.with(:error, /Could not cd castle_repo, expected .* exist and contain dotfiles/, :red)
|
724
|
+
.with(:error, /Could not cd castle_repo, expected .* to exist and contain dotfiles/, :red)
|
691
725
|
expect { homesick.cd 'castle_repo' }.to raise_error(SystemExit)
|
692
726
|
end
|
693
727
|
end
|
@@ -716,7 +750,7 @@ describe Homesick::CLI do
|
|
716
750
|
# Set a default just in case none is set
|
717
751
|
allow(ENV).to receive(:[]).with('EDITOR').and_return('vim')
|
718
752
|
allow(homesick).to receive('say_status').once
|
719
|
-
.with(:error, /Could not open castle_repo, expected .* exist and contain dotfiles/, :red)
|
753
|
+
.with(:error, /Could not open castle_repo, expected .* to exist and contain dotfiles/, :red)
|
720
754
|
expect { homesick.open 'castle_repo' }.to raise_error(SystemExit)
|
721
755
|
end
|
722
756
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: homesick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Nichols
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-12-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|