Skip to content
Snippets Groups Projects
pacman_mirrors.py 3.84 KiB
Newer Older
Frede H's avatar
Frede H committed
#!/usr/bin/env python
#
Ramon Buldó's avatar
Ramon Buldó committed
# This file is part of pacman-mirrors.
#
# pacman-mirrors is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# pacman-mirrors is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with pacman-mirrors.  If not, see <http://www.gnu.org/licenses/>.
#
# Authors: Esclapion <esclapion@manjaro.org>
#          philm <philm@manjaro.org>
FH's avatar
FH committed
#          Ramon Buldó <rbuldo@gmail.com>
#          Hugo Posnic <huluti@manjaro.org>
Frede H's avatar
Frede H committed
#          Frede Hundewadt <echo ZmhAbWFuamFyby5vcmcK | base64 -d>
FH's avatar
FH committed
"""Pacman-Mirrors Main Module"""
Ramon Buldó's avatar
Ramon Buldó committed
import importlib.util
import sys
Frede H's avatar
Frede H committed
import pacman_mirrors.functions.util
from pacman_mirrors.builder import common, fasttrack, interactive
from pacman_mirrors.config import configuration as conf
from pacman_mirrors.functions import cliFn
from pacman_mirrors.functions import configFn
from pacman_mirrors.functions import defaultFn
from pacman_mirrors.functions import fileFn
Frede H's avatar
Frede H committed
from pacman_mirrors.functions import httpFn

from pacman_mirrors.functions import util
from pacman_mirrors.mirrors.mirror import Mirror
from pacman_mirrors.translation import i18n
    importlib.util.find_spec("gi.repository.Gtk")
except ImportError:
Ramon Buldó's avatar
Ramon Buldó committed
_ = i18n.language.gettext

FH's avatar
FH committed

Hugo Posnic's avatar
Hugo Posnic committed
    """Class PacmanMirrors"""
    def __init__(self):
Hugo Posnic's avatar
Hugo Posnic committed
        """Init"""
        self.config = {
            "config_file": conf.CONFIG_FILE
FH's avatar
FH committed
        self.custom = False
        self.default = False
FH's avatar
FH committed
        self.fasttrack = None
        self.geoip = False
        self.interactive = False
FH's avatar
FH committed
        self.max_wait_time = 2
        self.mirrors = Mirror()
FH's avatar
FH committed
        self.network = True
Frede H's avatar
Frede H committed
        self.no_display = False
        self.no_mirrorlist = False
        self.no_status = False
FH's avatar
FH committed
        self.quiet = False
        self.selected_countries = []
    def run(self):
Frede H's avatar
Frede H committed
        # Setup config: retunrs the config dictionary and true/false on custom
        # Parse commandline
        # i686 check - change branch to x32-$branch
Frede H's avatar
Frede H committed
        # sanitize config
        # Check network
Frede H's avatar
Frede H committed
        # Update mirror pool
        # Check if mirrorlist is not to be touched - normal exit
        # Handle missing network
        # Load all mirrors
        # Build mirror list
Frede H's avatar
Frede H committed
        (self.config, self.custom) = configFn.setup_config()
Frede H's avatar
Frede H committed
        fileFn.create_dir(self.config["work_dir"])
        cliFn.parse_command_line(self, GTK_AVAILABLE)
        util.i686_check(self, write=True)
Frede H's avatar
Frede H committed
        if not configFn.sanitize_config(self.config):
            sys.exit(2)
Frede H's avatar
Frede H committed
        self.network = httpFn.inet_conn_check()
Frede H's avatar
Frede H committed
        if self.network:
Frede H's avatar
Frede H committed
            httpFn.update_mirror_pool(self.config, quiet=self.quiet)
Frede H's avatar
Frede H committed
        if self.no_mirrorlist:
Frede H's avatar
Frede H committed
            sys.exit(0)
Frede H's avatar
Frede H committed
        if not self.network:
Frede H's avatar
Frede H committed
            if not self.quiet:
Frede H's avatar
Frede H committed
                pacman_mirrors.functions.util.internet_message()
Frede H's avatar
Frede H committed
            self.config["method"] = "random"
            self.fasttrack = False
        # Load all mirrors
Frede H's avatar
Frede H committed
        defaultFn.load_config_mirror_pool(self)
        # Decide which type of mirrorlist to create
        * Fasttrack
        * Interactive
        * Default
        if self.fasttrack:
Frede H's avatar
Frede H committed
            fasttrack.build_mirror_list(self, self.fasttrack)
        elif self.interactive:
Frede H's avatar
Frede H committed
            interactive.build_mirror_list(self)
Frede H's avatar
Frede H committed
            common.build_mirror_list(self)
Frede H's avatar
Frede H committed

if __name__ == "__main__":
FH's avatar
FH committed
    app = PacmanMirrors()
    app.run()