diff --git a/doc/generate_resource_doc.py b/doc/generate_resource_doc.py index ef98dc810..272845104 100644 --- a/doc/generate_resource_doc.py +++ b/doc/generate_resource_doc.py @@ -2,9 +2,10 @@ import ast import datetime import subprocess -version = open("../debian/changelog").readlines()[0].split()[1].strip("()"), +version = (open("../debian/changelog").readlines()[0].split()[1].strip("()"),) today = datetime.datetime.now().strftime("%d/%m/%Y") + def get_current_commit(): p = subprocess.Popen( "git rev-parse --verify HEAD", @@ -16,10 +17,13 @@ def get_current_commit(): current_commit = stdout.strip().decode("utf-8") return current_commit + + current_commit = get_current_commit() -print(f"""--- +print( + f"""--- title: App resources template: docs taxonomy: @@ -30,7 +34,8 @@ routes: Doc auto-generated by [this script](https://github.com/YunoHost/yunohost/blob/{current_commit}/doc/generate_resource_doc.py) on {today} (YunoHost version {version}) -""") +""" +) fname = "../src/utils/resources.py" @@ -40,12 +45,15 @@ content = open(fname).read() # in which we cant really 'import' the file because it will trigger a bunch of moulinette/yunohost imports... tree = ast.parse(content) -ResourceClasses = [c for c in tree.body if isinstance(c, ast.ClassDef) and c.bases and c.bases[0].id == 'AppResource'] +ResourceClasses = [ + c + for c in tree.body + if isinstance(c, ast.ClassDef) and c.bases and c.bases[0].id == "AppResource" +] ResourceDocString = {} for c in ResourceClasses: - assert c.body[1].targets[0].id == "type" resource_id = c.body[1].value.value docstring = ast.get_docstring(c) diff --git a/src/app.py b/src/app.py index 26102c723..8466fa604 100644 --- a/src/app.py +++ b/src/app.py @@ -2593,7 +2593,7 @@ def _check_manifest_requirements( yield ( "arch", arch_requirement in ["all", "?"] or arch in arch_requirement, - {"current": arch, "required": ', '.join(arch_requirement)}, + {"current": arch, "required": ", ".join(arch_requirement)}, "app_arch_not_supported", # i18n: app_arch_not_supported ) @@ -2678,9 +2678,7 @@ def _guess_webapp_path_requirement(app_folder: str) -> str: if len(domain_questions) == 1 and len(path_questions) == 1: return "domain_and_path" if len(domain_questions) == 1 and len(path_questions) == 0: - if manifest.get("packaging_format", 0) < 2: - # This is likely to be a full-domain app... # Confirm that this is a full-domain app This should cover most cases @@ -2691,7 +2689,9 @@ def _guess_webapp_path_requirement(app_folder: str) -> str: # Full-domain apps typically declare something like path_url="/" or path=/ # and use ynh_webpath_register or yunohost_app_checkurl inside the install script - install_script_content = read_file(os.path.join(app_folder, "scripts/install")) + install_script_content = read_file( + os.path.join(app_folder, "scripts/install") + ) if re.search( r"\npath(_url)?=[\"']?/[\"']?", install_script_content @@ -2701,7 +2701,9 @@ def _guess_webapp_path_requirement(app_folder: str) -> str: else: # For packaging v2 apps, check if there's a permission with url being a string perm_resource = manifest.get("resources", {}).get("permissions") - if perm_resource is not None and isinstance(perm_resource.get("main", {}).get("url"), str): + if perm_resource is not None and isinstance( + perm_resource.get("main", {}).get("url"), str + ): return "full_domain" return "?" diff --git a/src/backup.py b/src/backup.py index 38d4c080f..0cf73c4ae 100644 --- a/src/backup.py +++ b/src/backup.py @@ -941,7 +941,14 @@ class RestoreManager: # Use a dummy password which is not gonna be saved anywhere # because the next thing to happen should be that a full restore of the LDAP db will happen - tools_postinstall(domain, "tmpadmin", "Tmp Admin", password=random_ascii(70), ignore_dyndns=True, overwrite_root_password=False) + tools_postinstall( + domain, + "tmpadmin", + "Tmp Admin", + password=random_ascii(70), + ignore_dyndns=True, + overwrite_root_password=False, + ) def clean(self): """ @@ -1190,7 +1197,7 @@ class RestoreManager: except Exception as e: raise YunohostError( f"The following critical error happened during restoration: {e}", - raw_msg=True + raw_msg=True, ) finally: self.clean() diff --git a/src/dns.py b/src/dns.py index 2d39aa02e..3a5e654ec 100644 --- a/src/dns.py +++ b/src/dns.py @@ -593,7 +593,9 @@ def _get_registrar_config_section(domain): registrar_list = read_toml(DOMAIN_REGISTRAR_LIST_PATH) registrar_credentials = registrar_list.get(registrar) if registrar_credentials is None: - logger.warning(f"Registrar {registrar} unknown / Should be added to YunoHost's registrar_list.toml by the development team!") + logger.warning( + f"Registrar {registrar} unknown / Should be added to YunoHost's registrar_list.toml by the development team!" + ) registrar_credentials = {} for credential, infos in registrar_credentials.items(): infos["default"] = infos.get("default", "") diff --git a/src/migrations/0026_new_admins_group.py b/src/migrations/0026_new_admins_group.py index 3b2207eb8..43f10a7b6 100644 --- a/src/migrations/0026_new_admins_group.py +++ b/src/migrations/0026_new_admins_group.py @@ -53,12 +53,14 @@ class MyMigration(Migration): if not new_admin_user: for user in all_users: aliases = user_info(user).get("mail-aliases", []) - if any(alias.startswith(f"admin@{main_domain}") for alias in aliases) \ - or any(alias.startswith(f"postmaster@{main_domain}") for alias in aliases): + if any( + alias.startswith(f"admin@{main_domain}") for alias in aliases + ) or any( + alias.startswith(f"postmaster@{main_domain}") for alias in aliases + ): new_admin_user = user break - self.ldap_migration_started = True if new_admin_user: diff --git a/src/utils/config.py b/src/utils/config.py index 5704686c0..6f06ed1fb 100644 --- a/src/utils/config.py +++ b/src/utils/config.py @@ -1359,7 +1359,9 @@ class GroupQuestion(Question): super().__init__(question, context) - self.choices = list(user_group_list(short=True, include_primary_groups=False)["groups"]) + self.choices = list( + user_group_list(short=True, include_primary_groups=False)["groups"] + ) def _human_readable_group(g): # i18n: visitors diff --git a/src/utils/resources.py b/src/utils/resources.py index 7a1ebb386..410d3b1a5 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -182,7 +182,10 @@ class AppResource: tmpdir = _make_tmp_workdir_for_app(app=self.app) env_ = _make_environment_for_app_script( - self.app, workdir=tmpdir, action=f"{action}_{self.type}", include_app_settings=True, + self.app, + workdir=tmpdir, + action=f"{action}_{self.type}", + include_app_settings=True, ) env_.update(env) @@ -306,7 +309,7 @@ class PermissionsResource(AppResource): ): raise YunohostError( "URL for the 'main' permission should be '/' for webapps (or undefined/None for non-webapps). Note that / refers to the install url of the app, i.e $domain.tld/$path/", - raw_msg=True + raw_msg=True, ) super().__init__({"permissions": properties}, *args, **kwargs) @@ -474,12 +477,16 @@ class SystemuserAppResource(AppResource): if check_output(f"getent passwd {self.app} &>/dev/null || true").strip(): os.system(f"deluser {self.app} >/dev/null") if check_output(f"getent passwd {self.app} &>/dev/null || true").strip(): - raise YunohostError(f"Failed to delete system user for {self.app}", raw_msg=True) + raise YunohostError( + f"Failed to delete system user for {self.app}", raw_msg=True + ) if check_output(f"getent group {self.app} &>/dev/null || true").strip(): os.system(f"delgroup {self.app} >/dev/null") if check_output(f"getent group {self.app} &>/dev/null || true").strip(): - raise YunohostError(f"Failed to delete system user for {self.app}", raw_msg=True) + raise YunohostError( + f"Failed to delete system user for {self.app}", raw_msg=True + ) # FIXME : better logging and error handling, add stdout/stderr from the deluser/delgroup commands... @@ -748,7 +755,7 @@ class AptDependenciesAppResource(AppResource): ): raise YunohostError( "In apt resource in the manifest: 'extras' repo should have the keys 'repo', 'key' and 'packages' defined and be strings", - raw_msg=True + raw_msg=True, ) super().__init__(properties, *args, **kwargs) @@ -866,7 +873,7 @@ class PortsResource(AppResource): if self._port_is_used(port_value): raise YunohostValidationError( f"Port {port_value} is already used by another process or app.", - raw_msg=True + raw_msg=True, ) else: while self._port_is_used(port_value):