From 04e2f97cd283fbfc5eb0acc6ec61e922c2d098d3 Mon Sep 17 00:00:00 2001 From: fhdk <fh@uex.dk> Date: Fri, 31 Mar 2017 10:57:07 +0200 Subject: [PATCH] api implementation @udeved --- pacman_mirrors/configfn.py | 26 ++++++++++++++++++ pacman_mirrors/pacman_mirrors.py | 45 ++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/pacman_mirrors/configfn.py b/pacman_mirrors/configfn.py index b8ef5794..97c9460f 100644 --- a/pacman_mirrors/configfn.py +++ b/pacman_mirrors/configfn.py @@ -26,6 +26,32 @@ from . import txt from . import configuration as conf +def api_branch(branch, filename): + """Write branch""" + branch = "Branch = {}".format(branch) + + try: + with open( + filename) as cnf, tempfile.NamedTemporaryFile( + "w+t", dir=os.path.dirname( + filename), delete=False) as tmp: + replaced = False + for line in cnf: + if "Branch" in line: + tmp.write(branch) + replaced = True + else: + tmp.write("{}".format(line)) + if not replaced: + tmp.write(branch) + os.replace(tmp.name, filename) + os.chmod(filename, 0o644) + except OSError as err: + print(".: {} {}: {}: {}".format(txt.ERR_CLR, txt.CANNOT_READ_FILE, + err.filename, err.strerror)) + exit(1) + + def build_config(): """Get config informations :returns: config, custom diff --git a/pacman_mirrors/pacman_mirrors.py b/pacman_mirrors/pacman_mirrors.py index 3466932d..2aca27a1 100644 --- a/pacman_mirrors/pacman_mirrors.py +++ b/pacman_mirrors/pacman_mirrors.py @@ -130,6 +130,16 @@ class PacmanMirrors: parser.add_argument("--default", action="store_true", help=txt.HLP_ARG_DEFAULT) + # api arguments + parser.add_argument("-a/--api", + action="store_true") + parser.add_argument("--get-branch", + type=bool) + parser.add_argument("--set-branch", + type=bool) + parser.add_argument("--prefix", + type=str, + action="store_true") args = parser.parse_args() @@ -196,6 +206,41 @@ class PacmanMirrors: self.custom = False self.config["only_country"] = [] + if args.api: + if args.branch: + self.api_config(prefix=args.prefix, + set_branch=args.set_branch) + else: + self.api_config(get_branch=args.get_branch) + + def api_config(self, prefix=None, set_branch=False, get_branch=False): + """Api functions + :param prefix: prefix to the config paths + :param set_branch: writes branch to pacman-mirrors + :param get_branch: exit with -1 -2 -3 + """ + if prefix: + if "$" in prefix: + prefix = os.environ.get(prefix) + self.config["config_file"] = prefix + self.config["config_file"] + self.config["custom_file"] = prefix + self.config["custom_file"] + self.config["fallback_file"] = prefix + self.config["fallback_file"] + self.config["mirror_dir"] = prefix + self.config["mirror_dir"] + self.config["mirror_file"] = prefix + self.config["mirror_file"] + self.config["mirror_list"] = prefix + self.config["mirror_list"] + self.config["status_file"] = prefix + self.config["status_file"] + + if set_branch: + configfn.api_branch(self.config["branch"], self.config["config_file"]) + + if get_branch: + if self.config["branch"] == "stable": + exit(-1) + if self.config["branch"] == "testing": + exit(-2) + if self.config["branch"] == "unstable": + exit(-3) + def build_common_mirror_list(self): """Generate common mirrorlist""" worklist = mirrorfn.filter_mirror_country(self.mirrors.mirrorlist, -- GitLab