archlinux 0.1.0 → 0.2.0
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/archlinux.gemspec +1 -1
- data/lib/declarations/file.rb +9 -0
- data/lib/declarations/pacman.rb +13 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a503802bfcc8eecbd6b5605d96f6cf9de4ded00319ec74c9a091d56840fd86b
|
4
|
+
data.tar.gz: 31a14e3c70aed70bad24a5a716fb3088093866ea2db7c7e46b87ca3c101aad24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af974b69974f277bf426b912c7619ba7fc6d87ea4fc7dfa86b5858c6abe9b2a6b862d8d32359344d566c2d4a59fd92a74be14ef3fa4bb1cbe955887c07321e80
|
7
|
+
data.tar.gz: 712fc0f6b8035b038facd41ea33df1185be0819d77f0b11caf91cc08440d3432d1765e1eb652aa83865037d6e8d1f0d464475222dcf77264d6acd5493bfe91e2
|
data/archlinux.gemspec
CHANGED
@@ -4,7 +4,7 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.files = `git ls-files`.lines.map(&:chomp)
|
5
5
|
s.name = 'archlinux'
|
6
6
|
s.summary = "Archlinux DSL to manage whole system state"
|
7
|
-
s.version = '0.
|
7
|
+
s.version = '0.2.0'
|
8
8
|
s.licenses = ["GPL-3.0-or-later"]
|
9
9
|
s.metadata['rubygems_mfa_required'] = 'true'
|
10
10
|
s.required_ruby_version = '>=3.0'
|
data/lib/declarations/file.rb
CHANGED
@@ -47,6 +47,15 @@ def symlink(target, link_name)
|
|
47
47
|
exit
|
48
48
|
end
|
49
49
|
|
50
|
+
# Check if file exists and is a symlink
|
51
|
+
if File.exist?(link_name) && File.symlink?(link_name)
|
52
|
+
links_to = File.readlink(link_name)
|
53
|
+
next if links_to == target # skip creating link if it's already exists
|
54
|
+
|
55
|
+
# Remove the link if it links to something else
|
56
|
+
File.unlink link_name
|
57
|
+
end
|
58
|
+
|
50
59
|
log "Linking", target: target, link_name: link_name
|
51
60
|
|
52
61
|
# make the parent if it doesn't exist
|
data/lib/declarations/pacman.rb
CHANGED
@@ -19,29 +19,28 @@ def package(*names)
|
|
19
19
|
|
20
20
|
# install step to install packages required and remove not required
|
21
21
|
on_install do
|
22
|
-
#
|
23
|
-
need_install = @packages.reject { |p| package? p }
|
24
|
-
need_install_args = need_install.join(" ")
|
25
|
-
if need_install.any?
|
26
|
-
log "Installing packages", packages: need_install
|
27
|
-
sudo "pacman --noconfirm --needed -S #{need_install_args}"
|
28
|
-
end
|
29
|
-
|
30
|
-
# expand groups to packages
|
22
|
+
# Expand groups to packages
|
31
23
|
packages_args = @packages.join(" ")
|
32
24
|
group_packages = Set.new(`pacman --quiet -Sg #{packages_args}`.lines.map(&:strip))
|
33
25
|
|
34
|
-
# full list of packages that should exist on the system
|
35
|
-
all = @packages + group_packages
|
26
|
+
all = @packages + group_packages # full list of packages that should exist on the system
|
36
27
|
|
37
28
|
# actual list on the system
|
38
29
|
installed = Set.new(`pacman -Q --quiet --explicit --unrequired --native`.lines.map(&:strip))
|
39
30
|
|
40
31
|
unneeded = installed - all
|
41
|
-
|
32
|
+
if unneeded.any?
|
33
|
+
log "Removing packages", packages: unneeded
|
34
|
+
sudo("pacman -Rsu #{unneeded.join(" ")}")
|
35
|
+
end
|
42
36
|
|
43
|
-
|
44
|
-
|
37
|
+
# install missing packages
|
38
|
+
need_install = @packages.reject { |p| package? p }
|
39
|
+
need_install_args = need_install.join(" ")
|
40
|
+
if need_install.any?
|
41
|
+
log "Installing packages", packages: need_install
|
42
|
+
sudo "pacman --noconfirm --needed -S #{need_install_args}"
|
43
|
+
end
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: archlinux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emad Elsaid
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|