Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/pacman/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'archinstall/lib/pacman/config.py')
-rw-r--r--archinstall/lib/pacman/config.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/archinstall/lib/pacman/config.py b/archinstall/lib/pacman/config.py
index 60d202bc..6686f4a9 100644
--- a/archinstall/lib/pacman/config.py
+++ b/archinstall/lib/pacman/config.py
@@ -10,24 +10,35 @@ class Config:
def __init__(self, target: Path):
self.path = Path("/etc") / "pacman.conf"
self.chroot_path = target / "etc" / "pacman.conf"
- self.patterns: List[re.Pattern] = []
+ self.repos: List[Repo] = []
def enable(self, repo: Repo):
- self.patterns.append(re.compile(r"^#\s*\[{}\]$".format(repo.value)))
+ self.repos.append(repo)
def apply(self):
- if not self.patterns:
+ if not self.repos:
return
+
+ if Repo.Testing in self.repos:
+ if Repo.Multilib in self.repos:
+ repos_pattern = f'({Repo.Multilib.value}|.+-{Repo.Testing.value})'
+ else:
+ repos_pattern = f'(?!{Repo.Multilib.value}).+-{Repo.Testing.value}'
+ else:
+ repos_pattern = Repo.Multilib.value
+
+ pattern = re.compile(rf"^#\s*\[{repos_pattern}\]$")
+
lines = iter(self.path.read_text().splitlines(keepends=True))
with open(self.path, 'w') as f:
for line in lines:
- if any(pattern.match(line) for pattern in self.patterns):
+ if pattern.match(line):
# Uncomment this line and the next.
f.write(line.lstrip('#'))
f.write(next(lines).lstrip('#'))
else:
f.write(line)
-
+
def persist(self):
- if self.patterns:
+ if self.repos:
copy2(self.path, self.chroot_path)