Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall
diff options
context:
space:
mode:
authorDylan Taylor <dylan@dylanmtaylor.com>2021-05-19 15:51:16 -0400
committerDylan Taylor <dylan@dylanmtaylor.com>2021-05-19 17:06:42 -0400
commitc1cd845d07c2e6b77e1971493f982546004b31ff (patch)
tree5bca1b99e061f7773986cde4374b655e688d2f71 /archinstall
parentbbb4599165a644bbd81b085fb3210cd0e497d503 (diff)
Added support for getting configuration from a URL
Diffstat (limited to 'archinstall')
-rw-r--r--archinstall/__init__.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/archinstall/__init__.py b/archinstall/__init__.py
index 276d122f..91e0cb12 100644
--- a/archinstall/__init__.py
+++ b/archinstall/__init__.py
@@ -1,5 +1,8 @@
"""Arch Linux installer - guided, templates etc."""
-from argparse import ArgumentParser, FileType
+import urllib.error
+import urllib.parse
+import urllib.request
+from argparse import ArgumentParser
from .lib.disk import *
from .lib.exceptions import *
@@ -25,7 +28,7 @@ __version__ = "2.2.0.dev1"
def initialize_arguments():
config = {}
- parser.add_argument("--config", nargs="?", help="json config file", type=FileType("r", encoding="UTF-8"))
+ parser.add_argument("--config", nargs="?", help="JSON configuration file or URL")
parser.add_argument("--silent", action="store_true",
help="Warning!!! No prompts, ignored if config is not passed")
parser.add_argument("--script", default="guided", nargs="?", help="Script to run for installation", type=str)
@@ -41,7 +44,15 @@ def initialize_arguments():
args = parser.parse_args()
if args.config is not None:
try:
- config = json.load(args.config)
+ # First, let's check if this is a URL scheme instead of a filename
+ parsed_url = urllib.parse.urlparse(args.config)
+
+ if not parsed_url.scheme: # The Profile was not a direct match on a remote URL, it must be a local file.
+ with open(args.config) as file:
+ config = json.load(file)
+ else: # Attempt to load the configuration from the URL.
+ with urllib.request.urlopen(args.config) as response:
+ config = json.loads(response.read())
except Exception as e:
print(e)
# Installation can't be silent if config is not passed