mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2025-01-12 19:44:33 +00:00
Use safe_load for automated loading with err handling
This commit is contained in:
parent
06a94d87fd
commit
5b30c96e4f
|
@ -15,12 +15,9 @@ def obtain_packages() -> t.List[Package]:
|
||||||
git_packages = yaml_file["git"]
|
git_packages = yaml_file["git"]
|
||||||
|
|
||||||
packages = []
|
packages = []
|
||||||
for package in pacman_packages:
|
packages += Package.safe_load(pacman_packages)
|
||||||
packages.append(Package(package))
|
packages += Package.safe_load(aur_packages, aur=True)
|
||||||
for package in git_packages:
|
packages += Package.safe_load(git_packages, git=True)
|
||||||
packages.append(Package(package, git=True))
|
|
||||||
for package in aur_packages:
|
|
||||||
packages.append(Package(package, aur=True))
|
|
||||||
|
|
||||||
return packages
|
return packages
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
|
import typing as t
|
||||||
|
|
||||||
from src.util.install import Install
|
from src.util.install import Install
|
||||||
|
from src.util.user import Print
|
||||||
|
|
||||||
|
|
||||||
class InvalidPackage(Exception):
|
class InvalidPackage(Exception):
|
||||||
|
@ -34,7 +37,7 @@ class Package:
|
||||||
|
|
||||||
if self.aur:
|
if self.aur:
|
||||||
if not Install.is_installed("yay"):
|
if not Install.is_installed("yay"):
|
||||||
raise InvalidPackage(f"Package {self} can't be installed (missing `yay` - AUR installation software)")
|
raise InvalidPackage(f"Package {self} can't be installed (missing `yay` - AUR installation software), alternatively, you can use git")
|
||||||
Install.yay_install(self.name)
|
Install.yay_install(self.name)
|
||||||
elif self.git:
|
elif self.git:
|
||||||
Install.git_install(self.git_url)
|
Install.git_install(self.git_url)
|
||||||
|
@ -49,3 +52,14 @@ class Package:
|
||||||
elif self.aur:
|
elif self.aur:
|
||||||
return f"<Aur package: {self.name}>"
|
return f"<Aur package: {self.name}>"
|
||||||
return f"<Package: {self.name}>"
|
return f"<Package: {self.name}>"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def safe_load(cls, packages: t.List[str], aur: bool = False, git: bool = False) -> t.List["Package"]:
|
||||||
|
loaded_packages = []
|
||||||
|
for package in packages:
|
||||||
|
try:
|
||||||
|
loaded_packages.append(cls(package, aur=aur, git=git))
|
||||||
|
except InvalidPackage as e:
|
||||||
|
Print.warning(e)
|
||||||
|
|
||||||
|
return loaded_packages
|
||||||
|
|
Loading…
Reference in a new issue