1
0
Fork 0

Cleanup, isort, etc

This commit is contained in:
Félix Piédallu 2024-02-08 22:14:35 +01:00
parent a286aa3c61
commit d0854fb10a
2 changed files with 31 additions and 44 deletions

View file

@ -36,30 +36,6 @@ def git_repo_age(path: Path) -> bool | int:
return False return False
# Progress bar helper, stolen from https://stackoverflow.com/a/34482761
def progressbar(
it: list[Any],
prefix: str = "",
size: int = 60,
file: TextIO = sys.stdout) -> Generator[Any, None, None]:
count = len(it)
def show(j, name=""):
name += " "
x = int(size * j / count)
file.write(
"%s[%s%s] %i/%i %s\r" % (prefix, "#" * x, "." * (size - x), j, count, name)
)
file.flush()
show(0)
for i, item in enumerate(it):
yield item
show(i + 1, item[0])
file.write("\n")
file.flush()
@cache @cache
def get_catalog(working_only: bool = False) -> dict[str, dict[str, Any]]: def get_catalog(working_only: bool = False) -> dict[str, dict[str, Any]]:
"""Load the app catalog and filter out the non-working ones""" """Load the app catalog and filter out the non-working ones"""

View file

@ -2,25 +2,29 @@
import copy import copy
import json import json
import os
import subprocess
import multiprocessing
from pathlib import Path
import time
import shutil
from collections import OrderedDict
import tqdm
import logging import logging
import multiprocessing
import shutil
import subprocess
import time
from collections import OrderedDict
from functools import cache
from pathlib import Path
from typing import Any
import toml import toml
import tqdm
from tqdm.contrib.logging import logging_redirect_tqdm
from git import Repo from git import Repo
from app_caches import apps_cache_update_all, app_cache_folder # pylint: disable=import-error import appslib.xmpplogger # pylint: disable=import-error
from app_caches import app_cache_folder # pylint: disable=import-error
from app_caches import apps_cache_update_all # pylint: disable=import-error
from appslib.utils import (REPO_APPS_ROOT, # pylint: disable=import-error
get_antifeatures, get_catalog, get_categories)
from packaging_v2.convert_v1_manifest_to_v2_for_catalog import \ from packaging_v2.convert_v1_manifest_to_v2_for_catalog import \
convert_v1_manifest_to_v2_for_catalog # pylint: disable=import-error convert_v1_manifest_to_v2_for_catalog # pylint: disable=import-error
from appslib.utils import (REPO_APPS_ROOT, # pylint: disable=import-error
get_antifeatures, get_catalog, get_categories)
now = time.time() now = time.time()
@ -49,7 +53,7 @@ def antifeatures_list():
# Actual list build management # # Actual list build management #
################################ ################################
def __build_app_dict(data): def __build_app_dict(data) -> tuple[str, dict[str, Any]] | None:
name, info = data name, info = data
try: try:
return name, build_app_dict(name, info) return name, build_app_dict(name, info)
@ -59,14 +63,16 @@ def __build_app_dict(data):
def build_base_catalog(): def build_base_catalog():
result_dict = {} result_dict = {}
catalog = get_catalog(working_only=True)
with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool: with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool:
tasks = pool.imap(__build_app_dict, catalog.items()) with logging_redirect_tqdm():
tasks = pool.imap(__build_app_dict, catalog.items())
for result in tqdm.tqdm(tasks, total=len(catalog.keys()), ascii=" ·#"): for result in tqdm.tqdm(tasks, total=len(catalog.keys()), ascii=" ·#"):
assert result is not None if result is not None:
name, info = result name, info = result
result_dict[name] = info result_dict[name] = info
return result_dict return result_dict
@ -96,7 +102,8 @@ def write_catalog_v3(base_catalog, target_dir: Path) -> None:
if packaging_format < 2: if packaging_format < 2:
app["manifest"] = convert_v1_manifest_to_v2_for_catalog(app["manifest"]) app["manifest"] = convert_v1_manifest_to_v2_for_catalog(app["manifest"])
# We also remove the app install question and resources parts which aint needed anymore by webadmin etc (or at least we think ;P) # We also remove the app install question and resources parts which aint needed anymore
# by webadmin etc (or at least we think ;P)
for app in result_dict_with_manifest_v2.values(): for app in result_dict_with_manifest_v2.values():
if "manifest" in app and "install" in app["manifest"]: if "manifest" in app and "install" in app["manifest"]:
del app["manifest"]["install"] del app["manifest"]["install"]
@ -241,10 +248,14 @@ def build_app_dict(app, infos):
} }
if __name__ == "__main__": def main() -> None:
apps_cache_update_all(get_catalog(), parallel=50) apps_cache_update_all(get_catalog(), parallel=50)
catalog = build_base_catalog() catalog = build_base_catalog()
write_catalog_v2(catalog, REPO_APPS_ROOT / "builds" / "default" / "v2") write_catalog_v2(catalog, REPO_APPS_ROOT / "builds" / "default" / "v2")
write_catalog_v3(catalog, REPO_APPS_ROOT / "builds" / "default" / "v3") write_catalog_v3(catalog, REPO_APPS_ROOT / "builds" / "default" / "v3")
write_catalog_doc(catalog, REPO_APPS_ROOT / "builds" / "default" / "doc_catalog") write_catalog_doc(catalog, REPO_APPS_ROOT / "builds" / "default" / "doc_catalog")
if __name__ == "__main__":
main()