You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
2.3 KiB

"""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):
if repo_url is not None:
repo_file_path = ("/etc/apt/sources.list.d/"
+ EEVariables().ee_repo_file)
try:
10 years ago
if not os.path.isfile(repo_file_path):
with open(repo_file_path, "a") as repofile:
repofile.write(repo_url)
repofile.write('\n')
10 years ago
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:
10 years ago
Log.debug(self, "{0}".format(e))
Log.error(self, "File I/O error.")
except Exception as e:
10 years ago
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, repo_url=None):
EEShellExec.cmd_exec(self, "add-apt-repository -y "
"--remove '{ppa_name}'"
.format(ppa_name=repo_url))
def add_key(keyids, keyserver=None):
if keyserver is None:
EEShellExec.cmd_exec("gpg --keyserver {serv}"
.format(serv=(keyserver
or "hkp://keys.gnupg.net"))
+ " --recv-keys {key}".format(key=keyids))
EEShellExec.cmd_exec("gpg -a --export --armor {0}".format(keyids)
+ " | apt-key add - ")