Refactor code (#3247)

This commit is contained in:
Daniel Girtler 2025-03-25 19:49:18 +11:00 committed by GitHub
parent c15dbf0b0d
commit 1b890492d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 10 additions and 52 deletions

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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/'

View File

@ -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:

View File

@ -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