lace 0.5.2 → 0.5.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.
- checksums.yaml +4 -4
- data/lib/cmd/apply.rb +42 -0
- data/lib/cmd/diff.rb +6 -0
- data/lib/extend/ARGV.rb +10 -0
- data/lib/lace/package/package.rb +13 -7
- data/lib/lace/package/utils.rb +1 -1
- data/lib/lace/package_cli.rb +4 -0
- data/lib/lace/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e9374d4a207b650f55ec19e285891ac00fc55da706d5a87b8ce5ff642315f30
|
4
|
+
data.tar.gz: 457594f9250c5e7045a00b227596c41f461a8487e3be6c95240f6891b8067e6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f546f2835196c35b71522b3683376c79c3deee6b82529c24108639d44fa148bca4a1127aefcab3d6e38209b8c7cda917a535019fb1f2068db92d06427817b8b2
|
7
|
+
data.tar.gz: 386d3fb4712ad53fe2fc1f06cfa853c1fd552d5a23b0d46fc8160925b62ed5ff09f19ee41d48309ba5ae55bce9eb1964c4b1f6ce65b25507f3615eb0da2fc824
|
data/lib/cmd/apply.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'lace/package'
|
4
|
+
require 'lace/exceptions'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
module Lace
|
8
|
+
module_function
|
9
|
+
|
10
|
+
def apply
|
11
|
+
package_name = ARGV.shift
|
12
|
+
raise ResourceNotSpecified unless package_name
|
13
|
+
ohai "Applying package #{package_name}"
|
14
|
+
package = Package.new(package_name, ARGV.first)
|
15
|
+
|
16
|
+
diff = PackageUtils.diff(package_name)
|
17
|
+
|
18
|
+
if diff.added.empty? && diff.removed.empty?
|
19
|
+
puts 'Everything is already in sync. Nothing to do.'
|
20
|
+
return
|
21
|
+
end
|
22
|
+
|
23
|
+
diff.added.each do |f|
|
24
|
+
dest = f.as_dotfile(Dir.home, package.path)
|
25
|
+
dest_path = dest.to_path.gsub(Dir.home, '$HOME')
|
26
|
+
puts "Link #{f.basename} to #{dest_path}?"
|
27
|
+
next unless ARGV.confirm?("Link #{f.basename} to #{dest_path}?")
|
28
|
+
|
29
|
+
package.link_file_or_directory(f, dest, force: true)
|
30
|
+
ohai "Linked"
|
31
|
+
end
|
32
|
+
|
33
|
+
diff.removed.each do |f|
|
34
|
+
dest = f.as_dotfile(Dir.home, package.path)
|
35
|
+
dest_path = dest.to_path.gsub(Dir.home, '$HOME')
|
36
|
+
next unless ARGV.confirm?("Remove link for #{f.basename} from #{dest_path}?")
|
37
|
+
|
38
|
+
package.unlink_file(f, force: true)
|
39
|
+
ohai "Removed"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/cmd/diff.rb
CHANGED
@@ -12,6 +12,12 @@ module Lace
|
|
12
12
|
|
13
13
|
package = Package.new(package_name, ARGV.first)
|
14
14
|
diff = PackageUtils.diff package_name
|
15
|
+
|
16
|
+
if diff.added.empty? && diff.removed.empty?
|
17
|
+
ohai 'Everything is already in sync.'
|
18
|
+
return
|
19
|
+
end
|
20
|
+
|
15
21
|
ohai 'The following files would be added [+] or removed [-]'
|
16
22
|
diff.added.each do |f|
|
17
23
|
puts "[+] #{f.basename} -> #{f.as_dotfile(Dir.home, package.path).to_path.gsub(Dir.home, '$HOME')}"
|
data/lib/extend/ARGV.rb
CHANGED
data/lib/lace/package/package.rb
CHANGED
@@ -69,11 +69,8 @@ class Package
|
|
69
69
|
|
70
70
|
def deactivate!
|
71
71
|
files = @facts.config_files
|
72
|
-
home_dir = Dir.home
|
73
72
|
files.each do |file|
|
74
|
-
|
75
|
-
dotfile = file.as_dotfile(home_dir, @path)
|
76
|
-
FileUtils.rm_f dotfile if dotfile.exist? && dotfile.readlink == file
|
73
|
+
unlink_file file
|
77
74
|
end
|
78
75
|
end
|
79
76
|
|
@@ -84,6 +81,15 @@ class Package
|
|
84
81
|
end
|
85
82
|
end
|
86
83
|
|
84
|
+
def unlink_file(file, force: ARGV.force?)
|
85
|
+
dotfile = file.as_dotfile(Dir.home, @path)
|
86
|
+
if (dotfile.exist? || force) && dotfile.symlink? && dotfile.readlink == file
|
87
|
+
FileUtils.rm_f(dotfile)
|
88
|
+
return true
|
89
|
+
end
|
90
|
+
false
|
91
|
+
end
|
92
|
+
|
87
93
|
def link_file(file)
|
88
94
|
home_dir = Dir.home
|
89
95
|
# if ends in erb -> generate it
|
@@ -94,11 +100,11 @@ class Package
|
|
94
100
|
|
95
101
|
FileUtils.mv dest, dest.as_backup
|
96
102
|
end
|
97
|
-
link_file_or_directory src, dest
|
103
|
+
link_file_or_directory src, dest, force: ARGV.force?
|
98
104
|
end
|
99
105
|
|
100
|
-
def link_file_or_directory(src, dest)
|
106
|
+
def link_file_or_directory(src, dest, force: ARGV.force?)
|
101
107
|
dest.dirname.mkpath unless dest.dirname.exist?
|
102
|
-
FileUtils.ln_s src, dest, force:
|
108
|
+
FileUtils.ln_s src, dest, force: force
|
103
109
|
end
|
104
110
|
end
|
data/lib/lace/package/utils.rb
CHANGED
@@ -34,7 +34,7 @@ class PackageUtils
|
|
34
34
|
|
35
35
|
def self.deactivate(package_name)
|
36
36
|
package = Package.new(package_name, ARGV.first)
|
37
|
-
raise(NonActiveFlavorError) unless package.is_active?
|
37
|
+
raise(NonActiveFlavorError) unless package.is_active? || ARGV.force?
|
38
38
|
|
39
39
|
ohai('Deactivating')
|
40
40
|
package.deactivate!
|
data/lib/lace/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kai Richard Koenig
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Lace lets you manage your dotfiles when using them on multiple machines
|
14
14
|
email: kai.richard.koenig@gmail.com
|
@@ -19,6 +19,7 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- bin/lace
|
21
21
|
- lib/cmd/activate.rb
|
22
|
+
- lib/cmd/apply.rb
|
22
23
|
- lib/cmd/deactivate.rb
|
23
24
|
- lib/cmd/diff.rb
|
24
25
|
- lib/cmd/fetch.rb
|
@@ -40,6 +41,7 @@ files:
|
|
40
41
|
- lib/lace/package/facts.rb
|
41
42
|
- lib/lace/package/package.rb
|
42
43
|
- lib/lace/package/utils.rb
|
44
|
+
- lib/lace/package_cli.rb
|
43
45
|
- lib/lace/utils.rb
|
44
46
|
- lib/lace/version.rb
|
45
47
|
homepage: https://github.com/kairichard/lace
|