index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | demostanis <demostanis@protonmail.com> | 2020-10-23 15:44:02 +0200 |
---|---|---|
committer | demostanis <demostanis@protonmail.com> | 2020-10-23 15:44:02 +0200 |
commit | 434cf7122174e15b166449ec531d4c18d064368c (patch) | |
tree | 25a49885144fefe0797178c9e9f39ed5f415bbc9 /archinstall | |
parent | 7f72c0fd93eae201c6b802d3c5059e51d8c8d4b1 (diff) |
-rw-r--r-- | archinstall/__main__.py | 58 |
diff --git a/archinstall/__main__.py b/archinstall/__main__.py index fe4a3732..744d2a5d 100644 --- a/archinstall/__main__.py +++ b/archinstall/__main__.py @@ -1,5 +1,6 @@ +from urllib.parse import urlparse import archinstall, sys, os, glob -import importlib.util +import urllib.request # TODO: Learn the dark arts of argparse... # (I summon thee dark spawn of cPython) @@ -19,28 +20,41 @@ def find_examples(): return {os.path.basename(path): path for path in glob.glob(f'{examples}/*.py')} +def find(url): + parsed_url = urlparse(url) + if not parsed_url.scheme: + examples = find_examples() + if f"{url}.py" in examples: + return open(examples[f"{url}.py"]).read() + try: + return open(url, 'r').read() + except FileNotFoundError: + return ProfileNotFound(f"File {url} does not exist") + elif parsed_url.scheme in ('https', 'http'): + return urllib.request.urlopen(url).read().decode('utf-8') + else: + return ProfileNotFound(f"Cannot handle scheme {parsed_url.scheme}") + def run_as_a_module(): - """ - Since we're running this as a 'python -m archinstall' module OR - a nuitka3 compiled version of the project. - This function and the file __main__ acts as a entry point. - """ - if len(sys.argv) == 1: sys.argv.append('guided') - - profile = sys.argv[1] - library = find_examples() - - if f'{profile}.py' not in library: - raise ProfileNotFound(f'Could not locate {profile}.py among the example files.') - - # Import and execute the chosen `<profile>.py`: - spec = importlib.util.spec_from_file_location( - library[f"{profile}.py"], - library[f"{profile}.py"] - ) - imported_path = importlib.util.module_from_spec(spec) - spec.loader.exec_module(imported_path) - sys.modules[library[f'{profile}.py']] = imported_path + """ + Since we're running this as a 'python -m archinstall' module OR + a nuitka3 compiled version of the project. + This function and the file __main__ acts as a entry point. + """ + if len(sys.argv) == 1: sys.argv.append('guided') + + try: + profile = find(sys.argv[1]) + print(profile) + except ProfileNotFound as err: + print(f"Couldn't find file: {err}") + sys.exit(1) + + try: + exec(profile) # Is this is very safe? + except Exception as err: + print(f"Failed to run profile... {err}") + sys.exit(1) # Should prompt for another profile path instead if __name__ == '__main__': run_as_a_module() |