Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--__init__.py1
-rw-r--r--archinstall/__main__.py23
-rw-r--r--archinstall/lib/installer.py23
3 files changed, 43 insertions, 4 deletions
diff --git a/__init__.py b/__init__.py
new file mode 100644
index 00000000..eaa33d02
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1 @@
+from .archinstall import *
diff --git a/archinstall/__main__.py b/archinstall/__main__.py
index d5869020..fd536258 100644
--- a/archinstall/__main__.py
+++ b/archinstall/__main__.py
@@ -1,19 +1,30 @@
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)
+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')}
-if __name__ == '__main__':
+def run_as_a_module():
+ """
+ Ssince 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]
@@ -22,7 +33,11 @@ if __name__ == '__main__':
if not f'{profile}.py' 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
+
+if __name__ == '__main__':
+ run_as_a_module() \ No newline at end of file
diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py
index d53cc961..7f9aba71 100644
--- a/archinstall/lib/installer.py
+++ b/archinstall/lib/installer.py
@@ -7,6 +7,29 @@ from .user_interaction import *
from .profiles import Profile
class Installer():
+ """
+ `Installer()` is the wrapper for most basic installation steps.
+ It also wraps :py:func:`~archinstall.Installer.pacstrap` among other things.
+
+ :param partition: Requires a partition as the first argument, this is
+ so that the installer can mount to `mountpoint` and strap packages there.
+ :type partition: class:`archinstall.Partition`
+
+ :param boot_partition: There's two reasons for needing a boot partition argument,
+ The first being so that `mkinitcpio` can place the `vmlinuz` kernel at the right place
+ during the `pacstrap` or `linux` and the base packages for a minimal installation.
+ The second being when :py:func:`~archinstall.Installer.add_bootloader` is called,
+ A `boot_partition` must be known to the installer before this is called.
+ :type boot_partition: class:`archinstall.Partition`
+
+ :param profile: A profile to install, this is optional and can be called later manually.
+ This just simplifies the process by not having to call :py:func:`~archinstall.Installer.install_profile` later on.
+ :type profile: str, optional
+
+ :param hostname: The given /etc/hostname for the machine.
+ :type hostname: str, optional
+
+ """
def __init__(self, partition, boot_partition, *, profile=None, mountpoint='/mnt', hostname='ArchInstalled'):
self.profile = profile
self.hostname = hostname