Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/profiles/awesome.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton.feeds+github@gmail.com>2020-09-30 09:11:36 +0000
committerAnton Hvornum <anton.feeds+github@gmail.com>2020-09-30 09:11:36 +0000
commit85fd06fa8a20a1861c9ec0d8e15da954fe5cdd43 (patch)
tree9bcb45341bd95a225800c5c7680c632e4ebff5cd /profiles/awesome.py
parent5a4d68e617ba4e76137db96542ebaeb08acd70cb (diff)
Finalized magic function _prep_function(). Gets returned when a profile is imported through archinstall.select_profile() user-interaction helper function. Asks for additional user-input right away rather than half way into the installation. This makes sure user input is taken care of before starting the installation. Although it complicates the code layout a tiny bit. Profiles need a __name__ and a _prep_function combo in order to be safely executed by select_profile(). select_profile() will not attempt to run or execute the code in any way unless those to conditions are met. In theory :)
Diffstat (limited to 'profiles/awesome.py')
-rw-r--r--profiles/awesome.py71
1 files changed, 45 insertions, 26 deletions
diff --git a/profiles/awesome.py b/profiles/awesome.py
index e44c2428..a0267156 100644
--- a/profiles/awesome.py
+++ b/profiles/awesome.py
@@ -2,29 +2,48 @@
import archinstall
-# Install dependency profiles
-archinstall.install_profile('xorg')
-
-arguments = {
- 'keyboard_layout' : 'sv-latin1',
- "editor" : "nano",
- "mediaplayer" : "lollypop gstreamer gst-plugins-good gnome-keyring",
- "filebrowser" : "nemo gpicview-gtk3",
- "webbrowser" : "chromium",
- "window_manager" : "awesome",
- "virtulization" : "qemu ovmf",
- "utils" : "openssh sshfs git htop pkgfile scrot dhclient wget smbclient cifs-utils libu2f-host",
- "audio" : "pulseaudio pulseaudio-alsa pavucontrol"
-}
-
-installation.add_additional_packages("{webbrowser} {utils} {mediaplayer} {window_manager} {virtulization} {filebrowser} {editor}".format(**arguments))
-
-with open(f'{installation.mountpoint}/etc/X11/xinit/xinitrc', 'a') as X11:
- X11.write('setxkbmap se\n')
-
-with open(f'{installation.mountpoint}/etc/vconsole.conf', 'a') as vconsole:
- vconsole.write('KEYMAP={keyboard_layout}\n'.format(**arguments))
- vconsole.write('FONT=lat9w-16\n')
-
-awesome = archinstall.Application(installation, 'awesome')
-awesome.install() \ No newline at end of file
+def _prep_function(*args, **kwargs):
+ """
+ Magic function called by the importing installer
+ before continuing any further. It also avoids executing any
+ other code in this stage. So it's a safe way to ask the user
+ for more input before any other installer steps start.
+ """
+
+ profile = archinstall.Profile(None, 'xorg')
+ with profile.load_instructions() as imported:
+ if hasattr(imported, '_prep_function'):
+ return imported._prep_function()
+ else:
+ print('Deprecated (??): xorg profile has no _prep_function() anymore')
+
+# Ensures that this code only gets executed if executed
+# through importlib.util.spec_from_file_location("awesome", "/somewhere/awesome.py")
+# or through conventional import awesome
+if __name__ == 'awesome':
+ # Install dependency profiles
+ installation.install_profile('xorg')
+
+ arguments = {
+ 'keyboard_layout' : 'sv-latin1',
+ "editor" : "nano",
+ "mediaplayer" : "lollypop gstreamer gst-plugins-good gnome-keyring",
+ "filebrowser" : "nemo gpicview-gtk3",
+ "webbrowser" : "chromium",
+ "window_manager" : "awesome",
+ "virtulization" : "qemu ovmf",
+ "utils" : "openssh sshfs git htop pkgfile scrot dhclient wget smbclient cifs-utils libu2f-host",
+ "audio" : "pulseaudio pulseaudio-alsa pavucontrol"
+ }
+
+ installation.add_additional_packages("{webbrowser} {utils} {mediaplayer} {window_manager} {virtulization} {filebrowser} {editor}".format(**arguments))
+
+ with open(f'{installation.mountpoint}/etc/X11/xinit/xinitrc', 'a') as X11:
+ X11.write('setxkbmap se\n')
+
+ with open(f'{installation.mountpoint}/etc/vconsole.conf', 'a') as vconsole:
+ vconsole.write('KEYMAP={keyboard_layout}\n'.format(**arguments))
+ vconsole.write('FONT=lat9w-16\n')
+
+ awesome = archinstall.Application(installation, 'awesome')
+ awesome.install() \ No newline at end of file