kiip 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +1 -0
- data/README.md +36 -9
- data/exe/kiip +7 -2
- data/lib/kiip/cli.rb +7 -2
- data/lib/kiip/entry.rb +13 -3
- data/lib/kiip/package.rb +2 -2
- data/lib/kiip/repository.rb +2 -2
- data/lib/kiip/tasks/symlink_task.rb +4 -1
- data/lib/kiip/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da08024c0ea0f33be0d8c9638bdd188bf1790e2d
|
4
|
+
data.tar.gz: 9f04b5a78be8e1504450ee2371f8fbac3d384180
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 794ca532eb4c790f801351877041bc8c8494c2b28f118ad69d97813bc29f85cf03106483fdd3eae2ede993ebdbcfa433394bf6b00422984261aae6c4a1e5d23b
|
7
|
+
data.tar.gz: 75b9890ce3cddc2ed28d91e2893e8eac0e197ded49b16df9c943bd52b8573c6d102a9ca370081d0634752aa8bfecc5c89ade4453a998a497d0be8e9964ce19f6
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.3
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -8,7 +8,8 @@ Kiip, just another dotfiles tool to move your actual files and folders to a repo
|
|
8
8
|
## Terminology
|
9
9
|
|
10
10
|
- `Repository`: the place where your packages are stored, e.g. `~/Dropbox/kiip`
|
11
|
-
- `Package`: The
|
11
|
+
- `Package`: The folder `PATH_TO_REPOSITORY/PACKAGE_NAME`. It can contain multiple entries.
|
12
|
+
- `Entry`: The file/folder/symlink **in** `PATH_TO_REPOSITORY/PACKAGE_NAME`. It is the real file/folder, with an base64 encoded name of the original path.
|
12
13
|
|
13
14
|
## Installation
|
14
15
|
|
@@ -18,19 +19,45 @@ Kiip, just another dotfiles tool to move your actual files and folders to a repo
|
|
18
19
|
|
19
20
|
Commands:
|
20
21
|
kiip help [COMMAND] # Describe available commands or one specific command
|
21
|
-
kiip
|
22
|
-
kiip
|
23
|
-
kiip
|
24
|
-
kiip
|
22
|
+
kiip link PACKAGE_NAME # ensures links to the package files exist
|
23
|
+
kiip list # lists all packages with content
|
24
|
+
kiip restore PACKAGE_NAME # restores the content of the package to the original places
|
25
|
+
kiip rm NAME # removes package with name NAME from the repository
|
26
|
+
kiip track PACKAGE_NAME PATH # tracks the file or folder under PATH with the package name NAM...
|
27
|
+
kiip unlink PACKAGE_NAME # removes the links to the package files
|
25
28
|
|
26
29
|
Options:
|
27
|
-
[--dry], [--no-dry]
|
30
|
+
-d, [--dry], [--no-dry]
|
31
|
+
-v, [--verbose], [--no-verbose]
|
28
32
|
|
29
33
|
Examples:
|
30
|
-
kiip track ssh ~/.ssh
|
31
|
-
|
34
|
+
$ kiip track -v ssh ~/.ssh
|
35
|
+
mv /Users/rowe/.ssh /Users/rowe/Sync/home/kiip/ssh/fi8uc3No
|
36
|
+
ln -s /Users/rowe/Sync/home/kiip/ssh/fi8uc3No /Users/rowe/.ssh
|
37
|
+
|
38
|
+
$ kiip list
|
32
39
|
ssh:
|
33
|
-
~/.ssh
|
40
|
+
~/.ssh | linked
|
41
|
+
|
42
|
+
$ kiip unlink -v ssh
|
43
|
+
removing ~/.ssh
|
44
|
+
|
45
|
+
$ kiip list
|
46
|
+
ssh:
|
47
|
+
~/.ssh | not_existent
|
48
|
+
|
49
|
+
$ kiip restore -v ssh
|
50
|
+
copy /Users/rowe/Sync/home/kiip/ssh/fi8uc3No to ~/.ssh
|
51
|
+
|
52
|
+
$ kiip list
|
53
|
+
ssh:
|
54
|
+
~/.ssh | directory
|
55
|
+
|
56
|
+
$ kiip rm -v ssh
|
57
|
+
rm -r /Users/rowe/Sync/home/kiip/ssh
|
58
|
+
|
59
|
+
$ kiip list
|
60
|
+
|
34
61
|
|
35
62
|
|
36
63
|
## Development
|
data/exe/kiip
CHANGED
@@ -3,5 +3,10 @@
|
|
3
3
|
$LOAD_PATH.unshift File.expand_path('../lib', __dir__)
|
4
4
|
|
5
5
|
require 'kiip'
|
6
|
-
|
7
|
-
Kiip::Cli.start(ARGV)
|
6
|
+
begin
|
7
|
+
Kiip::Cli.start(ARGV)
|
8
|
+
rescue StandardError => e
|
9
|
+
require 'highline'
|
10
|
+
HighLine.color_scheme = HighLine::SampleColorScheme.new
|
11
|
+
HighLine.new.say "<%= color('#{e.message}', :error) %>"
|
12
|
+
end
|
data/lib/kiip/cli.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Kiip
|
2
2
|
class Cli < Thor
|
3
|
-
class_option :dry, :type => :boolean, default: false
|
4
|
-
class_option :verbose, :type => :boolean, default: false
|
3
|
+
class_option :dry, :type => :boolean, default: false, aliases: '-d'
|
4
|
+
class_option :verbose, :type => :boolean, default: false, aliases: '-v'
|
5
5
|
|
6
6
|
desc 'track PACKAGE_NAME PATH', 'tracks the file or folder under PATH with the package name NAME. wrap PATH in quotes to ensure ~ and env variables are kept.'
|
7
7
|
def track package_name, file_or_folder
|
@@ -33,6 +33,11 @@ module Kiip
|
|
33
33
|
repository.rm package_name
|
34
34
|
end
|
35
35
|
|
36
|
+
desc 'version', 'displays kiip version'
|
37
|
+
def version
|
38
|
+
puts Kiip::VERSION
|
39
|
+
end
|
40
|
+
|
36
41
|
private
|
37
42
|
def repository
|
38
43
|
Kiip::Repository.get_instance(is_dry: options[:dry], is_verbose: options[:verbose])
|
data/lib/kiip/entry.rb
CHANGED
@@ -13,7 +13,8 @@ module Kiip
|
|
13
13
|
cli.agree("#{source} exists. Remove it?") ? remove_source : return
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
puts "copy #{target} to #{source}" if verbose?
|
17
|
+
FileUtils.copy_entry(target, expanded_source) unless dry?
|
17
18
|
end
|
18
19
|
|
19
20
|
# removes the source. If source is not a link to target, it asks the users.
|
@@ -24,7 +25,8 @@ module Kiip
|
|
24
25
|
end
|
25
26
|
|
26
27
|
if correct_link? or cli.agree("#{source} is not a symlink to #{target}. Still remove it?")
|
27
|
-
|
28
|
+
puts "removing #{source}" if file_options[:verbose]
|
29
|
+
FileUtils.remove_entry(expanded_source, **file_options) unless file_options[:noop]
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
@@ -48,12 +50,20 @@ module Kiip
|
|
48
50
|
@cli || HighLine.new
|
49
51
|
end
|
50
52
|
|
53
|
+
def verbose?
|
54
|
+
package.repository.is_verbose
|
55
|
+
end
|
56
|
+
|
57
|
+
def dry?
|
58
|
+
package.repository.is_dry
|
59
|
+
end
|
60
|
+
|
51
61
|
def expanded_source
|
52
62
|
File.expand_path(source)
|
53
63
|
end
|
54
64
|
|
55
65
|
def file_options
|
56
|
-
{verbose:
|
66
|
+
{verbose: verbose?, noop: dry?}
|
57
67
|
end
|
58
68
|
|
59
69
|
# asks the user if source should be removed and removes it
|
data/lib/kiip/package.rb
CHANGED
@@ -45,14 +45,14 @@ module Kiip
|
|
45
45
|
|
46
46
|
return if repository.is_dry
|
47
47
|
|
48
|
-
task = Tasks::SymlinkTask.new(name: 'task-name', source: tracking_path, target: File.join(path, escaped_tracking_path))
|
48
|
+
task = Tasks::SymlinkTask.new(name: 'task-name', source: tracking_path, target: File.join(path, escaped_tracking_path), is_verbose: repository.is_verbose, is_dry: repository.is_dry)
|
49
49
|
task.exec!
|
50
50
|
end
|
51
51
|
|
52
52
|
def sync!
|
53
53
|
content.each do |subpath|
|
54
54
|
source = self.class.decode subpath
|
55
|
-
task = Tasks::SymlinkTask.new(name: 'task-name', source: source, target: File.join(path, subpath))
|
55
|
+
task = Tasks::SymlinkTask.new(name: 'task-name', source: source, target: File.join(path, subpath), is_verbose: repository.is_verbose, is_dry: repository.is_dry)
|
56
56
|
task.exec!
|
57
57
|
end
|
58
58
|
end
|
data/lib/kiip/repository.rb
CHANGED
@@ -7,7 +7,7 @@ module Kiip
|
|
7
7
|
def self.get_instance(**options)
|
8
8
|
path = ENV['KIIP_REPO'] || raise('KIIP_REPO environment variable not defined')
|
9
9
|
|
10
|
-
options[:path] = path
|
10
|
+
options[:path] = %x(echo #{path}).rstrip
|
11
11
|
|
12
12
|
return self.new(**options)
|
13
13
|
end
|
@@ -110,4 +110,4 @@ module Kiip
|
|
110
110
|
Pathname.new(path).children.select(&:directory?).map(&:basename).map(&:to_s)
|
111
111
|
end
|
112
112
|
end
|
113
|
-
end
|
113
|
+
end
|
@@ -23,7 +23,10 @@ module Kiip::Tasks
|
|
23
23
|
return initialize! unless File.exists? target
|
24
24
|
|
25
25
|
if File.symlink? source
|
26
|
-
|
26
|
+
if File.readlink(source) == target
|
27
|
+
puts "#{source} already linked" if is_verbose
|
28
|
+
return
|
29
|
+
end
|
27
30
|
|
28
31
|
if cli.agree "#{source} already exists, linking to #{File.readlink(source)}. Replace?"
|
29
32
|
remove_source
|
data/lib/kiip/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kiip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robin Wenglewski
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -214,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
214
|
version: '0'
|
215
215
|
requirements: []
|
216
216
|
rubyforge_project:
|
217
|
-
rubygems_version: 2.
|
217
|
+
rubygems_version: 2.5.1
|
218
218
|
signing_key:
|
219
219
|
specification_version: 4
|
220
220
|
summary: just another dotfiles tool
|