aboutsummaryrefslogtreecommitdiff
path: root/modules/extensions.py
diff options
context:
space:
mode:
authord8ahazard <d8ahazard@gmail.com>2022-11-08 10:03:56 -0600
committerd8ahazard <d8ahazard@gmail.com>2022-11-08 10:03:56 -0600
commitcfcadeae9a61e1aff32960864f90299412c86d5c (patch)
treedf519035ab27e7cd68de38181f7deec76014fdb4 /modules/extensions.py
parentac085628540d0ec6a988fad93f5b8f2154209571 (diff)
Add option to preload extensions
By creating a file called "preload.py" in an extension folder and declaring a preload(parser) method, we can add extra command-line args for an extension.
Diffstat (limited to 'modules/extensions.py')
-rw-r--r--modules/extensions.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/modules/extensions.py b/modules/extensions.py
index 8e0977fd..544f3580 100644
--- a/modules/extensions.py
+++ b/modules/extensions.py
@@ -1,12 +1,12 @@
import os
import sys
import traceback
+from importlib.machinery import SourceFileLoader
import git
from modules import paths, shared
-
extensions = []
extensions_dir = os.path.join(paths.script_path, "extensions")
@@ -84,3 +84,24 @@ def list_extensions():
extension = Extension(name=dirname, path=path, enabled=dirname not in shared.opts.disabled_extensions)
extensions.append(extension)
+
+
+def preload_extensions(parser):
+ if not os.path.isdir(extensions_dir):
+ return
+
+ for dirname in sorted(os.listdir(extensions_dir)):
+ path = os.path.join(extensions_dir, dirname)
+ if not os.path.isdir(path):
+ continue
+ for file in os.listdir(path):
+ if "preload.py" in file:
+ full_file = os.path.join(path, file)
+ print(f"Got preload file: {full_file}")
+
+ try:
+ ext = SourceFileLoader("preload", full_file).load_module()
+ parser = ext.preload(parser)
+ except Exception as e:
+ print(f"Exception preloading script: {e}")
+ return parser \ No newline at end of file