Added pythons -m module support. __main__.py is the main module entry path, and setup.py now includes the examples (which as been renamed for more convenient module importing) which - enables __main__.py to locate the examples and import them via importlib and execute them.
This commit is contained in:
parent
e17fac498a
commit
60f581319f
|
|
@ -88,8 +88,8 @@ This installer will perform the following:
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
|
|
||||||
To test this, the simplest approach is to use a local image and create a loop device.<br>
|
To test this without a live ISO, the simplest approach is to use a local image and create a loop device.<br>
|
||||||
This can be done by installing `pacman -S arch-install-scripts util-linux` locally and do the following:
|
This can be done by installing `pacman -S arch-install-scripts util-linux` locally and doing the following:
|
||||||
|
|
||||||
# dd if=/dev/zero of=./testimage.img bs=1G count=5
|
# dd if=/dev/zero of=./testimage.img bs=1G count=5
|
||||||
# losetup -fP ./testimage.img
|
# losetup -fP ./testimage.img
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,4 @@ from .lib.user_interaction import *
|
||||||
from .lib.exceptions import *
|
from .lib.exceptions import *
|
||||||
from .lib.installer import *
|
from .lib.installer import *
|
||||||
from .lib.profiles import *
|
from .lib.profiles import *
|
||||||
from .lib.luks import *
|
from .lib.luks import *
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print('Launching as a module?')
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
import archinstall, sys, os, glob
|
||||||
|
import importlib.util
|
||||||
|
|
||||||
|
class ProfileNotFound(BaseException):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# TODO: Learn the dark arts of argparse...
|
||||||
|
# (I summon thee dark spawn of cPython)
|
||||||
|
|
||||||
|
def find_examples():
|
||||||
|
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')}
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if len(sys.argv) == 1: sys.arv.append('guided')
|
||||||
|
|
||||||
|
profile = sys.argv[1]
|
||||||
|
library = find_examples()
|
||||||
|
|
||||||
|
if not f'{profile}.py' in library:
|
||||||
|
raise ProfileNotFound(f'Could not locate {profile}.py among the example files.')
|
||||||
|
|
||||||
|
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
|
||||||
|
|
@ -2,6 +2,7 @@ import os, json, hashlib, shlex, sys
|
||||||
import time, pty
|
import time, pty
|
||||||
from subprocess import Popen, STDOUT, PIPE, check_output
|
from subprocess import Popen, STDOUT, PIPE, check_output
|
||||||
from select import epoll, EPOLLIN, EPOLLHUP
|
from select import epoll, EPOLLIN, EPOLLHUP
|
||||||
|
from .exceptions import *
|
||||||
|
|
||||||
def log(*args, **kwargs):
|
def log(*args, **kwargs):
|
||||||
string = ' '.join([str(x) for x in args])
|
string = ' '.join([str(x) for x in args])
|
||||||
|
|
|
||||||
3
setup.py
3
setup.py
|
|
@ -1,4 +1,4 @@
|
||||||
import setuptools
|
import setuptools, glob
|
||||||
|
|
||||||
with open("README.md", "r") as fh:
|
with open("README.md", "r") as fh:
|
||||||
long_description = fh.read()
|
long_description = fh.read()
|
||||||
|
|
@ -19,4 +19,5 @@ setuptools.setup(
|
||||||
"Operating System :: POSIX :: Linux",
|
"Operating System :: POSIX :: Linux",
|
||||||
],
|
],
|
||||||
python_requires='>=3.8',
|
python_requires='>=3.8',
|
||||||
|
data_files=[('examples', glob.glob('examples/*.py'))],
|
||||||
)
|
)
|
||||||
Loading…
Reference in New Issue