Refactor code (#3247)
This commit is contained in:
parent
c15dbf0b0d
commit
1b890492d0
|
|
@ -14,10 +14,10 @@ from pydantic.dataclasses import dataclass as p_dataclass
|
|||
from archinstall.lib.models.audio_configuration import AudioConfiguration
|
||||
from archinstall.lib.models.bootloader import Bootloader
|
||||
from archinstall.lib.models.device_model import DiskEncryption, DiskLayoutConfiguration
|
||||
from archinstall.lib.models.gen import Repository
|
||||
from archinstall.lib.models.locale import LocaleConfiguration
|
||||
from archinstall.lib.models.mirrors import MirrorConfiguration
|
||||
from archinstall.lib.models.network_configuration import NetworkConfiguration
|
||||
from archinstall.lib.models.packages import Repository
|
||||
from archinstall.lib.models.profile_model import ProfileConfiguration
|
||||
from archinstall.lib.models.users import User
|
||||
from archinstall.lib.output import error, warn
|
||||
|
|
|
|||
|
|
@ -10,8 +10,6 @@ import string
|
|||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
import urllib.error
|
||||
import urllib.parse
|
||||
from collections.abc import Callable, Iterator
|
||||
from datetime import date, datetime
|
||||
from enum import Enum
|
||||
|
|
@ -19,7 +17,6 @@ from pathlib import Path
|
|||
from select import EPOLLHUP, EPOLLIN, epoll
|
||||
from shutil import which
|
||||
from typing import TYPE_CHECKING, Any, override
|
||||
from urllib.request import Request, urlopen
|
||||
|
||||
from .exceptions import RequirementError, SysCallError
|
||||
from .output import debug, error, info
|
||||
|
|
@ -496,45 +493,6 @@ def run_custom_user_commands(commands: list[str], installation: Installer) -> No
|
|||
os.unlink(chroot_path)
|
||||
|
||||
|
||||
def json_stream_to_structure(configuration_identifier: str, stream: str, target: dict[str, Any]) -> bool:
|
||||
"""
|
||||
Load a JSON encoded dictionary from a stream and merge it into an existing dictionary.
|
||||
A stream can be a filepath, a URL or a raw JSON string.
|
||||
Returns True if the operation succeeded, False otherwise.
|
||||
+configuration_identifier is just a parameter to get meaningful, but not so long messages
|
||||
"""
|
||||
|
||||
raw: str | None = None
|
||||
# Try using the stream as a URL that should be grabbed
|
||||
if urllib.parse.urlparse(stream).scheme:
|
||||
try:
|
||||
with urlopen(Request(stream, headers={'User-Agent': 'ArchInstall'})) as response:
|
||||
raw = response.read()
|
||||
except urllib.error.HTTPError as err:
|
||||
error(f"Could not fetch JSON from {stream} as {configuration_identifier}: {err}")
|
||||
return False
|
||||
|
||||
# Try using the stream as a filepath that should be read
|
||||
if raw is None and (path := Path(stream)).exists():
|
||||
try:
|
||||
raw = path.read_text()
|
||||
except Exception as err:
|
||||
error(f"Could not read file {stream} as {configuration_identifier}: {err}")
|
||||
return False
|
||||
|
||||
try:
|
||||
# We use `or` to try the stream as raw JSON to be parsed
|
||||
structure = json.loads(raw or stream)
|
||||
except Exception as err:
|
||||
error(f"{configuration_identifier} contains an invalid JSON format: {err}")
|
||||
return False
|
||||
if not isinstance(structure, dict):
|
||||
error(f"{stream} passed as {configuration_identifier} is not a JSON encoded dictionary")
|
||||
return False
|
||||
target.update(structure)
|
||||
return True
|
||||
|
||||
|
||||
def secret(x: str) -> str:
|
||||
""" return * with len equal to to the input string """
|
||||
return '*' * len(x)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ from archinstall.lib.models.device_model import (
|
|||
SubvolumeModification,
|
||||
Unit,
|
||||
)
|
||||
from archinstall.lib.models.gen import Repository
|
||||
from archinstall.lib.models.packages import Repository
|
||||
from archinstall.tui.curses_menu import Tui
|
||||
|
||||
from .args import arch_config_handler
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from __future__ import annotations
|
|||
from pathlib import Path
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from archinstall.lib.models.gen import Repository
|
||||
from archinstall.lib.models.packages import Repository
|
||||
from archinstall.lib.packages.packages import list_available_packages
|
||||
from archinstall.tui.curses_menu import EditMenu, SelectMenu, Tui
|
||||
from archinstall.tui.menu_item import MenuItem, MenuItemGroup
|
||||
|
|
@ -11,7 +11,7 @@ from archinstall.tui.types import Alignment, FrameProperties, Orientation, Previ
|
|||
|
||||
from ..locale.utils import list_timezones
|
||||
from ..models.audio_configuration import Audio, AudioConfiguration
|
||||
from ..models.gen import AvailablePackage
|
||||
from ..models.packages import AvailablePackage
|
||||
from ..output import warn
|
||||
from ..translationhandler import Language
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ from archinstall.tui.types import Alignment, FrameProperties, ResultType
|
|||
|
||||
from .menu.abstract_menu import AbstractSubMenu
|
||||
from .menu.list_manager import ListManager
|
||||
from .models.gen import Repository
|
||||
from .models.mirrors import (
|
||||
CustomRepository,
|
||||
CustomServer,
|
||||
|
|
@ -20,6 +19,7 @@ from .models.mirrors import (
|
|||
SignCheck,
|
||||
SignOption,
|
||||
)
|
||||
from .models.packages import Repository
|
||||
from .networking import fetch_data_from_url
|
||||
from .output import FormattedOutput, debug
|
||||
|
||||
|
|
|
|||
|
|
@ -27,10 +27,10 @@ from .device_model import (
|
|||
Unit,
|
||||
_DeviceInfo,
|
||||
)
|
||||
from .gen import LocalPackage, PackageSearch, PackageSearchResult, Repository
|
||||
from .locale import LocaleConfiguration
|
||||
from .mirrors import CustomRepository, MirrorConfiguration, MirrorRegion
|
||||
from .network_configuration import NetworkConfiguration, Nic, NicType
|
||||
from .packages import LocalPackage, PackageSearch, PackageSearchResult, Repository
|
||||
from .profile_model import ProfileConfiguration
|
||||
from .users import PasswordStrength, User
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from typing import TYPE_CHECKING, Any, override
|
|||
|
||||
from pydantic import BaseModel, field_validator, model_validator
|
||||
|
||||
from ..models.gen import Repository
|
||||
from ..models.packages import Repository
|
||||
from ..networking import DownloadTimer, ping
|
||||
from ..output import debug
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from urllib.request import urlopen
|
|||
from urllib.response import addinfourl
|
||||
|
||||
from ..exceptions import PackageError, SysCallError
|
||||
from ..models.gen import AvailablePackage, LocalPackage, PackageSearch, PackageSearchResult, Repository
|
||||
from ..models.packages import AvailablePackage, LocalPackage, PackageSearch, PackageSearchResult, Repository
|
||||
from ..pacman import Pacman
|
||||
|
||||
BASE_URL_PKG_SEARCH = 'https://archlinux.org/packages/search/json/'
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import re
|
|||
from pathlib import Path
|
||||
from shutil import copy2
|
||||
|
||||
from ..models.gen import Repository
|
||||
from ..models.packages import Repository
|
||||
|
||||
|
||||
class Config:
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ from archinstall.lib.hardware import GfxDriver
|
|||
from archinstall.lib.models.audio_configuration import Audio, AudioConfiguration
|
||||
from archinstall.lib.models.bootloader import Bootloader
|
||||
from archinstall.lib.models.device_model import DiskLayoutConfiguration, DiskLayoutType
|
||||
from archinstall.lib.models.gen import Repository
|
||||
from archinstall.lib.models.locale import LocaleConfiguration
|
||||
from archinstall.lib.models.mirrors import CustomRepository, CustomServer, MirrorConfiguration, MirrorRegion, SignCheck, SignOption
|
||||
from archinstall.lib.models.network_configuration import NetworkConfiguration, Nic, NicType
|
||||
from archinstall.lib.models.packages import Repository
|
||||
from archinstall.lib.models.profile_model import ProfileConfiguration
|
||||
from archinstall.lib.models.users import User
|
||||
from archinstall.lib.profile.profiles_handler import profile_handler
|
||||
|
|
|
|||
Loading…
Reference in New Issue