dotfiles/src/package_install.py
2021-04-12 18:06:50 +02:00

45 lines
1.3 KiB
Python

import typing as t
import colorama
import inquirer.shortcuts
import yaml
from src.util.command import run_root_cmd
from src.util.package import InvalidPackage, Package, PackageAlreadyInstalled
colorama.init(autoreset=True)
def obtain_packages() -> t.List[Package]:
with open("packages.yaml") as f:
yaml_file = yaml.safe_load(f)
pacman_packages = yaml_file["pacman"]
aur_packages = yaml_file["aur"]
git_packages = yaml_file["git"]
packages = []
packages += Package.safe_load(pacman_packages)
packages += Package.safe_load(git_packages, git=True)
packages += Package.safe_load(aur_packages, aur=True)
return packages
def install_packages() -> None:
packages = obtain_packages()
if inquirer.shortcuts.confirm("Do you wish to perform system upgrade first? (Recommended)", default=True):
run_root_cmd("pacman -Syu")
for package in packages:
try:
print(f"{colorama.Fore.CYAN}Installing {package}")
package.install()
except PackageAlreadyInstalled:
print(f"{colorama.Style.DIM}Package {package} is already installed, skipping")
except InvalidPackage as e:
print(f"{colorama.Fore.RED}{str(e)}")
if __name__ == "__main__":
install_packages()