archlinux 0.1.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5a6439dbf4a18b2f03c70c67dd3707dbe0aa860e147bbb86242a5540173fe09
4
- data.tar.gz: 2b56713549a7861cf2602e3132f66c94a66d10419de67fe89ea973a32724e6bc
3
+ metadata.gz: 3f216aa92fe6ffe833aeb61fb45610c24794394ad3d932407c22ddb2908e1b2d
4
+ data.tar.gz: cac434497d67174cc7245bd5a2469743b4d50d97094e7687e9e73882dc4051af
5
5
  SHA512:
6
- metadata.gz: 69423c894c111c99ca618d9b86e17f10e7b040edd8e2facb06fa6dd599fb37d1b4011162da28a13dc73e2f15859437c36cb5284e1b0e393f25c014da5543ea9d
7
- data.tar.gz: 4823b44bfdb3ca749657bf81d1b003cd5abb72f08d822d5880890a8cd6b561855f05f5df46b618b48ede8cbe3874f999e3f2372016d50e200a988ca3c73196bf
6
+ metadata.gz: 8f0bd0012f938dd65541490d1bea9d28ce63d7556fe732de96c2de6f2e77538f019031e6f8e4a57f882c1b180d0819a5fc00dcd1b96c494d62e30c17610fe6c6
7
+ data.tar.gz: a454231af7d6798344493cf90c2300e9c81bdcdf465b9d0a507613c5090e4d68d79498d4bcb08007c8d7e804147fb014cfbf34bce1535b27fa6050e64cca30bc
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.1.0'
7
+ s.version = '0.3.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'
@@ -11,6 +11,8 @@ def ufw(*allow)
11
11
  service :ufw
12
12
 
13
13
  on_configure do
14
- sudo "ufw allow #{@ufw.join(' ')}"
14
+ @ufw.each do |port|
15
+ sudo "ufw allow #{port}"
16
+ end
15
17
  end
16
18
  end
@@ -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
@@ -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
- # install missing packages
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
- next if unneeded.empty?
32
+ if unneeded.any?
33
+ log "Removing packages", packages: unneeded
34
+ sudo("pacman -Rsu #{unneeded.join(" ")}")
35
+ end
42
36
 
43
- log "Removing packages", packages: unneeded
44
- sudo("pacman -Rsu #{unneeded.join(" ")}")
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.1.0
4
+ version: 0.3.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-03-28 00:00:00.000000000 Z
11
+ date: 2024-04-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: