Don't use irrelevant class for install

This commit is contained in:
ItsDrike 2021-01-14 14:55:21 +01:00
parent 28f9eb1545
commit edd79c3a49
No known key found for this signature in database
GPG key ID: 252D306F545351FC
3 changed files with 47 additions and 44 deletions

View file

@ -2,7 +2,7 @@ import typing as t
import yaml import yaml
from src.util.package import Package, PackageAlreadyInstalled, InvalidPackage from src.util.package import Package, PackageAlreadyInstalled, InvalidPackage
from src.util.install import Install from src.util import install
from src.util.user import Print, Input from src.util.user import Print, Input
@ -25,7 +25,7 @@ def obtain_packages() -> t.List[Package]:
def install_packages() -> None: def install_packages() -> None:
packages = obtain_packages() packages = obtain_packages()
if Input.yes_no("Do you wish to perform system upgrade first? (Recommended)"): if Input.yes_no("Do you wish to perform system upgrade first? (Recommended)"):
Install.upgrade_pacman() install.upgrade_pacman()
for package in packages: for package in packages:
try: try:
Print.action(f"Installing {package}") Print.action(f"Installing {package}")

View file

@ -5,25 +5,28 @@ from src.util import command
from src.util.user import Print, Input from src.util.user import Print, Input
class Install: def is_installed(package: str) -> bool:
def is_installed(package: str) -> bool:
"""Check if the package is already installed in the system""" """Check if the package is already installed in the system"""
return_code = command.get_return_code(f"pacman -Qi {package}") return_code = command.get_return_code(f"pacman -Qi {package}")
return return_code != 1 return return_code != 1
def upgrade_pacman() -> None:
def upgrade_pacman() -> None:
"""Run full sync, refresh the package database and upgrade.""" """Run full sync, refresh the package database and upgrade."""
command.execute("sudo pacman -Syu") command.execute("sudo pacman -Syu")
def pacman_install(package: str) -> None:
def pacman_install(package: str) -> None:
"""Install given `package`""" """Install given `package`"""
command.execute(f"sudo pacman -S {package}") command.execute(f"sudo pacman -S {package}")
def yay_install(package: str) -> None:
def yay_install(package: str) -> None:
"""Install give package via `yay` (from AUR)""" """Install give package via `yay` (from AUR)"""
command.execute(f"yay -S {package}") command.execute(f"yay -S {package}")
def git_install(url: str) -> None:
def git_install(url: str) -> None:
"""Clone a git repository with given `url`""" """Clone a git repository with given `url`"""
dir_name = url.split("/")[-1].replace(".git", "") dir_name = url.split("/")[-1].replace(".git", "")
if os.path.exists(dir_name): if os.path.exists(dir_name):

View file

@ -1,6 +1,6 @@
import typing as t import typing as t
from src.util.install import Install from src.util import install
from src.util.user import Print from src.util.user import Print
@ -32,17 +32,17 @@ class Package:
self.git_url = f"https://github.com/{self.name}" self.git_url = f"https://github.com/{self.name}"
def install(self) -> None: def install(self) -> None:
if not self.git and Install.is_installed(self.name): if not self.git and install.is_installed(self.name):
raise PackageAlreadyInstalled(f"Package {self} is already installed") raise PackageAlreadyInstalled(f"Package {self} is already installed")
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), alternatively, you can use git") 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)
else: else:
Install.pacman_install(self.name) install.pacman_install(self.name)
def __repr__(self) -> str: def __repr__(self) -> str:
if self.git: if self.git: