"""EasyEngine packages repository operations""" from ee.core.shellexec import EEShellExec from ee.core.variables import EEVariables import os class EERepo(): """Manage Repositories""" def __init__(self): """Initialize """ pass def add(self, repo_url=None, ppa=None): """ This function used to add apt repositories and or ppa's If repo_url is provided adds repo file to /etc/apt/sources.list.d/ If ppa is provided add apt-repository using add-apt-repository command. """ if repo_url is not None: repo_file_path = ("/etc/apt/sources.list.d/" + EEVariables().ee_repo_file) try: if not os.path.isfile(repo_file_path): with open(repo_file_path, "a") as repofile: repofile.write(repo_url) repofile.write('\n') repofile.close() elif repo_url not in open(repo_file_path).read(): with open(repo_file_path, "a") as repofile: repofile.write(repo_url) repofile.write('\n') repofile.close() return True except IOError as e: Log.debug(self, "{0}".format(e)) Log.error(self, "File I/O error.") except Exception as e: Log.debug(self, "{0}".format(e)) Log.error(self, "Unable to add repo") if ppa is not None: if EEVariables.ee_platform_distro == 'squeeze': print("Cannot add repo for {distro}" .format(distro=EEVariables.ee_platform_distro)) else: EEShellExec.cmd_exec(self, "add-apt-repository -y " "'{ppa_name}'" .format(ppa_name=ppa)) def remove(self, ppa=None): """ This function used to remove ppa's If ppa is provided adds repo file to /etc/apt/sources.list.d/ command. """ EEShellExec.cmd_exec(self, "add-apt-repository -y " "--remove '{ppa_name}'" .format(ppa_name=repo_url)) def add_key(self, keyids, keyserver=None): """ This function adds imports repository keys from keyserver. default keyserver is hkp://keys.gnupg.net user can provide other keyserver with keyserver="hkp://xyz" """ if keyserver is None: EEShellExec.cmd_exec(self, "gpg --keyserver {serv}" .format(serv=(keyserver or "hkp://keys.gnupg.net")) + " --recv-keys {key}".format(key=keyids)) EEShellExec.cmd_exec(self, "gpg -a --export --armor {0}" .format(keyids) + " | apt-key add - ")