Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/__main__.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton.feeds+github@gmail.com>2020-11-08 22:57:53 +0000
committerAnton Hvornum <anton.feeds+github@gmail.com>2020-11-08 22:57:53 +0000
commit5ad6ea26c8ad12f394b4e9f8a577c935f1f29785 (patch)
treec242b911c1b6ca8679774f18335a57f54616e9b2 /archinstall/__main__.py
parented579a07ed8e958f11da0117be9d5fc6fd918fed (diff)
Tweaked #58 slightly. Execution is done with an attempt to retain file line numbers when executing. It also consolidates behavior of files and remote documents in a 'similar' manner.
Diffstat (limited to 'archinstall/__main__.py')
-rw-r--r--archinstall/__main__.py51
1 files changed, 3 insertions, 48 deletions
diff --git a/archinstall/__main__.py b/archinstall/__main__.py
index 4575a7e1..e91e050e 100644
--- a/archinstall/__main__.py
+++ b/archinstall/__main__.py
@@ -1,48 +1,10 @@
-from urllib.parse import urlparse
import archinstall
import sys
import os
-import glob
-import traceback
-import urllib.request
# TODO: Learn the dark arts of argparse...
# (I summon thee dark spawn of cPython)
-
-class ProfileNotFound(BaseException):
- pass
-
-
-def find_examples():
- """
- Used to locate the examples, bundled with the module or executable.
-
- :return: {'guided.py' : './examples/guided.py', '<profile #2>' : '<path #2>'}
- :rtype: dict
- """
- cwd = os.path.abspath(f'{os.path.dirname(__file__)}')
- examples = f"{cwd}/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
@@ -54,20 +16,13 @@ def run_as_a_module():
sys.argv.append('guided')
try:
- profile = find(sys.argv[1])
- except ProfileNotFound as err:
+ script = archinstall.find_installation_script(sys.argv[1])
+ except archinstall.ProfileNotFound as err:
print(f"Couldn't find file: {err}")
sys.exit(1)
os.chdir(os.path.abspath(os.path.dirname(__file__)))
-
- try:
- exec(profile) # Is this is very safe?
- except Exception as err:
- print(f"Error in profile {sys.argv[1]}: {err}")
- traceback.print_exc(file=sys.stdout)
- sys.exit(1) # Should prompt for another profile path instead
-
+ script.execute()
if __name__ == '__main__':
run_as_a_module()