archlinux 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: