diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f66e1ce6..8f8b5271 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -98,14 +98,6 @@ metadata_v0: # Ubuntu and other distros often lack https:// support - grep Debian /etc/issue.net && { find /etc/apt/sources.list* -type f | xargs sed -i s,http:,https:, ; } - # The official Debian docker images ship without ca-certificates, - # TLS certificates cannot be verified until that is installed. The - # following code turns off TLS verification, and enables HTTPS, so - # at least unverified TLS is used for apt-get instead of plain - # HTTP. Once ca-certificates is installed, the CA verification is - # enabled by removing this config. This set up makes the initial - # `apt-get update` and `apt-get install` look the same as verified - # TLS to the network observer and hides the metadata. - echo 'Acquire::https::Verify-Peer "false";' > /etc/apt/apt.conf.d/99nocacertificates - apt-get update - apt-get install ca-certificates @@ -220,6 +212,21 @@ ubuntu_jammy_pip: - LANGUAGE='de' fdroid --help | grep 'Gültige Befehle sind' +# The gradlew-fdroid tests are isolated from the rest of the test +# suite, so they run as their own job. +gradlew-fdroid: + image: debian:bookworm-slim + <<: *apt-template + rules: + - changes: + - .gitlab-ci.yml + - gradlew-fdroid + - tests/test_gradlew-fdroid + script: + - apt-get install ca-certificates curl default-jdk-headless unzip + - ./tests/test_gradlew-fdroid + + # Run all the various linters and static analysis tools. hooks/pre-commit: stage: lint @@ -279,9 +286,11 @@ shellcheck: rules: - changes: - .gitlab-ci.yml + - gradlew-fdroid - hooks/install-hooks.sh - hooks/pre-commit - tests/run-tests + - tests/test_gradlew-fdroid <<: *apt-template script: - apt-get install shellcheck @@ -290,6 +299,10 @@ shellcheck: hooks/install-hooks.sh hooks/pre-commit tests/run-tests + # TODO make the gradlew things pass the standard above + - shellcheck --severity=error --color + gradlew-fdroid + tests/test_gradlew-fdroid # Check all the dependencies in Debian to mirror production. CVEs are # generally fixed in the latest versions in pip/pypi.org, so it isn't @@ -430,7 +443,7 @@ macOS: - brew install --cask android-commandlinetools temurin # temurin is a JDK # test suite dependencies - - brew install bash coreutils gnu-sed + - brew install dash bash coreutils gnu-sed # TODO port tests/run-tests to POSIX and gsed, it has a couple GNU-isms like du --bytes - export PATH="$(brew --prefix fdroidserver)/libexec/bin:$(brew --prefix coreutils)/libexec/gnubin:$PATH" @@ -447,26 +460,42 @@ macOS: - echo "macOS sticks with bash 3.x because of licenses, so avoid new bash syntax" - /bin/bash --version - - /bin/bash -n tests/run-tests + - /bin/bash -n gradlew-fdroid tests/run-tests # test fdroidserver from git with current package's dependencies - fdroid="$(brew --prefix fdroidserver)/libexec/bin/python3 $PWD/fdroid" ./tests/run-tests gradle: - image: debian:trixie-slim - <<: *apt-template + image: debian:bookworm-slim rules: - - changes: - - .gitlab-ci.yml - - makebuildserver + - if: "$PERSONAL_ACCESS_TOKEN" + <<: *apt-template + variables: + GIT_DEPTH: 1000 script: - apt-get install ca-certificates git + openssh-client + python3-bs4 python3-colorama + python3-git + python3-gitlab python3-packaging python3-requests + # if this is a merge request fork, then only check if relevant files changed + - if [ "$CI_PROJECT_NAMESPACE" != "fdroid" ]; then + set -x; + git fetch https://gitlab.com/fdroid/fdroidserver.git; + for f in `git diff --name-only --diff-filter=d FETCH_HEAD...HEAD`; do + test "$f" == "makebuildserver" && export CHANGED="$f $CHANGED"; + test "$f" == "gradlew-fdroid" && export CHANGED="$f $CHANGED"; + done; + test -z "$CHANGED" && exit; + echo $CHANGED; + set +x; + fi - ./tests/gradle-release-checksums.py @@ -521,8 +550,6 @@ fdroid build: env HOME=$home_vagrant fdroid" - - git -C $home_vagrant/gradlew-fdroid pull - - chown -R vagrant $home_vagrant - chown -R vagrant $fdroidserver/.git - chown vagrant $fdroidserver/ @@ -707,9 +734,7 @@ pages: artifacts: paths: - public - needs: - - job: "Build documentation" - optional: true + needs: ["Build documentation"] rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' # only publish pages on default (master) branch @@ -753,12 +778,12 @@ docker: # PUBLISH is the signing server. It has a very minimal manual setup. PUBLISH: - image: debian:bookworm-backports + image: debian:bullseye-backports <<: *python-rules-changes script: - apt-get update - apt-get -qy upgrade - - apt-get -qy install --no-install-recommends -t bookworm-backports + - apt-get -qy install --no-install-recommends -t bullseye-backports androguard apksigner curl diff --git a/MANIFEST.in b/MANIFEST.in index 77c176d4..0a24f98b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -20,7 +20,6 @@ include examples/template.yml include examples/Vagrantfile.yaml include gradlew-fdroid include LICENSE -include locale/ba/LC_MESSAGES/fdroidserver.po include locale/bo/LC_MESSAGES/fdroidserver.po include locale/ca/LC_MESSAGES/fdroidserver.po include locale/cs/LC_MESSAGES/fdroidserver.po diff --git a/buildserver/Dockerfile b/buildserver/Dockerfile index 27ada3f8..3e863df5 100644 --- a/buildserver/Dockerfile +++ b/buildserver/Dockerfile @@ -37,22 +37,11 @@ RUN useradd --create-home -s /bin/bash vagrant && echo -n 'vagrant:vagrant' | ch # # Ensure fdroidserver's dependencies are marked manual before purging # unneeded packages, otherwise, all its dependencies get purged. -# -# The official Debian docker images ship without ca-certificates, so -# TLS certificates cannot be verified until that is installed. The -# following code temporarily turns off TLS verification, and enables -# HTTPS, so at least unverified TLS is used for apt-get instead of -# plain HTTP. Once ca-certificates is installed, the CA verification -# is enabled by removing the newly created config file. This set up -# makes the initial `apt-get update` and `apt-get install` look the -# same as verified TLS to the network observer and hides the metadata. RUN printf "path-exclude=/usr/share/locale/*\npath-exclude=/usr/share/man/*\npath-exclude=/usr/share/doc/*\npath-include=/usr/share/doc/*/copyright\n" >/etc/dpkg/dpkg.cfg.d/01_nodoc \ && mkdir -p /usr/share/man/man1 \ - && echo 'Acquire::https::Verify-Peer "false";' > /etc/apt/apt.conf.d/99nocacertificates \ - && find /etc/apt/sources.list* -type f -exec sed -i s,http:,https:, {} \; \ && apt-get update \ && apt-get install ca-certificates \ - && rm /etc/apt/apt.conf.d/99nocacertificates \ + && sed -i 's,http:,https:,' /etc/apt/sources.list.d/debian.sources \ && apt-get upgrade \ && apt-get dist-upgrade \ && apt-get install openssh-client iproute2 python3 openssh-server sudo \ diff --git a/buildserver/provision-gradle b/buildserver/provision-gradle index a282a4c5..ca48bcf7 100644 --- a/buildserver/provision-gradle +++ b/buildserver/provision-gradle @@ -25,12 +25,7 @@ fi chmod -R a+rX /opt/gradle test -e /opt/gradle/bin || mkdir -p /opt/gradle/bin -git clone --depth 1 https://gitlab.com/fdroid/gradlew-fdroid.git /home/vagrant/gradlew-fdroid/ -chmod 0755 /home/vagrant/gradlew-fdroid/gradlew-fdroid -chmod -R u+rwX,a+rX,go-w /home/vagrant/gradlew-fdroid/ -ln -fs /home/vagrant/gradlew-fdroid/gradlew-fdroid /opt/gradle/bin/gradle -ln -fs /home/vagrant/gradlew-fdroid/gradlew-fdroid /usr/local/bin/ - +ln -fs /home/vagrant/fdroidserver/gradlew-fdroid /opt/gradle/bin/gradle chown -h vagrant:vagrant /opt/gradle/bin/gradle chown vagrant:vagrant /opt/gradle/versions chmod 0755 /opt/gradle/versions diff --git a/docs/source/conf.py b/docs/source/conf.py index c20542de..382d8feb 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -12,7 +12,6 @@ # import os import sys - sys.path.insert(0, os.path.abspath('../../fdroidserver')) # -- Project information ----------------------------------------------------- diff --git a/examples/fdroid_clean_repos.py b/examples/fdroid_clean_repos.py index 6b19cacc..cf6259a7 100644 --- a/examples/fdroid_clean_repos.py +++ b/examples/fdroid_clean_repos.py @@ -6,6 +6,7 @@ import argparse import logging from fdroidserver import _, common, metadata + from fdroidserver.exception import VCSException fdroid_summary = 'reset app VCSs to the latest version' diff --git a/examples/fdroid_export_keystore_to_nitrokey.py b/examples/fdroid_export_keystore_to_nitrokey.py index 6e920a78..8fa81ffe 100644 --- a/examples/fdroid_export_keystore_to_nitrokey.py +++ b/examples/fdroid_export_keystore_to_nitrokey.py @@ -4,7 +4,6 @@ import os from argparse import ArgumentParser - from fdroidserver import common from fdroidserver.common import FDroidPopen from fdroidserver.exception import BuildException diff --git a/examples/fdroid_exportkeystore.py b/examples/fdroid_exportkeystore.py index f2a16980..435874a5 100644 --- a/examples/fdroid_exportkeystore.py +++ b/examples/fdroid_exportkeystore.py @@ -4,7 +4,6 @@ import os from argparse import ArgumentParser - from fdroidserver import common from fdroidserver.common import FDroidPopen from fdroidserver.exception import BuildException diff --git a/examples/fdroid_extract_repo_pubkey.py b/examples/fdroid_extract_repo_pubkey.py index cb5a895c..f3c51767 100644 --- a/examples/fdroid_extract_repo_pubkey.py +++ b/examples/fdroid_extract_repo_pubkey.py @@ -4,7 +4,6 @@ # from argparse import ArgumentParser - from fdroidserver import common, index fdroid_summary = 'export the keystore in standard PEM format' diff --git a/examples/fdroid_fetchsrclibs.py b/examples/fdroid_fetchsrclibs.py index aba6f7fa..e4a105e2 100644 --- a/examples/fdroid_fetchsrclibs.py +++ b/examples/fdroid_fetchsrclibs.py @@ -8,7 +8,6 @@ import argparse import os import pprint - from fdroidserver import _, common, metadata fdroid_summary = 'prepare the srclibs for `fdroid build --on-server`' diff --git a/examples/fdroid_nitrokeyimport.py b/examples/fdroid_nitrokeyimport.py index d17a6186..9b458103 100644 --- a/examples/fdroid_nitrokeyimport.py +++ b/examples/fdroid_nitrokeyimport.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 from argparse import ArgumentParser - from fdroidserver import common from fdroidserver.common import FDroidPopen from fdroidserver.exception import BuildException diff --git a/fdroidserver/__init__.py b/fdroidserver/__init__.py index fdf64421..9e4c197f 100644 --- a/fdroidserver/__init__.py +++ b/fdroidserver/__init__.py @@ -3,6 +3,7 @@ import glob import os import sys + # support running straight from git and standard installs rootpaths = [ os.path.realpath(os.path.join(os.path.dirname(__file__), '..')), @@ -14,10 +15,7 @@ rootpaths = [ localedir = None for rootpath in rootpaths: - found_mo = glob.glob( - os.path.join(rootpath, 'locale', '*', 'LC_MESSAGES', 'fdroidserver.mo') - ) - if len(found_mo) > 0: + if len(glob.glob(os.path.join(rootpath, 'locale', '*', 'LC_MESSAGES', 'fdroidserver.mo'))) > 0: localedir = os.path.join(rootpath, 'locale') break @@ -26,52 +24,39 @@ gettext.textdomain('fdroidserver') _ = gettext.gettext -from fdroidserver.exception import ( - FDroidException, - MetaDataException, - VerificationException, # NOQA: E402 -) - +from fdroidserver.exception import (FDroidException, + MetaDataException, + VerificationException) # NOQA: E402 FDroidException # NOQA: B101 MetaDataException # NOQA: B101 VerificationException # NOQA: B101 -from fdroidserver.common import genkeystore as generate_keystore # NOQA: E402 -from fdroidserver.common import verify_apk_signature - +from fdroidserver.common import (verify_apk_signature, + genkeystore as generate_keystore) # NOQA: E402 verify_apk_signature # NOQA: B101 generate_keystore # NOQA: B101 -from fdroidserver.index import ( - download_repo_index, - download_repo_index_v1, - download_repo_index_v2, - get_mirror_service_urls, -) -from fdroidserver.index import make as make_index # NOQA: E402 - +from fdroidserver.index import (download_repo_index, + download_repo_index_v1, + download_repo_index_v2, + get_mirror_service_urls, + make as make_index) # NOQA: E402 download_repo_index # NOQA: B101 download_repo_index_v1 # NOQA: B101 download_repo_index_v2 # NOQA: B101 get_mirror_service_urls # NOQA: B101 make_index # NOQA: B101 -from fdroidserver.update import ( - process_apk, - process_apks, - scan_apk, - scan_repo_files, # NOQA: E402 -) - +from fdroidserver.update import (process_apk, + process_apks, + scan_apk, + scan_repo_files) # NOQA: E402 process_apk # NOQA: B101 process_apks # NOQA: B101 scan_apk # NOQA: B101 scan_repo_files # NOQA: B101 -from fdroidserver.deploy import ( - update_awsbucket, - update_servergitmirrors, - update_serverwebroot, # NOQA: E402 - update_serverwebroots, -) - +from fdroidserver.deploy import (update_awsbucket, + update_servergitmirrors, + update_serverwebroots, + update_serverwebroot) # NOQA: E402 update_awsbucket # NOQA: B101 update_servergitmirrors # NOQA: B101 update_serverwebroots # NOQA: B101 diff --git a/fdroidserver/__main__.py b/fdroidserver/__main__.py index 71c39b2c..14813fa1 100755 --- a/fdroidserver/__main__.py +++ b/fdroidserver/__main__.py @@ -18,20 +18,20 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import importlib.metadata -import logging -import os -import pkgutil import re import sys -from argparse import ArgumentError -from collections import OrderedDict +import os +import pkgutil +import logging +import importlib.metadata import git - import fdroidserver.common import fdroidserver.metadata from fdroidserver import _ +from argparse import ArgumentError +from collections import OrderedDict + COMMANDS = OrderedDict([ ("build", _("Build a package from source")), diff --git a/fdroidserver/apksigcopier.py b/fdroidserver/apksigcopier.py index f36de2eb..2ab0b8c4 100644 --- a/fdroidserver/apksigcopier.py +++ b/fdroidserver/apksigcopier.py @@ -68,18 +68,9 @@ import struct import sys import zipfile import zlib + from collections import namedtuple -from typing import ( - Any, - BinaryIO, - Callable, - Dict, - Iterable, - Iterator, - Optional, - Tuple, - Union, -) +from typing import Any, BinaryIO, Callable, Dict, Iterable, Iterator, Optional, Tuple, Union __version__ = "1.1.1" NAME = "apksigcopier" diff --git a/fdroidserver/btlog.py b/fdroidserver/btlog.py index 7ca3ddbf..df889396 100755 --- a/fdroidserver/btlog.py +++ b/fdroidserver/btlog.py @@ -28,21 +28,22 @@ # the F-Droid client. import collections +import defusedxml.minidom +import git import glob +import os import json import logging -import os +import requests import shutil import tempfile import zipfile from argparse import ArgumentParser from typing import Optional -import defusedxml.minidom -import git -import requests - -from . import _, common, deploy +from . import _ +from . import common +from . import deploy from .exception import FDroidException diff --git a/fdroidserver/build.py b/fdroidserver/build.py index 2e716c10..8a59c771 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -18,27 +18,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import argparse -import glob -import logging import os +import shutil +import glob +import subprocess import posixpath import re -import shutil -import subprocess import tarfile -import tempfile import threading -import time import traceback +import time +import requests +import tempfile +import argparse +import logging from gettext import ngettext from pathlib import Path -import requests - -from . import _, common, metadata, net, scanner, vmtools +from . import _ +from . import common +from . import net +from . import metadata +from . import scanner +from . import vmtools from .common import FDroidPopen -from .exception import BuildException, FDroidException, VCSException +from .exception import FDroidException, BuildException, VCSException try: import paramiko @@ -151,7 +155,9 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force): ftp.mkdir('fdroidserver') ftp.chdir('fdroidserver') ftp.put(os.path.join(serverpath, '..', 'fdroid'), 'fdroid') + ftp.put(os.path.join(serverpath, '..', 'gradlew-fdroid'), 'gradlew-fdroid') ftp.chmod('fdroid', 0o755) # nosec B103 permissions are appropriate + ftp.chmod('gradlew-fdroid', 0o755) # nosec B103 permissions are appropriate send_dir(os.path.join(serverpath)) ftp.chdir(homedir) diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index cff7bcd7..9ed93298 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -19,30 +19,28 @@ # along with this program. If not, see . import configparser -import copy -import logging +import git import os import re +import urllib.request +import urllib.error +import time import subprocess import sys -import time -import traceback -import urllib.error -import urllib.parse -import urllib.request from argparse import ArgumentParser +import traceback +import logging +import copy +import urllib.parse from pathlib import Path from typing import Optional -import git +from . import _ +from . import common +from . import metadata +from . import net +from .exception import VCSException, NoSubmodulesException, FDroidException, MetaDataException -from . import _, common, metadata, net -from .exception import ( - FDroidException, - MetaDataException, - NoSubmodulesException, - VCSException, -) # https://gitlab.com/fdroid/checkupdates-runner/-/blob/1861899262a62a4ed08fa24e5449c0368dfb7617/.gitlab-ci.yml#L36 BOT_EMAIL = 'fdroidci@bubu1.eu' diff --git a/fdroidserver/common.py b/fdroidserver/common.py index ec0079af..b131ce19 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -52,59 +52,54 @@ environment variable to include. """ -import ast -import base64 import copy import difflib -import filecmp +from typing import List +import git import glob -import gzip -import hashlib import io import itertools -import json -import logging -import operator import os +import sys import re +import ast +import gzip import shutil -import socket import stat import subprocess -import sys -import tempfile import time +import operator +import logging +import hashlib +import socket +import base64 import zipfile +import tempfile +import json +from pathlib import Path + +import defusedxml.ElementTree as XMLElementTree + from argparse import BooleanOptionalAction +from asn1crypto import cms from base64 import urlsafe_b64encode from binascii import hexlify from datetime import datetime, timedelta, timezone -from pathlib import Path from queue import Queue -from typing import List from urllib.parse import urlparse, urlsplit, urlunparse from zipfile import ZipFile -import defusedxml.ElementTree as XMLElementTree -import git -from asn1crypto import cms - import fdroidserver.metadata from fdroidserver import _ -from fdroidserver._yaml import config_dump, yaml -from fdroidserver.exception import ( - BuildException, - FDroidException, - MetaDataException, - NoSubmodulesException, - VCSException, - VerificationException, -) - -from . import apksigcopier, common +from fdroidserver._yaml import yaml, config_dump +from fdroidserver.exception import FDroidException, VCSException, NoSubmodulesException, \ + BuildException, VerificationException, MetaDataException from .asynchronousfilereader import AsynchronousFileReader from .looseversion import LooseVersion +from . import apksigcopier, common + + # The path to this fdroidserver distribution FDROID_PATH = os.path.realpath(os.path.join(os.path.dirname(__file__), '..')) @@ -188,7 +183,7 @@ default_config = { 'scan_binary': False, 'ant': "ant", 'mvn3': "mvn", - 'gradle': shutil.which('gradlew-fdroid'), + 'gradle': os.path.join(FDROID_PATH, 'gradlew-fdroid'), 'sync_from_local_copy_dir': False, 'allow_disabled_algorithms': False, 'keep_when_not_allowed': False, @@ -817,10 +812,7 @@ def load_localized_config(name, repodir): icons_dir = os.path.join(repodir, 'icons') if not os.path.exists(icons_dir): os.makedirs(icons_dir, exist_ok=True) - src = os.path.join("config", value) - dest = os.path.join(icons_dir, os.path.basename(src)) - if not os.path.exists(dest) or not filecmp.cmp(src, dest): - shutil.copy2(src, dest) + shutil.copy(os.path.join("config", value), icons_dir) ret[afname][key][locale] = file_entry( os.path.join(icons_dir, value) ) @@ -2737,17 +2729,17 @@ def getpaths_map(build_dir, globpaths): paths[p] = [r[len(str(build_dir)) + 1:] for r in glob.glob(full_path)] if not paths[p]: not_found_paths.append(p) - return paths, not_found_paths - - -def getpaths(build_dir, globpaths): - """Extend via globbing the paths from a field and return them as a set.""" - paths_map, not_found_paths = getpaths_map(build_dir, globpaths) if not_found_paths: raise FDroidException( "Some glob paths did not match any files/dirs:\n" + "\n".join(not_found_paths) ) + return paths + + +def getpaths(build_dir, globpaths): + """Extend via globbing the paths from a field and return them as a set.""" + paths_map = getpaths_map(build_dir, globpaths) paths = set() for k, v in paths_map.items(): for p in v: @@ -2908,9 +2900,9 @@ def is_debuggable_or_testOnly(apkfile): return False try: # these were moved in androguard 4.0 - from androguard.core.axml import START_TAG, AXMLParser, format_value + from androguard.core.axml import AXMLParser, format_value, START_TAG except ImportError: - from androguard.core.bytecodes.axml import START_TAG, AXMLParser, format_value + from androguard.core.bytecodes.axml import AXMLParser, format_value, START_TAG _androguard_logging_level() with ZipFile(apkfile) as apk: @@ -2982,23 +2974,9 @@ def get_apk_id_androguard(apkfile): try: # these were moved in androguard 4.0 - from androguard.core.axml import ( - END_DOCUMENT, - END_TAG, - START_TAG, - TEXT, - AXMLParser, - format_value, - ) + from androguard.core.axml import AXMLParser, format_value, START_TAG, END_TAG, TEXT, END_DOCUMENT except ImportError: - from androguard.core.bytecodes.axml import ( - END_DOCUMENT, - END_TAG, - START_TAG, - TEXT, - AXMLParser, - format_value, - ) + from androguard.core.bytecodes.axml import AXMLParser, format_value, START_TAG, END_TAG, TEXT, END_DOCUMENT _androguard_logging_level() appid = None diff --git a/fdroidserver/deploy.py b/fdroidserver/deploy.py index b4f98f34..cc7d6c52 100644 --- a/fdroidserver/deploy.py +++ b/fdroidserver/deploy.py @@ -16,28 +16,28 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import sys import glob import hashlib import json -import logging import os -import pathlib import re -import shutil import subprocess -import sys import time import urllib -from argparse import ArgumentParser from typing import Dict, List - -import git -import yaml from git import Repo - +import yaml +from argparse import ArgumentParser +import logging +import pathlib +import shutil +import git import fdroidserver.github -from . import _, common, index +from . import _ +from . import common +from . import index from .exception import FDroidException config = None @@ -349,8 +349,8 @@ def update_awsbucket_libcloud(repo_section, is_index_only=False): import libcloud.security libcloud.security.VERIFY_SSL_CERT = True + from libcloud.storage.types import Provider, ContainerDoesNotExistError from libcloud.storage.providers import get_driver - from libcloud.storage.types import ContainerDoesNotExistError, Provider if not config.get('awsaccesskeyid') or not config.get('awssecretkey'): raise FDroidException( @@ -854,9 +854,8 @@ def upload_to_android_observatory(repo_section): def upload_apk_to_android_observatory(path): # depend on requests and lxml only if users enable AO import requests - from lxml.html import fromstring - from . import net + from lxml.html import fromstring apkfilename = os.path.basename(path) r = requests.post( diff --git a/fdroidserver/exception.py b/fdroidserver/exception.py index 682ccef7..a598b368 100644 --- a/fdroidserver/exception.py +++ b/fdroidserver/exception.py @@ -35,10 +35,6 @@ class VCSException(FDroidException): pass -class NoVersionCodeException(FDroidException): - pass - - class NoSubmodulesException(VCSException): pass diff --git a/fdroidserver/github.py b/fdroidserver/github.py index 34a3ee53..0a6844d9 100644 --- a/fdroidserver/github.py +++ b/fdroidserver/github.py @@ -18,8 +18,8 @@ import json import pathlib -import urllib.parse import urllib.request +import urllib.parse class GithubApi: diff --git a/fdroidserver/gpgsign.py b/fdroidserver/gpgsign.py index 4341cb36..4ba6ebd5 100644 --- a/fdroidserver/gpgsign.py +++ b/fdroidserver/gpgsign.py @@ -16,13 +16,14 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import glob -import logging import os -import time +import glob from argparse import ArgumentParser +import logging +import time -from . import _, common +from . import _ +from . import common from .common import FDroidPopen from .exception import FDroidException diff --git a/fdroidserver/index.py b/fdroidserver/index.py index b63729e4..86394d7c 100644 --- a/fdroidserver/index.py +++ b/fdroidserver/index.py @@ -30,7 +30,6 @@ these installed on the signing server. """ -import calendar import collections import hashlib import json @@ -42,27 +41,20 @@ import sys import tempfile import urllib.parse import zipfile +import calendar from binascii import hexlify, unhexlify from datetime import datetime, timezone from pathlib import Path from xml.dom.minidom import Document +from . import _ +from . import common +from . import metadata +from . import signindex +from fdroidserver.common import ANTIFEATURES_CONFIG_NAME, CATEGORIES_CONFIG_NAME, CONFIG_CONFIG_NAME, MIRRORS_CONFIG_NAME, RELEASECHANNELS_CONFIG_NAME, DEFAULT_LOCALE, FDroidPopen, FDroidPopenBytes, load_publish_signer_fingerprints from fdroidserver._yaml import yaml -from fdroidserver.common import ( - ANTIFEATURES_CONFIG_NAME, - CATEGORIES_CONFIG_NAME, - CONFIG_CONFIG_NAME, - DEFAULT_LOCALE, - MIRRORS_CONFIG_NAME, - RELEASECHANNELS_CONFIG_NAME, - FDroidPopen, - FDroidPopenBytes, - load_publish_signer_fingerprints, -) from fdroidserver.exception import FDroidException, VerificationException -from . import _, common, metadata, signindex - def make(apps, apks, repodir, archive): """Generate the repo index files. @@ -595,10 +587,7 @@ def convert_version(version, app, repodir): ver["file"]["ipfsCIDv1"] = ipfsCIDv1 if "srcname" in version: - ver["src"] = common.file_entry( - os.path.join(repodir, version["srcname"]), - version["srcnameSha256"], - ) + ver["src"] = common.file_entry(os.path.join(repodir, version["srcname"])) if "obbMainFile" in version: ver["obbMainFile"] = common.file_entry( @@ -967,7 +956,7 @@ def make_v1(apps, packages, repodir, repodict, requestsdict, signer_fingerprints for k, v in sorted(package.items()): if not v: continue - if k in ('icon', 'icons', 'icons_src', 'ipfsCIDv1', 'name', 'srcnameSha256'): + if k in ('icon', 'icons', 'icons_src', 'ipfsCIDv1', 'name'): continue if k == 'antiFeatures': d[k] = sorted(v.keys()) diff --git a/fdroidserver/init.py b/fdroidserver/init.py index 39b18c1a..a5575fea 100644 --- a/fdroidserver/init.py +++ b/fdroidserver/init.py @@ -19,15 +19,16 @@ # along with this program. If not, see . import glob -import logging import os import re import shutil import socket import sys from argparse import ArgumentParser +import logging -from . import _, common +from . import _ +from . import common from .exception import FDroidException config = {} diff --git a/fdroidserver/install.py b/fdroidserver/install.py index 8c1dc948..74754520 100644 --- a/fdroidserver/install.py +++ b/fdroidserver/install.py @@ -17,22 +17,25 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import sys +import os import glob import locale import logging -import os -import sys import termios import tty + +import defusedxml.ElementTree as XMLElementTree + from argparse import ArgumentParser, BooleanOptionalAction from pathlib import Path from urllib.parse import urlencode, urlparse, urlunparse -import defusedxml.ElementTree as XMLElementTree - -from . import _, common, github, index, net +from . import _ +from . import common, github, index, net from .exception import FDroidException + DEFAULT_IPFS_GATEWAYS = ("https://gateway.ipfs.io/ipfs/",) MAVEN_CENTRAL_MIRRORS = [ { diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index f384cb62..cb5ead84 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -24,9 +24,8 @@ import urllib.parse from argparse import ArgumentParser from pathlib import Path -from fdroidserver._yaml import yaml - from . import _, common, metadata, rewritemeta +from fdroidserver._yaml import yaml config = None diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 0d9195be..47fbdca7 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -18,19 +18,19 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import logging -import math -import os -import platform -import re -from collections import OrderedDict from pathlib import Path - +import math +import platform +import os +import re +import logging import ruamel.yaml +from collections import OrderedDict -from . import _, common -from ._yaml import yaml +from . import common +from . import _ from .exception import MetaDataException +from ._yaml import yaml srclibs = None warnings_action = None diff --git a/fdroidserver/mirror.py b/fdroidserver/mirror.py index b06df3b1..80f8394f 100644 --- a/fdroidserver/mirror.py +++ b/fdroidserver/mirror.py @@ -7,10 +7,13 @@ import posixpath import socket import subprocess import sys -import urllib.parse from argparse import ArgumentParser +import urllib.parse -from . import _, common, index, update +from . import _ +from . import common +from . import index +from . import update def _run_wget(path, urls, verbose=False): @@ -130,7 +133,6 @@ def main(): import io import json import zipfile - from . import net url = _append_to_url_path(section, 'index-v1.jar') diff --git a/fdroidserver/net.py b/fdroidserver/net.py index fe097fd5..1ec7d096 100644 --- a/fdroidserver/net.py +++ b/fdroidserver/net.py @@ -21,11 +21,10 @@ import copy import logging import os import random +import requests import tempfile import time import urllib - -import requests import urllib3 from requests.adapters import HTTPAdapter, Retry diff --git a/fdroidserver/nightly.py b/fdroidserver/nightly.py index 372390ea..3d57c452 100644 --- a/fdroidserver/nightly.py +++ b/fdroidserver/nightly.py @@ -19,25 +19,25 @@ import base64 import datetime +import git import hashlib import inspect import logging import os +import paramiko import platform import shutil import ssl import subprocess import sys import tempfile +import yaml +from urllib.parse import urlparse from argparse import ArgumentParser from typing import Optional -from urllib.parse import urlparse -import git -import paramiko -import yaml - -from . import _, common +from . import _ +from . import common from .exception import VCSException # hard coded defaults for Android ~/.android/debug.keystore files diff --git a/fdroidserver/publish.py b/fdroidserver/publish.py index 42945166..4c0bd791 100644 --- a/fdroidserver/publish.py +++ b/fdroidserver/publish.py @@ -28,21 +28,23 @@ mostly reports success by moving an APK from unsigned/ to repo/ """ -import glob -import hashlib -import json -import logging +import sys import os import re import shutil -import sys -import time -import zipfile +import glob +import hashlib from argparse import ArgumentParser from collections import OrderedDict +import logging from gettext import ngettext +import json +import time +import zipfile -from . import _, common, metadata +from . import _ +from . import common +from . import metadata from .common import FDroidPopen from .exception import BuildException, FDroidException diff --git a/fdroidserver/readmeta.py b/fdroidserver/readmeta.py index b3ef7c3b..b8049a9f 100644 --- a/fdroidserver/readmeta.py +++ b/fdroidserver/readmeta.py @@ -17,8 +17,8 @@ # along with this program. If not, see . from argparse import ArgumentParser - -from . import common, metadata +from . import common +from . import metadata def main(): diff --git a/fdroidserver/rewritemeta.py b/fdroidserver/rewritemeta.py index 4bbe810d..9f3316b4 100644 --- a/fdroidserver/rewritemeta.py +++ b/fdroidserver/rewritemeta.py @@ -17,14 +17,16 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import io -import logging -import shutil -import tempfile from argparse import ArgumentParser +import logging +import io +import tempfile +import shutil from pathlib import Path -from . import _, common, metadata +from . import _ +from . import common +from . import metadata config = None diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index 0d5a3ecf..a81912fc 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -729,7 +729,6 @@ def scan_source(build_dir, build=metadata.Build(), json_per_build=None): 'www.jitpack.io', 'repo.maven.apache.org/maven2', 'oss.jfrog.org/artifactory/oss-snapshot-local', - 'central.sonatype.com/repository/maven-snapshots/', 'oss.sonatype.org/content/repositories/snapshots', 'oss.sonatype.org/content/repositories/releases', 'oss.sonatype.org/content/groups/public', @@ -751,12 +750,8 @@ def scan_source(build_dir, build=metadata.Build(), json_per_build=None): ] ] - scanignore, scanignore_not_found_paths = common.getpaths_map( - build_dir, build.scanignore - ) - scandelete, scandelete_not_found_paths = common.getpaths_map( - build_dir, build.scandelete - ) + scanignore = common.getpaths_map(build_dir, build.scanignore) + scandelete = common.getpaths_map(build_dir, build.scandelete) scanignore_worked = set() scandelete_worked = set() @@ -1114,19 +1109,11 @@ def scan_source(build_dir, build=metadata.Build(), json_per_build=None): json_per_build, ) - for p in scanignore_not_found_paths: - logging.error(_("Non-exist scanignore path: %s") % p) - count += 1 - for p in scanignore: if p not in scanignore_worked: logging.error(_('Unused scanignore path: %s') % p) count += 1 - for p in scandelete_not_found_paths: - logging.error(_("Non-exist scandelete path: %s") % p) - count += 1 - for p in scandelete: if p not in scandelete_worked: logging.error(_('Unused scandelete path: %s') % p) diff --git a/fdroidserver/signatures.py b/fdroidserver/signatures.py index 00c9d264..486e5d18 100644 --- a/fdroidserver/signatures.py +++ b/fdroidserver/signatures.py @@ -15,13 +15,15 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import logging -import os -import re -import sys from argparse import ArgumentParser -from . import _, common +import re +import os +import sys +import logging + +from . import _ +from . import common from .exception import FDroidException diff --git a/fdroidserver/signindex.py b/fdroidserver/signindex.py index 47cd5ec2..4ca2d569 100644 --- a/fdroidserver/signindex.py +++ b/fdroidserver/signindex.py @@ -17,13 +17,15 @@ # along with this program. If not, see . import json -import logging import os import time import zipfile from argparse import ArgumentParser +import logging -from . import _, common, metadata +from . import _ +from . import common +from . import metadata from .exception import FDroidException config = None diff --git a/fdroidserver/tail.py b/fdroidserver/tail.py index 2bea3504..8107f10d 100644 --- a/fdroidserver/tail.py +++ b/fdroidserver/tail.py @@ -28,8 +28,8 @@ Example import os import sys -import threading import time +import threading class Tail(object): diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 52e9f7f0..ba3b5506 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -20,27 +20,25 @@ # along with this program. If not, see . import argparse -import copy -import filecmp -import glob -import hashlib -import json -import logging -import os -import re -import shutil -import socket import sys -import time +import os +import shutil +import glob +import logging +import re +import socket import warnings import zipfile -from argparse import ArgumentParser -from datetime import datetime, timezone -from pathlib import Path - +import hashlib +import json +import time +import yaml +import copy import asn1crypto.cms import defusedxml.ElementTree as ElementTree -import yaml +from datetime import datetime, timezone +from argparse import ArgumentParser +from pathlib import Path try: from yaml import CSafeLoader as SafeLoader @@ -50,13 +48,14 @@ except ImportError: import collections from binascii import hexlify -from PIL import Image, PngImagePlugin - +from . import _ +from . import common +from . import metadata +from .common import DEFAULT_LOCALE +from .exception import BuildException, FDroidException, VerificationException import fdroidserver.index -from . import _, common, metadata -from .common import DEFAULT_LOCALE -from .exception import BuildException, FDroidException, NoVersionCodeException, VerificationException +from PIL import Image, PngImagePlugin if hasattr(Image, 'DecompressionBombWarning'): warnings.simplefilter('error', Image.DecompressionBombWarning) @@ -370,12 +369,6 @@ def get_cache(): v['antiFeatures'] = {k: {} for k in sorted(v['antiFeatures'])} if 'added' in v: v['added'] = datetime.fromtimestamp(v['added'], tz=timezone.utc) - if v.get('srcname') and not v.get('srcnameSha256'): - f = f'archive/{v["srcname"]}' - if not os.path.exists(f): - f = f'repo/{v["srcname"]}' - if os.path.exists(f): - v['srcnameSha256'] = common.sha256sum(f) return apkcache @@ -1154,7 +1147,6 @@ def insert_localized_app_metadata(apps): metadata// fastlane/metadata/android// - /fastlane/metadata/android// src//fastlane/metadata/android// ...as well as the /metadata// directory. @@ -1174,7 +1166,7 @@ def insert_localized_app_metadata(apps): https://f-droid.org/en/docs/All_About_Descriptions_Graphics_and_Screenshots/#in-the-apps-build-metadata-in-an-fdroiddata-collection """ sourcedirs = glob.glob(os.path.join('build', '[A-Za-z]*', 'src', '[A-Za-z]*', 'fastlane', 'metadata', 'android', '[a-z][a-z]*')) - sourcedirs += glob.glob(os.path.join('build', '[A-Za-z]*', '**', 'fastlane', 'metadata', 'android', '[a-z][a-z]*'), recursive=True) + sourcedirs += glob.glob(os.path.join('build', '[A-Za-z]*', 'fastlane', 'metadata', 'android', '[a-z][a-z]*')) sourcedirs += glob.glob(os.path.join('build', '[A-Za-z]*', 'metadata', '[a-z][a-z]*')) sourcedirs += glob.glob(os.path.join('metadata', '[A-Za-z]*', '[a-z][a-z]*')) @@ -1190,40 +1182,20 @@ def insert_localized_app_metadata(apps): locale = segments[-1] destdir = os.path.join('repo', packageName, locale) - builds = apps.get(packageName, {}).get('Builds', []) - found_in_subdir = ( - builds - and len(segments) > 6 - and segments[-4] == "fastlane" - and segments[-3] == "metadata" - and segments[-2] == "android" - and '/'.join(segments[2:-4]) == builds[-1].get('subdir') - ) - # flavors specified in build receipt build_flavors = [] - if builds and 'gradle' in builds[-1] and builds[-1]['gradle'] != ['yes']: - build_flavors = common.calculate_gradle_flavor_combination( - builds[-1]['gradle'] - ) - found_in_flavor = ( - len(segments) > 7 - and segments[2] == 'src' - and segments[4] == "fastlane" - and segments[3] in build_flavors - ) - if ( - not found_in_subdir - and not found_in_flavor - and segments[0] == 'build' - and segments[2] not in ('metadata', 'fastlane') + apps[packageName] + and len(apps[packageName].get('Builds', [])) > 0 + and 'gradle' in apps[packageName]['Builds'][-1] + and apps[packageName]['Builds'][-1]['gradle'] != ['yes'] ): - logging.debug( - 'Not scanning "{dir}" with unknown subdir or gradle flavor "{value}"'.format( - dir=os.path.relpath(root), value=segments[3] - ) + build_flavors = common.calculate_gradle_flavor_combination( + apps[packageName]['Builds'][-1]['gradle'] ) + + if len(segments) >= 5 and segments[4] == "fastlane" and segments[3] not in build_flavors: + logging.debug("ignoring due to wrong flavor") continue for f in files: @@ -1261,7 +1233,9 @@ def insert_localized_app_metadata(apps): try: versionCode = int(base) locale = segments[-2] - if versionCode in [b["versionCode"] for b in builds]: + if versionCode in [ + a["versionCode"] for a in apps[packageName]["Builds"] + ]: _set_localized_text_entry( apps[packageName], locale, @@ -1486,18 +1460,19 @@ def insert_localized_ios_app_metadata(apps_with_packages): fdroidserver.update.copy_ios_screenshots_to_repo(screenshots, package_name) # lookup icons, copy them and put them into app - icon_src = _get_ipa_icon(Path('build') / package_name) + icon_path = _get_ipa_icon(Path('build') / package_name) icon_dest = Path('repo') / package_name / 'icon.png' # for now just assume png + icon_stat = os.stat(icon_path) app['iconv2'] = { DEFAULT_LOCALE: { 'name': str(icon_dest).lstrip('repo'), 'sha256': common.sha256sum(icon_dest), - 'size': os.path.getsize(icon_src), + 'size': icon_stat.st_size, } } - if not icon_dest.exists() or not filecmp.cmp(icon_src, icon_dest): + if not icon_dest.exists(): icon_dest.parent.mkdir(parents=True, exist_ok=True) - shutil.copy2(icon_src, icon_dest) + shutil.copy(icon_path, icon_dest) def scan_repo_files(apkcache, repodir, knownapks, use_date_from_file=False): @@ -1576,10 +1551,8 @@ def scan_repo_files(apkcache, repodir, knownapks, use_date_from_file=False): repo_file['packageName'] = m.group(1) repo_file['versionCode'] = int(m.group(2)) srcfilename = name + b'_src.tar.gz' - srcpath = os.path.join(repodir, srcfilename) - if os.path.exists(srcpath): + if os.path.exists(os.path.join(repodir, srcfilename)): repo_file['srcname'] = srcfilename.decode() - repo_file['srcnameSha256'] = common.sha256sum(srcpath.decode()) repo_file['size'] = stat.st_size apkcache[name_utf8] = repo_file @@ -1801,7 +1774,6 @@ def scan_apk_androguard(apk, apkfile): xml = apkobject.get_android_manifest_xml() androidmanifest_xml = apkobject.xml['AndroidManifest.xml'] - if len(xml.nsmap) > 0: # one of them surely will be the Android one, or its corrupt xmlns = common.XMLNS_ANDROID @@ -1811,12 +1783,8 @@ def scan_apk_androguard(apk, apkfile): xmlns = '{}' vcstr = androidmanifest_xml.get(xmlns + 'versionCode') - logging.debug("Version Code: %r (%s)" % (vcstr, apkfile)) - if not vcstr: - raise NoVersionCodeException(_("APK file {path} does not have a version code " - "in its manifest").format(path=apkfile)) - elif vcstr.startswith('0x'): + if vcstr.startswith('0x'): apk['versionCode'] = int(vcstr, 16) else: apk['versionCode'] = int(vcstr) @@ -1964,10 +1932,6 @@ def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=Fal logging.warning(_("Skipping '{apkfilename}' with invalid signature!") .format(apkfilename=apkfilename)) return True, None, False - except NoVersionCodeException: - logging.warning(_("Skipping '{apkfilename}' without versionCode!") - .format(apkfilename=apkfilename)) - return True, None, False if apps: if apk['packageName'] in apps: @@ -2006,10 +1970,8 @@ def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=Fal apk['apkName'] = apkfilename srcfilename = apkfilename[:-4] + "_src.tar.gz" - srcpath = os.path.join(repodir, srcfilename) - if os.path.exists(srcpath): + if os.path.exists(os.path.join(repodir, srcfilename)): apk['srcname'] = srcfilename - apk['srcnameSha256'] = common.sha256sum(srcpath) # verify the jar signature is correct, allow deprecated # algorithms only if the APK is in the archive. diff --git a/fdroidserver/verify.py b/fdroidserver/verify.py index 897463ae..46963bb4 100644 --- a/fdroidserver/verify.py +++ b/fdroidserver/verify.py @@ -16,17 +16,18 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import sys +import os import glob import json import logging -import os -import sys +import requests from argparse import ArgumentParser from collections import OrderedDict -import requests - -from . import _, common, net +from . import _ +from . import common +from . import net from .exception import FDroidException config = None @@ -57,8 +58,8 @@ def _add_diffoscope_info(d): ] d['diffoscope']['External-Tools-Required'] = external_tools - from diffoscope.external_tools import EXTERNAL_TOOLS from diffoscope.tools import OS_NAMES, get_current_os + from diffoscope.external_tools import EXTERNAL_TOOLS current_os = get_current_os() os_list = [current_os] if (current_os in OS_NAMES) else iter(OS_NAMES) diff --git a/fdroidserver/vmtools.py b/fdroidserver/vmtools.py index 2ba92ad6..0251e179 100644 --- a/fdroidserver/vmtools.py +++ b/fdroidserver/vmtools.py @@ -16,17 +16,17 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import json -import logging +from os.path import isdir, isfile, basename, abspath, expanduser import os +import json import shutil import subprocess import textwrap -import threading -from os.path import abspath, basename, expanduser, isdir, isfile - +import logging from .common import FDroidException +import threading + lock = threading.Lock() diff --git a/gradlew-fdroid b/gradlew-fdroid new file mode 100755 index 00000000..ed316eca --- /dev/null +++ b/gradlew-fdroid @@ -0,0 +1,312 @@ +#!/bin/bash + +bindir="$(dirname $0)" +basedir="$(dirname $bindir)" +# Check if GRADLE_VERSION_DIR/CACHEDIR is set from environment +if [ -z "$GRADLE_VERSION_DIR" ]; then + gradle_version_dir="${basedir}/versions" +else + gradle_version_dir="$GRADLE_VERSION_DIR" +fi +BUILDSERVER_CACHEDIR=/vagrant/cache +if [ -n "$CACHEDIR" ]; then + cachedir="$CACHEDIR" +elif [ -d $BUILDSERVER_CACHEDIR ]; then + cachedir=$BUILDSERVER_CACHEDIR +fi +args=("$@") + +run_gradle() { + if [ ! -d "${gradle_version_dir}/${v_found}" ]; then + download_gradle ${v_found} + fi + # shellcheck disable=SC2145 + echo "Running ${gradle_version_dir}/${v_found}/bin/gradle ${args[@]}" + "${gradle_version_dir}/${v_found}/bin/gradle" "${args[@]}" + exit $? +} + +download_gradle() { + URL="https://downloads.gradle.org/distributions/gradle-${1}-bin.zip" + shasum=$(get_sha $1) + if [ $? != 0 ]; then + echo "No hash for gradle version $1! Exiting..." + exit 1 + fi + if [ -n "${cachedir}" ] && [ -e "${cachedir}/gradle-$1-bin.zip" ]; then + echo "Using cached ${cachedir}/gradle-$1-bin.zip ..." + gradle_zip="${cachedir}/gradle-$1-bin.zip" + else + echo "Downloading missing gradle version $1" + echo cachedir $cachedir + if [[ -n "${cachedir}" && ! -d "${cachedir}" ]]; then + mkdir -p "${cachedir}" + fi + if [[ -n "${cachedir}" && -d "${cachedir}" && -w "${cachedir}" ]]; then + tmpdir="${cachedir}" + else + tmpdir=$(mktemp -d) + fi + curl -o "${tmpdir}/gradle-$1-bin.zip" --silent --fail --show-error --location --retry 3 --retry-all-errors "${URL}" + gradle_zip="${tmpdir}/gradle-$1-bin.zip" + fi + echo "${shasum} ${gradle_zip}" | sha256sum -c - + if [ $? != 0 ]; then + echo "gradle download checksum mismatch! Exiting..." + exit 1 + fi + mkdir -p "${gradle_version_dir}/" + unzip -q -d "${gradle_version_dir}" "${gradle_zip}" + mv "${gradle_version_dir}/gradle-$1" "${gradle_version_dir}/${v_found}" +} + +get_sha() { + case $1 in + '0.7') echo '4e354fcb0d5c0b0e7789cd6ee900456edaf993f6dd890c4a1c217d90d2a6a6ad' ;; + '0.8') echo '940e623ea98e40ea9ad398770a6ebb91a61c0869d394dda81aa86b0f4f0025e7' ;; + '0.9') echo '994e46d4b467254a0f25ce92b602618331b9b3ac8b32a094fd84ff0e0ceec135' ;; + '0.9.1') echo '5d48cba95db031ec109ae9ab60561e960b6507046036e8191aa78572ec27e2a5' ;; + '0.9.2') echo 'f94d7642348c558fc05ab5fd6fb947fb1ed8fed5931ddb73dd04fb0de22d669b' ;; + '1.0') echo '894bca0360a7e2040815096788f118a2dd106ff6694221b274efb9c32bce0384' ;; + '1.1') echo '552c1fc9f3a1b9668b79cc447370f0263e664ffb6d5c6e1c21e77ce0c8a20d4c' ;; + '1.2') echo 'eb53da3704d24cabb7565f34a3bf16bcd863c4b0c139917606fb15d4f27c7bdf' ;; + '1.3') echo 'ada68561efbb9f1cae0f9063974cbde15c180351a2f92bc2f1106e39ddcae5ba' ;; + '1.4') echo 'cd99e85fbcd0ae8b99e81c9992a2f10cceb7b5f009c3720ef3a0078f4f92e94e' ;; + '1.5') echo 'a5511a0659caa47d9d74fd2844c9da43157d2f78e63a0223c6289d88f5aaecbe' ;; + '1.6') echo 'de3e89d2113923dcc2e0def62d69be0947ceac910abd38b75ec333230183fac4' ;; + '1.7') echo '360c97d51621b5a1ecf66748c718594e5f790ae4fbc1499543e0c006033c9d30' ;; + '1.8') echo 'a342bbfa15fd18e2482287da4959588f45a41b60910970a16e6d97959aea5703' ;; + '1.9') echo '097ddc2bcbc9da2bb08cbf6bf8079585e35ad088bafd42e8716bc96405db98e9' ;; + '1.10') echo '6e6db4fc595f27ceda059d23693b6f6848583950606112b37dfd0e97a0a0a4fe' ;; + '1.11') echo '07e235df824964f0e19e73ea2327ce345c44bcd06d44a0123d29ab287fc34091' ;; + '1.12') echo '8734b13a401f4311ee418173ed6ca8662d2b0a535be8ff2a43ecb1c13cd406ea' ;; + '2.0') echo 'a1eb880c8755333c4d33c4351b269bebe517002532d3142c0b6164c9e8c081c3' ;; + '2.1') echo '3eee4f9ea2ab0221b89f8e4747a96d4554d00ae46d8d633f11cfda60988bf878' ;; + '2.2') echo '91e5655fe11ef414449f218c4fa2985b3a49b7903c57556da109c84fa26e1dfb' ;; + '2.2.1') echo '420aa50738299327b611c10b8304b749e8d3a579407ee9e755b15921d95ff418' ;; + '2.3') echo '010dd9f31849abc3d5644e282943b1c1c355f8e2635c5789833979ce590a3774' ;; + '2.4') echo 'c4eaecc621a81f567ded1aede4a5ddb281cc02a03a6a87c4f5502add8fc2f16f' ;; + '2.5') echo '3f953e0cb14bb3f9ebbe11946e84071547bf5dfd575d90cfe9cc4e788da38555' ;; + '2.6') echo '18a98c560af231dfa0d3f8e0802c20103ae986f12428bb0a6f5396e8f14e9c83' ;; + '2.7') echo 'cde43b90945b5304c43ee36e58aab4cc6fb3a3d5f9bd9449bb1709a68371cb06' ;; + '2.8') echo 'a88db9c2f104defdaa8011c58cf6cda6c114298ae3695ecfb8beb30da3a903cb' ;; + '2.9') echo 'c9159ec4362284c0a38d73237e224deae6139cbde0db4f0f44e1c7691dd3de2f' ;; + '2.10') echo '66406247f745fc6f05ab382d3f8d3e120c339f34ef54b86f6dc5f6efc18fbb13' ;; + '2.11') echo '8d7437082356c9fd6309a4479c8db307673965546daea445c6c72759cd6b1ed6' ;; + '2.12') echo 'e77064981906cd0476ff1e0de3e6fef747bd18e140960f1915cca8ff6c33ab5c' ;; + '2.13') echo '0f665ec6a5a67865faf7ba0d825afb19c26705ea0597cec80dd191b0f2cbb664' ;; + '2.14') echo '993b4f33b652c689e9721917d8e021cab6bbd3eae81b39ab2fd46fdb19a928d5' ;; + '2.14.1') echo 'cfc61eda71f2d12a572822644ce13d2919407595c2aec3e3566d2aab6f97ef39' ;; + '3.0') echo '39c906941a474444afbddc38144ed44166825acb0a57b0551dddb04bbf157f80' ;; + '3.1') echo 'c7de3442432253525902f7e8d7eac8b5fd6ce1623f96d76916af6d0e383010fc' ;; + '3.2') echo '5321b36837226dc0377047a328f12010f42c7bf88ee4a3b1cee0c11040082935' ;; + '3.2.1') echo '9843a3654d3e57dce54db06d05f18b664b95c22bf90c6becccb61fc63ce60689' ;; + '3.3') echo 'c58650c278d8cf0696cab65108ae3c8d95eea9c1938e0eb8b997095d5ca9a292' ;; + '3.4') echo '72d0cd4dcdd5e3be165eb7cd7bbd25cf8968baf400323d9ab1bba622c3f72205' ;; + '3.4.1') echo 'db1db193d479cc1202be843f17e4526660cfb0b21b57d62f3a87f88c878af9b2' ;; + '3.5') echo '0b7450798c190ff76b9f9a3d02e18b33d94553f708ebc08ebe09bdf99111d110' ;; + '3.5.1') echo '8dce35f52d4c7b4a4946df73aa2830e76ba7148850753d8b5e94c5dc325ceef8' ;; + '4.0') echo '56bd2dde29ba2a93903c557da1745cafd72cdd8b6b0b83c05a40ed7896b79dfe' ;; + '4.0.1') echo 'd717e46200d1359893f891dab047fdab98784143ac76861b53c50dbd03b44fd4' ;; + '4.0.2') echo '79ac421342bd11f6a4f404e0988baa9c1f5fabf07e3c6fa65b0c15c1c31dda22' ;; + '4.1') echo 'd55dfa9cfb5a3da86a1c9e75bb0b9507f9a8c8c100793ccec7beb6e259f9ed43' ;; + '4.2') echo '515dd63d32e55a9c05667809c5e40a947529de3054444ad274b3b75af5582eae' ;; + '4.2.1') echo 'b551cc04f2ca51c78dd14edb060621f0e5439bdfafa6fd167032a09ac708fbc0' ;; + '4.3') echo '8dcbf44eef92575b475dcb1ce12b5f19d38dc79e84c662670248dc8b8247654c' ;; + '4.3.1') echo '15ebe098ce0392a2d06d252bff24143cc88c4e963346582c8d88814758d93ac7' ;; + '4.4') echo 'fa4873ae2c7f5e8c02ec6948ba95848cedced6134772a0169718eadcb39e0a2f' ;; + '4.4.1') echo 'e7cf7d1853dfc30c1c44f571d3919eeeedef002823b66b6a988d27e919686389' ;; + '4.5') echo '03f2a43a314ff0fb843a85ef68078e06d181c4549c1e5fb983f289382b59b5e3' ;; + '4.5.1') echo '3e2ea0d8b96605b7c528768f646e0975bd9822f06df1f04a64fd279b1a17805e' ;; + '4.6') echo '98bd5fd2b30e070517e03c51cbb32beee3e2ee1a84003a5a5d748996d4b1b915' ;; + '4.7') echo 'fca5087dc8b50c64655c000989635664a73b11b9bd3703c7d6cabd31b7dcdb04' ;; + '4.8') echo 'f3e29692a8faa94eb0b02ebf36fa263a642b3ae8694ef806c45c345b8683f1ba' ;; + '4.8.1') echo 'af334d994b5e69e439ab55b5d2b7d086da5ea6763d78054f49f147b06370ed71' ;; + '4.9') echo 'e66e69dce8173dd2004b39ba93586a184628bc6c28461bc771d6835f7f9b0d28' ;; + '4.10') echo '248cfd92104ce12c5431ddb8309cf713fe58de8e330c63176543320022f59f18' ;; + '4.10.1') echo 'e53ce3a01cf016b5d294eef20977ad4e3c13e761ac1e475f1ffad4c6141a92bd' ;; + '4.10.2') echo 'b49c6da1b2cb67a0caf6c7480630b51c70a11ca2016ff2f555eaeda863143a29' ;; + '4.10.3') echo '8626cbf206b4e201ade7b87779090690447054bc93f052954c78480fa6ed186e' ;; + '5.0') echo '6157ac9f3410bc63644625b3b3e9e96c963afd7910ae0697792db57813ee79a6' ;; + '5.1') echo '7506638a380092a0406364c79d6c87d03d23017fc25a5770379d1ce23c3fcd4d' ;; + '5.1.1') echo '4953323605c5d7b89e97d0dc7779e275bccedefcdac090aec123375eae0cc798' ;; + '5.2') echo 'ff322863250159595e93b5a4d17a6f0d21c59a1a0497c1e1cf1d53826485503f' ;; + '5.2.1') echo '748c33ff8d216736723be4037085b8dc342c6a0f309081acf682c9803e407357' ;; + '5.3') echo 'bed2bdd3955be5a09ca7e0201e9d131f194f7f6c466e1795a733733ccfb09f25' ;; + '5.3.1') echo '1c59a17a054e9c82f0dd881871c9646e943ec4c71dd52ebc6137d17f82337436' ;; + '5.4') echo 'c8c17574245ecee9ed7fe4f6b593b696d1692d1adbfef425bef9b333e3a0e8de' ;; + '5.4.1') echo '7bdbad1e4f54f13c8a78abc00c26d44dd8709d4aedb704d913fb1bb78ac025dc' ;; + '5.5') echo '8d78b2ed63e7f07ad169c1186d119761c4773e681f332cfe1901045b1b0141bc' ;; + '5.5.1') echo '222a03fcf2fcaf3691767ce9549f78ebd4a77e73f9e23a396899fb70b420cd00' ;; + '5.6') echo '15c02ef5dd3631ec02ac52e8725703e0285d9a7eecbf4e5939aa9e924604d01d' ;; + '5.6.1') echo '0986244820e4a35d32d91df2ec4b768b5ba5d6c8246753794f85159f9963ec12' ;; + '5.6.2') echo '32fce6628848f799b0ad3205ae8db67d0d828c10ffe62b748a7c0d9f4a5d9ee0' ;; + '5.6.3') echo '60a6d8f687e3e7a4bc901cc6bc3db190efae0f02f0cc697e323e0f9336f224a3' ;; + '5.6.4') echo '1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d' ;; + '6.0') echo '5a3578b9f0bb162f5e08cf119f447dfb8fa950cedebb4d2a977e912a11a74b91' ;; + '6.0.1') echo 'd364b7098b9f2e58579a3603dc0a12a1991353ac58ed339316e6762b21efba44' ;; + '6.1') echo 'd0c43d14e1c70a48b82442f435d06186351a2d290d72afd5b8866f15e6d7038a' ;; + '6.1.1') echo '9d94e6e4a28ad328072ef6e56bce79a810494ae756751fdcedffdeaf27c093b1' ;; + '6.2') echo 'b93a5f30d01195ec201e240f029c8b42d59c24086b8d1864112c83558e23cf8a' ;; + '6.2.1') echo 'a68ca7ba57f3404c3f6fc1f70a02d3a7d78652e6b46bbfaff83fc9a17168c279' ;; + '6.2.2') echo '0f6ba231b986276d8221d7a870b4d98e0df76e6daf1f42e7c0baec5032fb7d17' ;; + '6.3') echo '038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768' ;; + '6.4') echo 'b888659f637887e759749f6226ddfcb1cb04f828c58c41279de73c463fdbacc9' ;; + '6.4.1') echo 'e58cdff0cee6d9b422dcd08ebeb3177bc44eaa09bd9a2e838ff74c408fe1cbcd' ;; + '6.5') echo '23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f' ;; + '6.5.1') echo '50a7d30529fa939721fe9268a0205142f3f2302bcac5fb45b27a3902e58db54a' ;; + '6.6') echo 'e6f83508f0970452f56197f610d13c5f593baaf43c0e3c6a571e5967be754025' ;; + '6.6.1') echo '7873ed5287f47ca03549ab8dcb6dc877ac7f0e3d7b1eb12685161d10080910ac' ;; + '6.7') echo '8ad57759019a9233dc7dc4d1a530cefe109dc122000d57f7e623f8cf4ba9dfc4' ;; + '6.7.1') echo '3239b5ed86c3838a37d983ac100573f64c1f3fd8e1eb6c89fa5f9529b5ec091d' ;; + '6.8') echo 'e2774e6fb77c43657decde25542dea710aafd78c4022d19b196e7e78d79d8c6c' ;; + '6.8.1') echo 'fd591a34af7385730970399f473afabdb8b28d57fd97d6625c388d090039d6fd' ;; + '6.8.2') echo '8de6efc274ab52332a9c820366dd5cf5fc9d35ec7078fd70c8ec6913431ee610' ;; + '6.8.3') echo '7faa7198769f872826c8ef4f1450f839ec27f0b4d5d1e51bade63667cbccd205' ;; + '6.9') echo '765442b8069c6bee2ea70713861c027587591c6b1df2c857a23361512560894e' ;; + '6.9.1') echo '8c12154228a502b784f451179846e518733cf856efc7d45b2e6691012977b2fe' ;; + '6.9.2') echo '8b356fd8702d5ffa2e066ed0be45a023a779bba4dd1a68fd11bc2a6bdc981e8f' ;; + '6.9.3') echo 'dcf350b8ae1aa192fc299aed6efc77b43825d4fedb224c94118ae7faf5fb035d' ;; + '6.9.4') echo '3e240228538de9f18772a574e99a0ba959e83d6ef351014381acd9631781389a' ;; + '7.0') echo 'eb8b89184261025b0430f5b2233701ff1377f96da1ef5e278af6ae8bac5cc305' ;; + '7.0.1') echo 'dccda8aa069563c8ba2f6cdfd0777df0e34a5b4d15138ca8b9757e94f4e8a8cb' ;; + '7.0.2') echo '0e46229820205440b48a5501122002842b82886e76af35f0f3a069243dca4b3c' ;; + '7.1') echo '2debee19271e1b82c6e41137d78e44e6e841035230a1a169ca47fd3fb09ed87b' ;; + '7.1.1') echo 'bf8b869948901d422e9bb7d1fa61da6a6e19411baa7ad6ee929073df85d6365d' ;; + '7.2') echo 'f581709a9c35e9cb92e16f585d2c4bc99b2b1a5f85d2badbd3dc6bff59e1e6dd' ;; + '7.3') echo 'de8f52ad49bdc759164f72439a3bf56ddb1589c4cde802d3cec7d6ad0e0ee410' ;; + '7.3.1') echo '9afb3ca688fc12c761a0e9e4321e4d24e977a4a8916c8a768b1fe05ddb4d6b66' ;; + '7.3.2') echo '23b89f8eac363f5f4b8336e0530c7295c55b728a9caa5268fdd4a532610d5392' ;; + '7.3.3') echo 'b586e04868a22fd817c8971330fec37e298f3242eb85c374181b12d637f80302' ;; + '7.4') echo '8cc27038d5dbd815759851ba53e70cf62e481b87494cc97cfd97982ada5ba634' ;; + '7.4.1') echo 'e5444a57cda4a95f90b0c9446a9e1b47d3d7f69057765bfb54bd4f482542d548' ;; + '7.4.2') echo '29e49b10984e585d8118b7d0bc452f944e386458df27371b49b4ac1dec4b7fda' ;; + '7.5') echo 'cb87f222c5585bd46838ad4db78463a5c5f3d336e5e2b98dc7c0c586527351c2' ;; + '7.5.1') echo 'f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4' ;; + '7.6') echo '7ba68c54029790ab444b39d7e293d3236b2632631fb5f2e012bb28b4ff669e4b' ;; + '7.6.1') echo '6147605a23b4eff6c334927a86ff3508cb5d6722cd624c97ded4c2e8640f1f87' ;; + '7.6.2') echo 'a01b6587e15fe7ed120a0ee299c25982a1eee045abd6a9dd5e216b2f628ef9ac' ;; + '7.6.3') echo '740c2e472ee4326c33bf75a5c9f5cd1e69ecf3f9b580f6e236c86d1f3d98cfac' ;; + '7.6.4') echo 'bed1da33cca0f557ab13691c77f38bb67388119e4794d113e051039b80af9bb1' ;; + '7.6.5') echo 'b812fec0edb7d27e0ae35955887bb2954536fa3e44edaf481150da058e154d9a' ;; + '8.0') echo '4159b938ec734a8388ce03f52aa8f3c7ed0d31f5438622545de4f83a89b79788' ;; + '8.0.1') echo '1b6b558be93f29438d3df94b7dfee02e794b94d9aca4611a92cdb79b6b88e909' ;; + '8.0.2') echo 'ff7bf6a86f09b9b2c40bb8f48b25fc19cf2b2664fd1d220cd7ab833ec758d0d7' ;; + '8.1') echo 'a62c5f99585dd9e1f95dab7b9415a0e698fa9dd1e6c38537faa81ac078f4d23e' ;; + '8.1.1') echo 'e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f' ;; + '8.2') echo '38f66cd6eef217b4c35855bb11ea4e9fbc53594ccccb5fb82dfd317ef8c2c5a3' ;; + '8.2.1') echo '03ec176d388f2aa99defcadc3ac6adf8dd2bce5145a129659537c0874dea5ad1' ;; + '8.3') echo '591855b517fc635b9e04de1d05d5e76ada3f89f5fc76f87978d1b245b4f69225' ;; + '8.4') echo '3e1af3ae886920c3ac87f7a91f816c0c7c436f276a6eefdb3da152100fef72ae' ;; + '8.5') echo '9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026' ;; + '8.6') echo '9631d53cf3e74bfa726893aee1f8994fee4e060c401335946dba2156f440f24c' ;; + '8.7') echo '544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d' ;; + '8.8') echo 'a4b4158601f8636cdeeab09bd76afb640030bb5b144aafe261a5e8af027dc612' ;; + '8.9') echo 'd725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab' ;; + '8.10') echo '5b9c5eb3f9fc2c94abaea57d90bd78747ca117ddbbf96c859d3741181a12bf2a' ;; + '8.10.1') echo '1541fa36599e12857140465f3c91a97409b4512501c26f9631fb113e392c5bd1' ;; + '8.10.2') echo '31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26' ;; + '8.11') echo '57dafb5c2622c6cc08b993c85b7c06956a2f53536432a30ead46166dbca0f1e9' ;; + '8.11.1') echo 'f397b287023acdba1e9f6fc5ea72d22dd63669d59ed4a289a29b1a76eee151c6' ;; + '8.12') echo '7a00d51fb93147819aab76024feece20b6b84e420694101f276be952e08bef03' ;; + '8.12.1') echo '8d97a97984f6cbd2b85fe4c60a743440a347544bf18818048e611f5288d46c94' ;; + '8.13') echo '20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78' ;; + '8.14') echo '61ad310d3c7d3e5da131b76bbf22b5a4c0786e9d892dae8c1658d4b484de3caa' ;; + '8.14.1') echo '845952a9d6afa783db70bb3b0effaae45ae5542ca2bb7929619e8af49cb634cf' ;; + '8.14.2') echo '7197a12f450794931532469d4ff21a59ea2c1cd59a3ec3f89c035c3c420a6999' ;; + *) exit 1 + esac +} + +contains() { + local e + for e in $2; do + [[ $e == $1 ]] && return 0; + done + return 1 +} + +# key-value pairs of what gradle version (value) each gradle plugin version +# (key) should accept. plugin versions are actually prefixes and catch sub- +# versions as well. Pairs are taken from: +# https://developer.android.com/studio/releases/gradle-plugin#updating-gradle +d_gradle_plugin_ver_k=(8.9 8.8 8.7 8.6 8.5 8.4 8.3 8.2 8.1 8.0 7.4 7.3 7.2 7.1 7.0 4.2 4.1 4.0 3.6 3.5 3.4 3.3 3.2 3.1 3.0 2.3 2.2 2.1.3 2.1 2.0) +d_plugin_min_gradle_v=(8.11.1 8.10.2 8.9 8.7 8.7 8.6 8.4 8.2 8.0 8.0 7.5 7.4 7.3.3 7.2 7.0.2 6.7.1 6.5 6.1.1 5.6.4 5.4.1 5.1.1 4.10.1 4.6 4.4 4.1 3.3 2.14.1 2.14.1 2.12 2.12) + +# All gradle versions we know about +plugin_v=(8.14.2 8.14.1 8.14 8.13 8.12.1 8.12 8.11.1 8.11 8.10.2 8.10.1 8.10 8.9 8.8 8.7 8.6 8.5 8.4 8.3 8.2.1 8.2 8.1.1 8.1 8.0.2 8.0.1 8.0 7.6.5 7.6.4 7.6.3 7.6.2 7.6.1 7.6 7.5.1 7.5 7.4.2 7.4.1 7.4 7.3.3 7.3.2 7.3.1 7.3 7.2 7.1.1 7.1 7.0.2 7.0.1 7.0 6.9.4 6.9.3 6.9.2 6.9.1 6.9 6.8.3 6.8.2 6.8.1 6.8 6.7.1 6.7 6.6.1 6.6 6.5.1 6.5 6.4.1 6.4 6.3 6.2.2 6.2.1 6.2 6.1.1 6.1 6.0.1 6.0 5.6.4 5.6.3 5.6.2 5.6.1 5.6 5.5.1 5.5 5.4.1 5.4 5.3.1 5.3 5.2.1 5.2 5.1.1 5.1 5.0 4.10.3 4.10.2 4.10.1 4.10 4.9 4.8.1 4.8 4.7 4.6 4.5.1 4.5 4.4.1 4.4 4.3.1 4.3 4.2.1 4.2 4.1 4.0.2 4.0.1 4.0 3.5.1 3.5 3.4.1 3.4 3.3 3.2.1 3.2 3.1 3.0 2.14.1 2.14 2.13 2.12 2.11 2.10 2.9 2.8 2.7 2.6 2.5 2.4 2.3 2.2.1 2.2 2.1 2.0 1.12 1.11 1.10 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1.0 0.9.2 0.9.1 0.9 0.8 0.7) + +v_all=${plugin_v[@]} + +# Earliest file takes priority +# Last key takes priority if there are duplicates (matching java.util.Properties) +for f in {.,..,../..}/gradle/wrapper/gradle-wrapper.properties; do + [[ -f $f ]] || continue + while IFS='' read -r line || [ -n "$line" ]; do + line=$(printf "$line" | tr -d '\r') # strip Windows linefeeds + if [[ $line == 'distributionUrl='* ]]; then + wrapper_ver=${line#*/gradle-} + wrapper_ver=${wrapper_ver%-*.zip} + fi + done < $f + [[ -n $wrapper_ver ]] && break +done + +if [[ -n $wrapper_ver ]]; then + v_found=$wrapper_ver + echo "Found $v_found via distributionUrl" + run_gradle +fi + +# Earliest takes priority +for f in {.,..}/build.gradle{,.kts}; do + [[ -f $f ]] || continue + while IFS='' read -r line || [ -n "$line" ]; do + line=$(printf "$line" | tr -d '\r') # strip Windows linefeeds + if [[ -z "$plugin_pver" && $line == *'com.android.tools.build:gradle:'* ]]; then + plugin_pver=${line#*[\'\"]com.android.tools.build:gradle:} + plugin_pver=${plugin_pver%[\'\"]*} + elif [[ -z "$wrapper_ver" && $line == *'gradleVersion = '* ]]; then + wrapper_ver=${line#*gradleVersion*=*[\'\"]} + wrapper_ver=${wrapper_ver%[\'\"]*} + fi + done < $f +done + +if [[ -n $wrapper_ver ]]; then + v_found=$wrapper_ver + echo "Found $v_found via gradleVersion" + run_gradle +fi + +if [[ -n $plugin_pver ]]; then + i=0 + match=false + for k in "${d_gradle_plugin_ver_k[@]}"; do + if [[ $plugin_pver == ${k}* ]]; then + plugin_ver=${d_plugin_min_gradle_v[$i]} + match=true + break + fi + let i++ + done + if $match; then + v_found=$plugin_ver + echo "Found $v_found via gradle plugin version $k" + fi +fi + +# Find the highest version available +for v in ${plugin_v[*]}; do + if contains $v "${v_all[*]}"; then + v_def=$v + break + fi +done + +if [[ -z $v_found ]]; then + echo "No suitable gradle version found - defaulting to $v_def" + v_found=$v_def +fi + +run_gradle diff --git a/hooks/pre-commit b/hooks/pre-commit index a147e689..039c1b65 100755 --- a/hooks/pre-commit +++ b/hooks/pre-commit @@ -11,7 +11,7 @@ if [ -z "$files" ]; then PY_FILES="fdroid makebuildserver setup.py fdroidserver/*.py examples/*.py tests/*-release-checksums.py" PY_TEST_FILES="tests/test_*.py" SH_FILES="hooks/pre-commit" - BASH_FILES="jenkins-build-all jenkins-setup-build-environment jenkins-test completion/bash-completion buildserver/provision-*" + BASH_FILES="gradlew-fdroid jenkins-build-all jenkins-setup-build-environment jenkins-test completion/bash-completion buildserver/provision-*" RB_FILES="buildserver/Vagrantfile" YML_FILES=".*.yml .yamllint */*.yml */*.yaml" else diff --git a/locale/az/LC_MESSAGES/fdroidserver.po b/locale/az/LC_MESSAGES/fdroidserver.po index 48050f95..6bc37559 100644 --- a/locale/az/LC_MESSAGES/fdroidserver.po +++ b/locale/az/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.2.1-143-g1a5ee449\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2023-05-26 19:39+0000\n" "Last-Translator: Mehrab Poladov \n" "Language-Team: Azerbaijani \n" @@ -353,11 +353,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1483,11 +1478,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2001,10 +1991,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/ba/LC_MESSAGES/fdroidserver.po b/locale/ba/LC_MESSAGES/fdroidserver.po deleted file mode 100644 index 9804a4f7..00000000 --- a/locale/ba/LC_MESSAGES/fdroidserver.po +++ /dev/null @@ -1,2695 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# Zulfar , 2025. -msgid "" -msgstr "" -"Project-Id-Version: fdroidserver 2.4.0\n" -"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" -"PO-Revision-Date: 2025-06-22 06:50+0000\n" -"Last-Translator: Zulfar \n" -"Language-Team: Bashkir \n" -"Language: ba\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" - -#: ../fdroidserver/nightly.py -msgid "" -"\n" -"SSH public key to be used as deploy key:" -msgstr "" -"\n" -"Урынлаштырыу асҡысы итеп ҡулланыу өсөн SSH асыҡ асҡысы:" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "" -"\n" -"{path} encoded for the DEBUG_KEYSTORE secret variable:" -msgstr "" -"\n" -"{path} DEBUG_KEYSTORE йәшерен үҙгәреүсәне өсөн кодланған:" - -#: ../fdroidserver/lint.py -#, python-format -msgid "\"%s/\" has no matching metadata file!" -msgstr "\"%s/\" өсөн ярашлы мета-мәғлүмәт файлы юҡ!" - -#: ../fdroidserver/index.py -msgid "\"isPrimary\" key should not be added to mirrors!" -msgstr "\"isPrimary\" асҡысы көҙгөләргә өҫтәлергә тейеш түгел!" - -#: ../fdroidserver/index.py -#, python-brace-format -msgid "\"local_copy_dir\" {path} does not exist!" -msgstr "\"local_copy_dir\" {path} каталогы юҡ!" - -#: ../fdroidserver/install.py -#, python-brace-format -msgid "\"{apkfilename}\" is already installed on {dev}." -msgstr "\"{apkfilename}\" {dev} ҡоролмаһында инде ҡуйылған." - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "\"{path}\" contains recent {name} ({version})" -msgstr "\"{path}\" эсендә {name} ({version}) ҡушымтаһының яңы версияһы бар." - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "\"{path}\" exists but s3cmd is not installed!" -msgstr "\"{path}\" бар, ләкин s3cmd ҡуйылмаған!" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "\"{path}\" is not a supported file format (use: metadata/*.yml)" -msgstr "\"{path}\" — яраҡлы файл форматы түгел (ҡулланығыҙ: metadata/*.yml)" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "\"{path}\" is signed by a key that is not allowed:" -msgstr "\"{path}\" рөхсәт ителмәгән асҡыс менән тамғаланған:" - -#: ../fdroidserver/import_subcommand.py -#, python-brace-format -msgid "\"{url}\" is not a valid URL!" -msgstr "\"{url}\" — дөрөҫ URL түгел!" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "%(prog)s: error: %(message)s\n" -msgstr "%(prog)s: хата: %(message)s\n" - -#: ../fdroidserver/publish.py -#, python-format -msgid "%d APKs failed to be signed or verified!" -msgstr "%d APK тамғаланманы йәки тикшерелмәне!" - -#: ../fdroidserver/scanner.py -#, python-format -msgid "%d problems found" -msgstr "%d проблема табылды" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "%r is not callable" -msgstr "%r саҡырылмалы түгел" - -#: ../fdroidserver/signindex.py -#, python-format -msgid "%s did not produce a dict!" -msgstr "%s һүҙлек (dict) ҡайтарманы!" - -#: ../fdroidserver/signindex.py -#, python-format -msgid "%s has bad SHA-256: %s" -msgstr "%s файлының SHA-256 суммаһы дөрөҫ түгел: %s" - -#: ../fdroidserver/lint.py -#, python-format -msgid "%s is not an accepted build field" -msgstr "%s — рөхсәт ителгән йыйыу яланы түгел" - -#: ../fdroidserver/common.py -msgid "'keypass' not found in config.yml!" -msgstr "config.yml файлында 'keypass' табылманы!" - -#: ../fdroidserver/common.py -msgid "'keystore' is NONE and 'smartcardoptions' is blank!" -msgstr "'keystore' күрһәтелмәгән һәм 'smartcardoptions' буш!" - -#: ../fdroidserver/common.py -msgid "'keystore' not found in config.yml!" -msgstr "config.yml файлында 'keystore' табылманы!" - -#: ../fdroidserver/common.py -msgid "'keystorepass' not found in config.yml!" -msgstr "config.yml файлында 'keystorepass' табылманы!" - -#: ../fdroidserver/common.py -msgid "'repo_keyalias' not found in config.yml!" -msgstr "config.yml файлында 'repo_keyalias' табылманы!" - -#: /usr/lib/python3.11/argparse.py -msgid "'required' is an invalid argument for positionals" -msgstr "Позицион аргументтар өсөн 'required' — дөрөҫ булмаған аргумент" - -#: ../fdroidserver/common.py -msgid "'sdk_path' not set in config.yml!" -msgstr "config.yml файлында 'sdk_path' күрһәтелмәгән!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" -msgstr "'{aapt}' бигерәк иҫке, F-Droid өсөн build-tools-{version} йәки яңыраҡ версияһы кәрәк!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "'{path}' failed to execute!" -msgstr "'{path}' башҡарылманы!" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "'{path}' has invalid format, it should be a dictionary!" -msgstr "'{path}' форматы дөрөҫ түгел, ул һүҙлек булырға тейеш!" - -#: ../fdroidserver/lint.py ../fdroidserver/metadata.py -#, python-brace-format -msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" -msgstr "'{appid}' өсөн '{value}' — дөрөҫ булмаған {field} ҡиммәте. Regex ҡалыбы: {pattern}" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "'{value}' is not a valid {field}, should be {pattern}" -msgstr "'{value}' — яраҡлы {field} түгел, {pattern} булырға тейеш" - -#: ../fdroidserver/checkupdates.py -msgid "--merge-request only runs on a single appid!" -msgstr "--merge-request тик бер appid менән генә эшләй!" - -#: ../fdroidserver/checkupdates.py -#, python-brace-format -msgid "...checkupdate failed for {appid} : {error}" -msgstr "...{appid} өсөн checkupdate уңышһыҙ үтте: {error}" - -#: /usr/lib/python3.11/argparse.py -msgid ".__call__() not defined" -msgstr ".__call__() билдәләнмәгән" - -#: ../fdroidserver/lint.py -msgid "/issues is missing" -msgstr "/issues юҡ" - -#: ../fdroidserver/mirror.py -msgid "A URL is required as an argument!" -msgstr "Аргумент итеп URL күрһәтеү мотлаҡ!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "APK signatures have different certificates in {path}:" -msgstr "{path} эсендәге APK-имзаларҙың сертификаттары төрлө:" - -#: ../fdroidserver/__main__.py -msgid "Add PGP signatures using GnuPG for packages in repo" -msgstr "Репозиторийҙағы пакеттарға GnuPG ярҙамында PGP-имзалар өҫтәү" - -#: ../fdroidserver/update.py -msgid "Add a repo signing key to an unsigned repo" -msgstr "Тамғаланмаған репозиторийға репо-имзалау асҡысын өҫтәү" - -#: ../fdroidserver/update.py -msgid "Add skeleton metadata files for APKs that are missing them" -msgstr "Мета-мәғлүмәт файлдары булмаған APK-лар өсөн ҡалыптар өҫтәү" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Adding new repo for only {name}" -msgstr "Тик {name} өсөн генә яңы репозиторий өҫтәү" - -#: ../fdroidserver/init.py -msgid "Alias of the repo signing key in the keystore" -msgstr "Асҡыстар һаҡлағысындағы репо-имзалау асҡысының псевдонимы" - -#: ../fdroidserver/build.py -msgid "AllowedAPKSigningKeys missing but reference binary supplied" -msgstr "AllowedAPKSigningKeys юҡ, ләкин өлгө бинар файл бирелгән" - -#: ../fdroidserver/import_subcommand.py -msgid "Allows a different revision (or git branch) to be specified for the initial import" -msgstr "Башланғыс импорт өсөн икенсе ревизия (йәки git ботағын) күрһәтергә мөмкинлек бирә" - -#: ../fdroidserver/mirror.py -msgid "Also mirror the full archive section" -msgstr "Шулай уҡ архив бүлегенең тулы күсермәһен яһау" - -#: ../fdroidserver/lint.py -msgid "Also warn about formatting issues, like rewritemeta -l" -msgstr "Шулай уҡ rewritemeta -l кеүек форматлау проблемалары тураһында иҫкәртеү" - -#: ../fdroidserver/scanner.py -msgid "Android AAR library" -msgstr "Android AAR китапханаһы" - -#: ../fdroidserver/scanner.py -msgid "Android APK file" -msgstr "Android APK файлы" - -#: ../fdroidserver/scanner.py -msgid "Android DEX code" -msgstr "Android DEX коды" - -#: ../fdroidserver/init.py -#, python-brace-format -msgid "Android SDK not found at {path}!" -msgstr "Android SDK {path} юлында табылманы!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Android SDK path '{path}' does not exist!" -msgstr "'{path}' Android SDK юлы юҡ!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Android SDK path '{path}' is not a directory!" -msgstr "'{path}' Android SDK юлы — каталог түгел!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Android SDK tool {cmd} not found!" -msgstr "{cmd} Android SDK ҡоралы табылманы!" - -#: ../fdroidserver/lint.py -msgid "App has Binaries but does not have corresponding AllowedAPKSigningKeys to pin certificate." -msgstr "Ҡушымтала Binaries бар, ләкин сертификатты беркетеү өсөн тейешле AllowedAPKSigningKeys юҡ." - -#: ../fdroidserver/lint.py -msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None" -msgstr "Ҡушымтала NoSourceSince йәки ArchivePolicy \"0 versions\" йәки 0 ҡуйылған, ләкин AutoUpdateMode йәки UpdateCheckMode None түгел" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "App is in '{repo}' but has a link to {url}" -msgstr "Ҡушымта '{repo}' эсендә, ләкин {url} адресына һылтанмаһы бар" - -#: ../fdroidserver/lint.py -msgid "App version has binary but does not have corresponding AllowedAPKSigningKeys to pin certificate." -msgstr "Ҡушымта версияһында бинар файл бар, ләкин сертификатты беркетеү өсөн тейешле AllowedAPKSigningKeys юҡ." - -#: ../fdroidserver/lint.py -msgid "Appending .git is not necessary" -msgstr ".git ҡушып яҙыу мотлаҡ түгел" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Archiving {apkfilename} with invalid signature!" -msgstr "{apkfilename} дөрөҫ булмаған имза менән архивлана!" - -#: ../fdroidserver/lint.py -msgid "AutoUpdateMode with UpdateCheckMode: HTTP must have a pattern." -msgstr "AutoUpdateMode-ла UpdateCheckMode: HTTP өсөн ҡалып булырға тейеш." - -#: ../fdroidserver/install.py -msgid "Automatic no to all prompts." -msgstr "Барлыҡ һорауҙарға автоматик рәүештә \"юҡ\" тигән яуап." - -#: ../fdroidserver/install.py -msgid "Automatic yes to all prompts." -msgstr "Барлыҡ һорауҙарға автоматик рәүештә \"эйе\" тигән яуап." - -#: ../fdroidserver/index.py -#, python-brace-format -msgid "Bad entry type \"{mirrortype}\" in mirrors config: {mirror}" -msgstr "Көҙгөләр көйләүҙәрендә дөрөҫ булмаған яҙма төрө \"{mirrortype}\": {mirror}" - -#: ../fdroidserver/mirror.py -msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" -msgstr "Көҙгө яһау өсөн төп URL, һорау юлы аша индекс имзалау асҡысын ҡушырға мөмкин: ?fingerprint=" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Branch '{branch}' used as commit in build '{versionName}'" -msgstr "'{versionName}' йыйылмаһында '{branch}' ботағы коммит булараҡ ҡулланылған" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Branch '{branch}' used as commit in srclib '{srclib}'" -msgstr "'{srclib}' сығанаҡ китапханаһында '{branch}' ботағы коммит булараҡ ҡулланылған" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Broken symlink: {path}" -msgstr "Өҙөлгән символик һылтанма: {path}" - -#: ../fdroidserver/__main__.py -msgid "Build a package from source" -msgstr "Пакетты сығанаҡ кодтан йыйыу" - -#: ../fdroidserver/build.py -msgid "Build all applications available" -msgstr "Барлыҡ ҡушымталарҙы йыйыу" - -#: ../fdroidserver/lint.py -msgid "Build generated by `fdroid import` - remove disable line once ready" -msgstr "`fdroid import` менән яһалған йыйылма — әҙер булғас, һүндереү юлын алып ташлағыҙ" - -#: ../fdroidserver/checkupdates.py -msgid "Build metadata git repo has uncommited changes!" -msgstr "Йыйыу мета-мәғлүмәттәренең git репозиторийында һаҡланмаған үҙгәрештәр бар!" - -#: ../fdroidserver/build.py -msgid "Build only the latest version of each package" -msgstr "Һәр пакеттың һуңғы версияһын ғына йыйыу" - -#: ../fdroidserver/init.py -#, python-format -msgid "Built repo based in \"%s\" with this config:" -msgstr "\"%s\" каталогында ошо көйләүҙәр менән репозиторий төҙөлдө:" - -#: ../fdroidserver/checkupdates.py -msgid "Can't auto-update app with no CurrentVersionCode" -msgstr "CurrentVersionCode булмаған ҡушымтаны автоматик яңыртып булмай" - -#: ../fdroidserver/build.py -msgid "Can't build due to {} error while scanning" -msgid_plural "Can't build due to {} errors while scanning" -msgstr[0] "Сканлау ваҡытындағы {} хата арҡаһында йыйып булмай" -msgstr[1] "Сканлау ваҡытындағы {} хата арҡаһында йыйып булмай" - -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "{path} уҡылманы: {error}" - -#: ../fdroidserver/rewritemeta.py -#, python-brace-format -msgid "Cannot rewrite \"{path}\"" -msgstr "\"{path}\" файлын үҙгәртеп яҙып булмай" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname -#: ../fdroidserver/lint.py -#, python-format -msgid "Categories '%s' is not valid" -msgstr "'%s' категориялары дөрөҫ түгел" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname -#: ../fdroidserver/lint.py -msgid "Categories are not set" -msgstr "Категориялар күрһәтелмәгән" - -#: ../fdroidserver/index.py -#, python-brace-format -msgid "Category \"{category}\" defined but not used for any apps!" -msgstr "\"{category}\" категорияһы билдәләнгән, ләкин бер ҡушымтала ла ҡулланылмай!" - -#: ../fdroidserver/__main__.py -msgid "Check for updates to applications" -msgstr "Ҡушымталар өсөн яңыртыуҙарҙы тикшереү" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" -msgstr "{appid} өсөн архивлауҙы тикшереү - apk:{integer}, һаҡларға:{keep}, архивта:{arch}" - -#: ../fdroidserver/update.py -msgid "Clean update - don't uses caches, reprocess all APKs" -msgstr "Таҙа яңыртыу — кештарҙы ҡулланмаҫҡа, бөтә APK-ларҙы яңынан эшкәртергә" - -#: ../fdroidserver/common.py -msgid "Color the log output" -msgstr "Лог сығарылышын төҫлө итеү" - -#: ../fdroidserver/import_subcommand.py -msgid "Comma separated list of categories." -msgstr "Өтөр менән айырылған категориялар исемлеге." - -#: ../fdroidserver/__main__.py -#, python-format -msgid "Command '%s' not recognised.\n" -msgstr "'%s' командаһы танылманы.\n" - -#: ../fdroidserver/checkupdates.py -msgid "Commit changes" -msgstr "Үҙгәрештәрҙе һаҡлау (commit)" - -#: ../fdroidserver/checkupdates.py -msgid "Commit changes, push, then make a merge request" -msgstr "Үҙгәрештәрҙе һаҡларға (commit), ебәрергә (push), шунан берләштереүгә һорау яһарға" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Conflicting \"{field}\" definitions between .yml and localized files:" -msgstr ".yml һәм локалләштерелгән файлдар араһында \"{field}\" өсөн ҡапма-ҡаршылыҡлы билдәләмәләр:" - -#: ../fdroidserver/__main__.py -msgid "Conflicting arguments: '--verbose' and '--quiet' can not be specified at the same time." -msgstr "Ҡапма-ҡаршылыҡлы аргументтар: '--verbose' һәм '--quiet' бер үк ваҡытта күрһәтелә алмай." - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Could not find '{command}' on your system" -msgstr "Системала '{command}' табылманы" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode -#: ../fdroidserver/import_subcommand.py -msgid "Could not find latest version code" -msgstr "Һуңғы версияның кодын табып булманы" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname -#: ../fdroidserver/import_subcommand.py -msgid "Could not find latest version name" -msgstr "Һуңғы версияның исемен табып булманы" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Could not find {path} to remove it" -msgstr "Юйыу өсөн {path} табылманы" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Could not open APK {path} for analysis: " -msgstr "Анализ өсөн {path} APK файлын асып булманы: " - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Could not parse size \"{size}\", wrong type \"{type}\"" -msgstr "\"{size}\" үлсәмен танып булманы, дөрөҫ булмаған тип \"{type}\"" - -#. Translators: https://developer.android.com/build/configure-app-module#set-application-id -#: ../fdroidserver/import_subcommand.py -msgid "Couldn't find Application ID" -msgstr "Ҡушымтаның идентификаторын (Application ID) табып булманы" - -#: ../fdroidserver/checkupdates.py -msgid "Couldn't find any version information" -msgstr "Бер ниндәй ҙә версия мәғлүмәте табылманы" - -#: ../fdroidserver/checkupdates.py -msgid "Couldn't find package ID" -msgstr "Пакет идентификаторын табып булманы" - -#: ../fdroidserver/update.py -msgid "Cowardily refusing to overwrite existing signing key setup!" -msgstr "Инде булған имзалау асҡысы көйләүҙәрен өҫтөнән яҙҙырыуҙан ҡурҡаҡтарса баш тартам!" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Created new container \"{name}\"" -msgstr "Яңы \"{name}\" контейнеры булдырылды" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Creating \"{path}\" for configuring s3cmd." -msgstr "s3cmd-ты көйләү өсөн \"{path}\" булдырыла." - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Creating empty {config_file}" -msgstr "Буш {config_file} булдырыла" - -#: ../fdroidserver/publish.py -msgid "Creating log directory" -msgstr "Логтар каталогы булдырыла" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Creating new S3 bucket: {url}" -msgstr "Яңы S3 биҙрәһе булдырыла: {url}" - -#: ../fdroidserver/publish.py -msgid "Creating output directory" -msgstr "Сығарыу каталогы булдырыла" - -#: ../fdroidserver/index.py -msgid "Creating signed index with this key (SHA256):" -msgstr "Ошо асҡыс менән тамғаланған индекс булдырыла (SHA256):" - -#: ../fdroidserver/publish.py ../fdroidserver/verify.py -msgid "Creating temporary directory" -msgstr "Ваҡытлыса каталог булдырыла" - -#: ../fdroidserver/index.py -msgid "Creating unsigned index in preparation for signing" -msgstr "Тамғалауға әҙерлек өсөн тамғаланмаған индекс булдырыла" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "CurrentVersionCode {cv} is less than oldest build entry {versionCode}" -msgstr "Ағымдағы CurrentVersionCode {cv} иң иҫке йыйылма яҙмаһынан {versionCode} бәләкәйерәк" - -#: ../fdroidserver/nightly.py -msgid "DEBUG_KEYSTORE is not set or the value is incomplete" -msgstr "DEBUG_KEYSTORE күрһәтелмәгән йәки уның ҡиммәте тулы түгел" - -#: ../fdroidserver/update.py -msgid "Delete APKs and/or OBBs without metadata from the repo" -msgstr "Репозиторийҙан мета-мәғлүмәттәрһеҙ APK-ларҙы һәм/йәки OBB-ларҙы юйыу" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Deleting archive, repo is too big ({size} max {limit})" -msgstr "Архив юйыла, репозиторий бигерәк ҙур ({size} макс. {limit})" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Deleting git-mirror history, repo is too big ({size} max {limit})" -msgstr "git-көҙгөнөң тарихы юйыла, репозиторий бигерәк ҙур ({size} макс. {limit})" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Deleting unknown file: {path}" -msgstr "Билдәһеҙ файл юйыла: {path}" - -#: ../fdroidserver/lint.py -#, python-format -msgid "Description '%s' is just the app's summary" -msgstr "'%s' тасуирламаһы — ул ҡушымтаның ҡыҫҡаса аңлатмаһы ғына" - -#: ../fdroidserver/lint.py -msgid "Description has a duplicate line" -msgstr "Тасуирламала ҡабатланған юл бар" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Description of length {length} is over the {limit} char limit" -msgstr "{length} оҙонлоғондағы тасуирлама {limit} символ сикләүенән артып китә" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Did you mean config/{name}.yml?" -msgstr "Һеҙ config/{name}.yml-ды күҙ уңында тоттоғоҙмо?" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Did you mean {code}?" -msgstr "Һеҙ {code}-ты күҙ уңында тоттоғоҙмо?" - -#: ../fdroidserver/import_subcommand.py -msgid "Do not add 'disable:' to the generated build entries" -msgstr "Булдырылған йыйылма яҙмаларына 'disable:' өҫтәмәгеҙ" - -#: ../fdroidserver/nightly.py -msgid "Do not deploy the new files to the repo" -msgstr "Яңы файлдарҙы репозиторийға урынлаштырмағыҙ" - -#: ../fdroidserver/mirror.py -#, python-brace-format -msgid "Do not include \"{path}\" in URL!" -msgstr "URL-ға \"{path}\"-ты индермәгеҙ!" - -#: ../fdroidserver/init.py -msgid "Do not prompt for Android SDK path, just fail" -msgstr "Android SDK юлын һорамаҫҡа, шунда уҡ уңышһыҙлыҡ менән тамамларға" - -#: ../fdroidserver/nightly.py -msgid "Do not remove the private keys generated from the keystore" -msgstr "Асҡыстар һаҡлағысынан булдырылған шәхси асҡыстарҙы юймағыҙ" - -#: ../fdroidserver/build.py -msgid "Don't create a source tarball, useful when testing a build" -msgstr "Сығанаҡ кодтарҙың tarball-ын яһамаҫҡа, йыйылманы һынағанда файҙалы" - -#: ../fdroidserver/build.py -msgid "Don't refresh the repository, useful when testing a build with no internet connection" -msgstr "Репозиторийҙы яңыртмаҫҡа, интернетһыҙ йыйылманы һынағанда файҙалы" - -#: ../fdroidserver/deploy.py ../fdroidserver/nightly.py -msgid "Don't use rsync checksums" -msgstr "rsync контроль суммаларын ҡулланмаҫҡа" - -#: ../fdroidserver/install.py -msgid "Download F-Droid.apk using mirrors that leak less to the network" -msgstr "F-Droid.apk-ны селтәргә аҙыраҡ мәғлүмәт ебәргән көҙгөләр аша йөкмәтергә" - -#: ../fdroidserver/__main__.py -msgid "Download complete mirrors of small repos" -msgstr "Бәләкәй репозиторийҙарҙың тулы көҙгөләрен йөкмәтеү" - -#: ../fdroidserver/common.py -msgid "Downloading the repository already failed once, not trying again." -msgstr "Репозиторийҙы йөкмәтеү бер тапҡыр уңышһыҙ булды инде, яңынан ҡабатланмаясаҡ." - -#: ../fdroidserver/verify.py -#, python-brace-format -msgid "Downloading {url} failed. {error}" -msgstr "{url} йөкмәтелмәне. {error}" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Duplicate Anti-Feature declaration at {path} was ignored!" -msgstr "{path} юлындағы ҡабатланған Anti-Feature декларацияһы иғтибарһыҙ ҡалдырылды!" - -#: ../fdroidserver/index.py -#, python-format -msgid "Duplicate entry \"%s\" in mirrors config!" -msgstr "Көҙгөләр көйләүҙәрендә ҡабатланған \"%s\" яҙмаһы!" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Duplicate link in '{field}': {url}" -msgstr "'{field}' яланында ҡабатланған һылтанма: {url}" - -#: ../fdroidserver/common.py -#, python-format -msgid "ERROR: %(message)s" -msgstr "ХАТА: %(message)s" - -#: ../fdroidserver/__main__.py -msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" -msgstr "ХАТА: \"server\" аҫкомандаһы алынды, \"deploy\" командаһын ҡулланығыҙ!" - -#: ../fdroidserver/nightly.py -msgid "ERROR: unsupported CI type, patches welcome!" -msgstr "ХАТА: яраҡһыҙ CI төрө, төҙәтмәләр хуплана!" - -#: ../fdroidserver/nightly.py -#, python-format -msgid "ERROR: unsupported git host \"%s\", patches welcome!" -msgstr "ХАТА: яраҡһыҙ git хосты \"%s\", төҙәтмәләр хуплана!" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "ERROR: {key} in {path} is not \"archive\" or \"repo\"!" -msgstr "ХАТА: {path} эсендәге {key} асҡысы \"archive\" йәки \"repo\" түгел!" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "ERROR: {key} not a valid key!" -msgstr "ХАТА: {key} — дөрөҫ асҡыс түгел!" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "ERROR: {key}'s value should be of type {t}!" -msgstr "ХАТА: {key} асҡысының ҡиммәте {t} тибында булырға тейеш!" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "ERROR: {key}:{subkey} in {path} is not in allowed keys: {allowed_keys}!" -msgstr "ХАТА: {path} эсендәге {key}:{subkey} рөхсәт ителгән асҡыстар исемлегендә юҡ: {allowed_keys}!" - -#: ../fdroidserver/__main__.py -#, python-brace-format -msgid "Encoding is set to '{enc}' fdroid might run into encoding issues. Please set it to 'UTF-8' for best results." -msgstr "Кодировка '{enc}' итеп ҡуйылған, F-Droid-та кодировка проблемалары булыуы мөмкин. Иң яҡшы һөҙөмтә өсөн уны 'UTF-8'-гә ҡуйығыҙ." - -#: ../fdroidserver/init.py -#, python-format -msgid "" -"Enter the path to the Android SDK (%s) here:\n" -"> " -msgstr "" -"Android SDK-ның юлын (%s) бында яҙығыҙ:\n" -"> " - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Environment variable {var} from {configname} is not set!" -msgstr "{configname} эсенән {var} мөхит үҙгәреүсәне күрһәтелмәгән!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Environment variable {{env: {var}}} is not set!" -msgstr "{{env: {var}}} мөхит үҙгәреүсәне күрһәтелмәгән!" - -#: ../fdroidserver/deploy.py -msgid "Error deploying 'github_releases', {} not present. (You might need to run `fdroid update` first.)" -msgstr "'github_releases' урынлаштырыу хатаһы, {} юҡ. (Башта `fdroid update` командаһын эшләтеп алырға кәрәк булыуы мөмкин.)" - -#: ../fdroidserver/import_subcommand.py -msgid "Error while getting repo address" -msgstr "Репозиторий адресын алғанда хата" - -#: ../fdroidserver/scanner.py -msgid "Exit with a non-zero code if problems were found" -msgstr "Проблемалар табылһа, нулдән айырмалы код менән сығырға" - -#: ../fdroidserver/__main__.py -msgid "Extract application metadata from a source repository" -msgstr "Сығанаҡ репозиторийынан ҡушымтаның мета-мәғлүмәттәрен сығарыу" - -#: ../fdroidserver/__main__.py -msgid "Extract signatures from APKs" -msgstr "APK-ларҙан имзаларҙы сығарыу" - -#: ../fdroidserver/install.py -msgid "F-Droid.apk could not be downloaded from any known source!" -msgstr "F-Droid.apk-ны билдәле сығанаҡтарҙың береһенән дә йөкмәтеп булманы!" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Failed copying {path}: {error}" -msgstr "{path} күсерелмәне: {error}" - -#: ../fdroidserver/signatures.py -#, python-brace-format -msgid "Failed fetching signatures for '{apkfilename}': {error}" -msgstr "'{apkfilename}' өсөн имзаларҙы алып булманы: {error}" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Failed reading {path}: {error}" -msgstr "{path} уҡылманы: {error}" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Failed resizing {path}: {error}" -msgstr "{path} үлсәме үҙгәртелмәне: {error}" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Failed to create S3 bucket: {url}" -msgstr "S3 контейнерын булдырып булманы: {url}" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Failed to get APK information, deleting {path}" -msgstr "APK тураһында мәғлүмәт алып булманы, {path} юйыла" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Failed to get APK information, skipping {path}" -msgstr "APK тураһында мәғлүмәт алып булманы, {path} үткәреп ебәрелә" - -#: ../fdroidserver/update.py -msgid "Failed to get APK signing key fingerprint" -msgstr "APK имзалау асҡысының бармаҡ эҙен алып булманы" - -#: ../fdroidserver/install.py -#, python-brace-format -msgid "Failed to install '{apkfilename}' on {dev}: {error}" -msgstr "'{apkfilename}' {dev} ҡоролмаһына ҡуйылманы: {error}" - -#: ../fdroidserver/common.py -msgid "Failed to sign application" -msgstr "Ҡушымтаны тамғалап булманы" - -#: ../fdroidserver/build.py -#, python-brace-format -msgid "Fetched buildserverid from VM: {buildserverid}" -msgstr "VM-дан йыйыу-серверының ID-һы алынды: {buildserverid}" - -#: ../fdroidserver/signatures.py -#, python-brace-format -msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" -msgstr "'{apkfilename}' өсөн имзалар алынды -> '{sigdir}'" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "File disappeared while processing it: {path}" -msgstr "Файл эшкәртелгән ваҡытта юғалды: {path}" - -#: ../fdroidserver/build.py ../fdroidserver/install.py -#: ../fdroidserver/rewritemeta.py ../fdroidserver/scanner.py -#: ../fdroidserver/update.py -msgid "Finished" -msgstr "Тамамланды" - -#: ../fdroidserver/lint.py -msgid "Forbidden HTML tags" -msgstr "Тыйылған HTML тегтары" - -#: ../fdroidserver/build.py -msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." -msgstr "Һүндерелгән ҡушымталарҙы мәжбүри йыйыу һәм сканлау проблемаларына ҡарамаҫтан дауам итеү. Тик һынау режимында ғына рөхсәт ителә." - -#: ../fdroidserver/build.py -#, python-brace-format -msgid "Force halting build after {0} sec timeout!" -msgstr "{0} секундлыҡ тайм-ауттан һуң йыйыуҙы мәжбүри туҡтатыу!" - -#: ../fdroidserver/scanner.py -msgid "Force scan of disabled apps and builds." -msgstr "Һүндерелгән ҡушымталарҙы һәм йыйылмаларҙы мәжбүри сканлау." - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" -msgstr "\"{name}\" ҡушымтаһы өсөн мета-мәғлүмәтһеҙ \"{path}\" графикаһы табылды!" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Found bad funding file \"{path}\" for \"{name}\":" -msgstr "\"{name}\" өсөн дөрөҫ булмаған \"{path}\" финанслау файлы табылды:" - -#: ../fdroidserver/common.py -msgid "Found invalid appids in arguments" -msgstr "Аргументтарҙа дөрөҫ булмаған appid-ҙар табылды" - -#: ../fdroidserver/common.py -msgid "Found invalid versionCodes for some apps" -msgstr "Ҡайһы бер ҡушымталар өсөн дөрөҫ булмаған versionCode-тар табылды" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Found multiple JAR Signature Block Files in {path}" -msgstr "{path} эсендә бер нисә JAR имза блок файлы табылды" - -#: ../fdroidserver/common.py -msgid "Found multiple Signer Certificates!" -msgstr "Бер нисә имзалаусы сертификаты табылды!" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Found multiple metadata files for {appid}" -msgstr "{appid} өсөн бер нисә мета-мәғлүмәт файлы табылды" - -#: ../fdroidserver/index.py -msgid "Found multiple signing certificates for repository." -msgstr "Репозиторий өсөн бер нисә имзалау сертификаты табылды." - -#: ../fdroidserver/index.py -msgid "Found no signing certificates for repository." -msgstr "Репозиторий өсөн имзалау сертификаттары табылманы." - -#: ../fdroidserver/lint.py -#, python-format -msgid "Found non-file at %s" -msgstr "%s юлында файл булмаған объект табылды" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Found {apkfilename} at {url}" -msgstr "{apkfilename} {url} адресында табылды" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "Found {count} problems in {filename}" -msgstr "{filename} эсендә {count} проблема табылды" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "Found {count} warnings in {filename}" -msgstr "{filename} эсендә {count} иҫкәрмә табылды" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Generated skeleton metadata for {appid}" -msgstr "{appid} өсөн мета-мәғлүмәт ҡалыбы булдырылды" - -#: ../fdroidserver/common.py -#, python-format -msgid "Git checkout of '%s' failed" -msgstr "'%s' Git checkout-ы уңышһыҙ булды" - -#: ../fdroidserver/common.py -msgid "Git clean failed" -msgstr "Git clean уңышһыҙ булды" - -#: ../fdroidserver/common.py -msgid "Git fetch failed" -msgstr "Git fetch уңышһыҙ булды" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode -#: ../fdroidserver/common.py -#, python-format -msgid "Git remote set-head failed: \"%s\"" -msgstr "Git remote set-head уңышһыҙ булды: \"%s\"" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode -#: ../fdroidserver/common.py -msgid "Git reset failed" -msgstr "Git reset уңышһыҙ булды" - -#: ../fdroidserver/common.py -msgid "Git submodule deinit failed" -msgstr "Git submodule deinit уңышһыҙ булды" - -#: ../fdroidserver/common.py -msgid "Git submodule sync failed" -msgstr "Git submodule sync уңышһыҙ булды" - -#: ../fdroidserver/common.py -msgid "Git submodule update failed" -msgstr "Git submodule update уңышһыҙ булды" - -#: ../fdroidserver/common.py -msgid "HTTPS must be used with Subversion URLs!" -msgstr "Subversion URL-дары менән HTTPS ҡулланылырға тейеш!" - -#: ../fdroidserver/deploy.py -msgid "If a git mirror gets to big, allow the archive to be deleted" -msgstr "git көҙгөһө бигерәк ҙурайып китһә, архивты юйырға рөхсәт итеү" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "If this upload fails, try manually uploading to {url}" -msgstr "Был йөкмәү уңышһыҙ булһа, {url} адресына ҡулдан йөкмәп ҡарағыҙ" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Ignoring '{field}' in '{metapath}' metadata because it is deprecated." -msgstr "'{metapath}' мета-мәғлүмәттәрендәге '{field}' иҫкергән булғанға иғтибарһыҙ ҡалдырыла." - -#: ../fdroidserver/update.py -#, python-format -msgid "Ignoring FUNDING.yml entry longer than 2048: %s" -msgstr "2048-ҙән оҙонораҡ FUNDING.yml яҙмаһы иғтибарһыҙ ҡалдырыла: %s" - -#: ../fdroidserver/update.py -#, python-format -msgid "Ignoring bad element in manifest: %s" -msgstr "Манифестағы дөрөҫ булмаған элемент иғтибарһыҙ ҡалдырыла: %s" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Ignoring deprecated {oldfile}, use {newfile}!" -msgstr "Иҫкергән {oldfile} иғтибарһыҙ ҡалдырыла, {newfile} ҡулланығыҙ!" - -#: ../fdroidserver/index.py -msgid "Ignoring package without metadata: " -msgstr "Мета-мәғлүмәтһеҙ пакет иғтибарһыҙ ҡалдырыла: " - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Ignoring stale cache data for {apkfilename}" -msgstr "{apkfilename} өсөн иҫкергән кеш мәғлүмәттәре иғтибарһыҙ ҡалдырыла" - -#: ../fdroidserver/update.py -msgid "Include APKs that are signed with disabled algorithms like MD5" -msgstr "MD5 кеүек һүндерелгән алгоритмдар менән тамғаланған APK-ларҙы индереү" - -#: ../fdroidserver/mirror.py -msgid "Include the PGP signature .asc files in the mirror" -msgstr "Көҙгөгә PGP-имзалы .asc файлдарын индереү" - -#: ../fdroidserver/mirror.py -msgid "Include the build logs in the mirror" -msgstr "Көҙгөгә йыйыу логтарын индереү" - -#: ../fdroidserver/mirror.py -msgid "Include the source tarballs in the mirror" -msgstr "Көҙгөгә сығанаҡ tarball-дарҙы индереү" - -#: ../fdroidserver/metadata.py -#, python-format -msgid "Including metadata from %s@%s" -msgstr "%s@%s версияһынан мета-мәғлүмәттәр индерелә" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Including metadata from {path}" -msgstr "{path} юлынан мета-мәғлүмәттәр индерелә" - -#: ../fdroidserver/common.py -msgid "Initialising submodules" -msgstr "Аҫмодулдәрҙе инициализациялау" - -#: ../fdroidserver/install.py -msgid "Install all signed applications available" -msgstr "Барлыҡ тамғаланған ҡушымталарҙы ҡуйыу" - -#: ../fdroidserver/__main__.py -msgid "Install built packages on devices" -msgstr "Йыйылған пакеттарҙы ҡоролмаларға ҡуйыу" - -#: ../fdroidserver/install.py -#, python-format -msgid "Installing %s..." -msgstr "%s ҡуйыла..." - -#: ../fdroidserver/install.py -#, python-brace-format -msgid "Installing '{apkfilename}' on {dev}..." -msgstr "'{apkfilename}' {dev} ҡоролмаһына ҡуйыла..." - -#: ../fdroidserver/__main__.py -msgid "Interact with the repo HTTP server" -msgstr "Репоның HTTP-серверы менән эш итеү" - -#: ../fdroidserver/update.py -msgid "Invalid APK" -msgstr "Дөрөҫ булмаған APK" - -#: ../fdroidserver/checkupdates.py -#, python-brace-format -msgid "Invalid AutoUpdateMode: {mode}" -msgstr "Дөрөҫ булмаған AutoUpdateMode: {mode}" - -#: ../fdroidserver/checkupdates.py -#, python-brace-format -msgid "Invalid UpdateCheckMode: {mode}" -msgstr "Дөрөҫ булмаған UpdateCheckMode: {mode}" - -#: ../fdroidserver/checkupdates.py -#, python-brace-format -msgid "Invalid VercodeOperation: {field}" -msgstr "Дөрөҫ булмаған VercodeOperation: {field}" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Invalid VercodeOperation: {invalid_ops}" -msgstr "Дөрөҫ булмаған VercodeOperation: {invalid_ops}" - -#. Translators: https://developer.android.com/build/configure-app-module#set-application-id -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Invalid application ID {appid}" -msgstr "Дөрөҫ булмаған ҡушымта идентификаторы {appid}" - -#: ../fdroidserver/lint.py -msgid "Invalid bulleted list" -msgstr "Дөрөҫ булмаған маркировкалы исемлек" - -#: ../fdroidserver/common.py -#, python-format -msgid "Invalid name for published file: %s" -msgstr "Баҫтырылған файл өсөн дөрөҫ булмаған исем: %s" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Invalid ndk: entry in build: \"{ndk}\"" -msgstr "Йыйылмала дөрөҫ булмаған ndk: яҙмаһы: \"{ndk}\"" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Invalid redirect to non-HTTPS: {before} -> {after} " -msgstr "HTTPS булмаған адресҡа дөрөҫ булмаған йүнәлтеү: {before} -> {after} " - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Invalid scrlib metadata: '{file}' does not exist" -msgstr "Дөрөҫ булмаған scrlib мета-мәғлүмәте: '{file}' юҡ" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Invalid srclib metadata: could not parse '{file}'" -msgstr "Дөрөҫ булмаған srclib мета-мәғлүмәте: '{file}' танылманы" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Invalid srclib metadata: unknown key '{key}' in '{file}'" -msgstr "Дөрөҫ булмаған srclib мета-мәғлүмәте: '{file}' эсендә билдәһеҙ '{key}' асҡысы" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "JAR signature failed to verify: {path}" -msgstr "JAR имзаһы тикшерелмәне: {path}" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "JAR signature verified: {path}" -msgstr "JAR имзаһы тикшерелде: {path}" - -#: ../fdroidserver/scanner.py -msgid "Java JAR file" -msgstr "Java JAR файлы" - -#: ../fdroidserver/mirror.py ../fdroidserver/publish.py -#: ../fdroidserver/update.py -msgid "Java JDK not found! Install in standard location or set java_paths!" -msgstr "Java JDK табылманы! Стандарт урынға ҡуйығыҙ йәки java_paths-ты күрһәтегеҙ!" - -#: ../fdroidserver/scanner.py -msgid "Java compiled class" -msgstr "Компиляцияланған Java класы" - -#: ../fdroidserver/signindex.py -msgid "Java jarsigner not found! Install in standard location or set java_paths!" -msgstr "Java jarsigner табылманы! Стандарт урынға ҡуйығыҙ йәки java_paths-ты күрһәтегеҙ!" - -#: ../fdroidserver/lint.py -msgid "Javascript in HTML src attributes" -msgstr "HTML-дың src атрибуттарында Javascript" - -#: ../fdroidserver/build.py -#, python-brace-format -msgid "Keeping failed build \"{apkfilename}\"" -msgstr "Уңышһыҙ йыйылған \"{apkfilename}\" һаҡлана" - -#: ../fdroidserver/init.py -msgid "Keystore for signing key:\t" -msgstr "Имзалау асҡысы өсөн асҡыстар һаҡлағысы:\t" - -#: ../fdroidserver/lint.py -msgid "Known debug key is used in AllowedAPKSigningKeys: " -msgstr "AllowedAPKSigningKeys-та билдәле төҙәтеү асҡысы ҡулланыла: " - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" -msgstr "Һуңғы ҡулланылған '{commit}' коммиты тегҡа оҡшаған, ләкин UpdateCheckMode '{ucm}' итеп ҡуйылған" - -#: ../fdroidserver/lint.py -msgid "Liberapay donation methods belong in the Liberapay: field" -msgstr "Liberapay иғәнә ысулдары Liberapay: яланында булырға тейеш" - -#: ../fdroidserver/rewritemeta.py -msgid "List files that would be reformatted (dry run)" -msgstr "Яңынан форматланасаҡ файлдарҙың исемлеге (ҡоро эшләтеп ҡарау)" - -#: ../fdroidserver/lint.py -msgid "Locale included in f-droid.org URL" -msgstr "f-droid.org URL-ында локаль бар" - -#: ../fdroidserver/build.py -msgid "Make the build stop on exceptions" -msgstr "Хаталар булғанда йыйыуҙы туҡтатыу" - -#: ../fdroidserver/index.py -msgid "Malformed repository mirrors." -msgstr "Репозиторий көҙгөләре дөрөҫ форматланмаған." - -#: ../fdroidserver/deploy.py -msgid "Malformed serverwebroot line:" -msgstr "serverwebroot юлы дөрөҫ форматланмаған:" - -#: ../fdroidserver/scanner.py -#, python-format -msgid "Max recursion depth in ZIP file reached: %s" -msgstr "ZIP файлында максималь рекурсия тәрәнлегенә етелде: %s" - -#: ../fdroidserver/index.py -#, python-brace-format -msgid "Mirror config for {url} contains \"isPrimary\" key!" -msgstr "{url} өсөн көҙгө көйләүҙәрендә \"isPrimary\" асҡысы бар!" - -#: ../fdroidserver/mirror.py -msgid "Mirror the full repo and archive, all file types." -msgstr "Репо менән архивтың тулы көҙгөһөн яһау, бөтә файл төрҙәре." - -#: ../fdroidserver/gpgsign.py -msgid "Missing output directory" -msgstr "Сығарыу каталогы юҡ" - -#: ../fdroidserver/metadata.py -msgid "Moving Anti-Features declarations to localized files:" -msgstr "Anti-Features декларацияларын локалләштерелгән файлдарға күсереү:" - -#: ../fdroidserver/index.py -msgid "Neither \"repo_pubkey\" nor \"keystorepass\" set in config.yml" -msgstr "config.yml-да \"repo_pubkey\" ҙә, \"keystorepass\" та күрһәтелмәгән" - -#: ../fdroidserver/verify.py -#, python-format -msgid "No APK for package: %s" -msgstr "%s пакеты өсөн APK юҡ" - -#: ../fdroidserver/common.py -msgid "No Android SDK found!" -msgstr "Android SDK табылманы!" - -#: ../fdroidserver/install.py -msgid "No attached devices found" -msgstr "Тоташтырылған ҡоролмалар табылманы" - -#: ../fdroidserver/install.py -msgid "No devices found for `adb install`! Please plug one in." -msgstr "`adb install` өсөн ҡоролмалар табылманы! Зинһар, берәйһен тоташтырығыҙ." - -#: ../fdroidserver/index.py -msgid "No fingerprint in URL." -msgstr "URL-да бармаҡ эҙе юҡ." - -#: ../fdroidserver/common.py -msgid "No git submodules available" -msgstr "git аҫмодулдәре юҡ" - -#: ../fdroidserver/import_subcommand.py -msgid "No gradle project could be found. Specify --subdir?" -msgstr "gradle проекты табылманы. --subdir күрһәтеп ҡарайһығыҙмы?" - -#: ../fdroidserver/import_subcommand.py -msgid "No information found." -msgstr "Мәғлүмәт табылманы." - -#: ../fdroidserver/checkupdates.py -msgid "No matching tags found" -msgstr "Ярашлы тегтар табылманы" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "No minimum SDK version found in {0}, using default (3)." -msgstr "{0} эсендә SDK-ның минималь версияһы табылманы, стандарт (3) ҡулланыла." - -#: ../fdroidserver/lint.py -msgid "No need to specify that the app is Free Software" -msgstr "Ҡушымтаның Ирекле Программа булыуын күрһәтеү кәрәкмәй" - -#: ../fdroidserver/lint.py -msgid "No need to specify that the app is for Android" -msgstr "Ҡушымтаның Android өсөн булыуын күрһәтеү кәрәкмәй" - -#: ../fdroidserver/deploy.py -msgid "No option set! Edit your config.yml to set at least one of these:" -msgstr "Бер параметр ҙа күрһәтелмәгән! config.yml файлына үҙгәреш индереп, ошоларҙың кәмендә береһен күрһәтегеҙ:" - -#: ../fdroidserver/common.py -msgid "No packages specified" -msgstr "Пакеттар күрһәтелмәгән" - -#: ../fdroidserver/install.py -#, python-format -msgid "No signed APK available for %s" -msgstr "%s өсөн тамғаланған APK юҡ" - -#: ../fdroidserver/install.py -msgid "No signed output directory - nothing to do" -msgstr "Тамғаланған сығарыу каталогы юҡ — эшләр нәмә юҡ" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "No signing certificates found in {path}" -msgstr "{path} эсендә имзалау сертификаттары табылманы" - -#: ../fdroidserver/common.py -#, python-format -msgid "No such package: %s" -msgstr "Бындай пакет юҡ: %s" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "No such versionCode {versionCode} for app {appid}" -msgstr "{appid} ҡушымтаһы өсөн бындай {versionCode} versionCode-ы юҡ" - -#: ../fdroidserver/checkupdates.py -msgid "No tags found" -msgstr "Тегтар табылманы" - -#: ../fdroidserver/publish.py ../fdroidserver/verify.py -msgid "No unsigned directory - nothing to do" -msgstr "Тамғаланмаған каталог юҡ — эшләр нәмә юҡ" - -#: ../fdroidserver/__main__.py -msgid "No version information could be found." -msgstr "Версия тураһында мәғлүмәт табылманы." - -#: ../fdroidserver/common.py -msgid "Not a valid size definition: \"{}\"" -msgstr "Дөрөҫ булмаған үлсәм билдәләмәһе: \"{}\"" - -#: ../fdroidserver/signindex.py -msgid "Nothing to do" -msgstr "Эшләр нәмә юҡ" - -#: ../fdroidserver/checkupdates.py -#, python-brace-format -msgid "Nothing to do for {appid}." -msgstr "{appid} өсөн эшләр нәмә юҡ." - -#: ../fdroidserver/init.py -msgid "Now set these in config.yml:" -msgstr "Хәҙер ошоларҙы config.yml-да күрһәтегеҙ:" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "OBB file has newer versionCode({integer}) than any APK:" -msgstr "OBB файлының versionCode-ы ({integer}) теләһә ҡайһы APK-ныҡынан яңыраҡ:" - -#: ../fdroidserver/update.py -msgid "OBB filename must start with \"main.\" or \"patch.\":" -msgstr "OBB файлының исеме \"main.\" йәки \"patch.\" менән башланырға тейеш:" - -#: ../fdroidserver/update.py -msgid "OBB's packagename does not match a supported APK:" -msgstr "OBB-ның пакет исеме яраҡлы APK-ға тап килмәй:" - -#: ../fdroidserver/deploy.py -msgid "Offline machine, skipping git mirror generation until `fdroid deploy`" -msgstr "Офлайн машина, `fdroid deploy` эшләтелгәнгә тиклем git көҙгөһөн булдырыу үткәреп ебәрелә" - -#: ../fdroidserver/deploy.py -msgid "One of the 'github_releases' config items is missing the 'packageNames' value. skipping ..." -msgstr "'github_releases' көйләүҙәренең береһендә 'packageNames' ҡиммәте юҡ. үткәреп ебәрелә ..." - -#: ../fdroidserver/deploy.py -msgid "One of the 'github_releases' config items is missing the 'projectUrl' value. skipping ..." -msgstr "'github_releases' көйләүҙәренең береһендә 'projectUrl' ҡиммәте юҡ. үткәреп ебәрелә ..." - -#: ../fdroidserver/deploy.py -msgid "One of the 'github_releases' config items is missing the 'token' value. skipping ..." -msgstr "'github_releases' көйләүҙәренең береһендә 'token' ҡиммәте юҡ. үткәреп ебәрелә ..." - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Only PNG and JPEG are supported for graphics, found: {path}" -msgstr "Графика өсөн тик PNG һәм JPEG ғына ярай, табылды: {path}" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode -#: ../fdroidserver/common.py -msgid "Only accepts a single key \"env\"" -msgstr "Тик бер генә \"env\" асҡысын ҡабул итә" - -#: ../fdroidserver/checkupdates.py -msgid "Only process apps with auto-updates" -msgstr "Тик автоматик яңыртылыусы ҡушымталарҙы ғына эшкәртеү" - -#: ../fdroidserver/lint.py -msgid "OpenCollective donation methods belong in the OpenCollective: field" -msgstr "OpenCollective иғәнә ысулдары OpenCollective: яланында булырға тейеш" - -#: ../fdroidserver/verify.py -msgid "Output JSON report to file named after APK." -msgstr "JSON отчетын APK исеме менән аталған файлға сығарыу." - -#: ../fdroidserver/scanner.py -msgid "Output JSON to stdout." -msgstr "JSON-ды стандарт сығарыу ағымына (stdout) сығарыу." - -#: ../fdroidserver/checkupdates.py ../fdroidserver/gpgsign.py -#: ../fdroidserver/publish.py ../fdroidserver/signindex.py -#: ../fdroidserver/update.py -msgid "Outputting JSON" -msgstr "JSON сығарыла" - -#: ../fdroidserver/import_subcommand.py -msgid "Overall license of the project." -msgstr "Проекттың дөйөм лицензияһы." - -#: ../fdroidserver/index.py -#, python-brace-format -msgid "Overriding blank versionName in {apkfilename} from metadata: {version}" -msgstr "{apkfilename} эсендәге буш versionName мета-мәғлүмәттән алынған {version} менән алмаштырыла" - -#: ../fdroidserver/import_subcommand.py -#, python-brace-format -msgid "Package \"{appid}\" already exists" -msgstr "\"{appid}\" пакеты инде бар" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Parsing manifest at '{path}'" -msgstr "'{path}' юлындағы манифест таныла" - -#: ../fdroidserver/common.py -msgid "Password required with username" -msgstr "Ҡулланыусы исеме менән бергә пароль кәрәк" - -#: ../fdroidserver/import_subcommand.py -msgid "Path to main Android project subdirectory, if not in root." -msgstr "Төп Android проектының аҫкаталогына юл, әгәр ул тамыр каталогында булмаһа." - -#: ../fdroidserver/init.py -msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" -msgstr "Android SDK-ға юл (ҡайһы саҡ ANDROID_HOME-да күрһәтелә)" - -#: ../fdroidserver/btlog.py -msgid "Path to the git repo to use as the log" -msgstr "Лог итеп ҡулланыу өсөн git репозиторийына юл" - -#: ../fdroidserver/init.py -msgid "Path to the keystore for the repo signing key" -msgstr "Репо имзалау асҡысы өсөн асҡыстар һаҡлағысына юл" - -#: ../fdroidserver/nightly.py -msgid "Print the secret variable to the terminal for easy copy/paste" -msgstr "Йәшерен үҙгәреүсәнде күсереп-ҡуйыу еңел булһын өсөн терминалға сығарыу" - -#: ../fdroidserver/install.py -#, python-brace-format -msgid "Privacy mode was enabled based on your locale ({country_code})." -msgstr "Һеҙҙең локаль ({country_code}) нигеҙендә хосусилыҡ режимы ҡабыҙылды." - -#: ../fdroidserver/scanner.py -#, python-format -msgid "Problem with ZIP file: %s, error %s" -msgstr "ZIP файлы менән проблема: %s, хата %s" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Problem with xml at '{path}'" -msgstr "'{path}' юлындағы xml менән проблема" - -#: ../fdroidserver/checkupdates.py -msgid "Process auto-updates" -msgstr "Автоматик яңыртыуҙарҙы эшкәртеү" - -#: ../fdroidserver/publish.py ../fdroidserver/update.py -#, python-brace-format -msgid "Processing {apkfilename}" -msgstr "{apkfilename} эшкәртелә" - -#: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py -#, python-brace-format -msgid "Processing {appid}" -msgstr "{appid} эшкәртелә" - -#: ../fdroidserver/update.py -msgid "Produce human-readable XML/JSON for index files" -msgstr "Индекс файлдары өсөн кеше уҡый алырлыҡ XML/JSON булдырыу" - -#: ../fdroidserver/import_subcommand.py -msgid "Project URL to import from." -msgstr "Импортлау өсөн проекттың URL-ы." - -#: ../fdroidserver/lint.py -msgid "Punctuation should be avoided" -msgstr "Тыныш билдәләренән ҡасырға кәрәк" - -#: ../fdroidserver/btlog.py -msgid "Push the log to this git remote repository" -msgstr "Логты ошо алыҫтағы git репозиторийына ебәреү" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Pushing binary transparency log to {url}" -msgstr "Бинар асыҡлыҡ логы {url} адресына ебәрелә" - -#: ../fdroidserver/deploy.py -msgid "Pushing to remote server failed!" -msgstr "Алыҫтағы серверға ебәреү уңышһыҙ булды!" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Pushing to {url}" -msgstr "{url} адресына ебәрелә" - -#: ../fdroidserver/__main__.py -msgid "Quickly start a new repository" -msgstr "Яңы репозиторийҙы тиҙ генә башлау" - -#: ../fdroidserver/__main__.py -msgid "Read all the metadata files and exit" -msgstr "Барлыҡ мета-мәғлүмәт файлдарын уҡыу һәм сығыу" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Reading '{config_file}'" -msgstr "'{config_file}' уҡыла" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" -msgstr "packageName/versionCode/versionName уҡылманы, APK дөрөҫ түгел: '{apkfilename}'" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Reading packageName/versionCode/versionName failed,APK invalid: '{apkfilename}'" -msgstr "packageName/versionCode/versionName уҡылманы, APK дөрөҫ түгел: '{apkfilename}'" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Reading {apkfilename} from cache" -msgstr "{apkfilename} кештан уҡыла" - -#: ../fdroidserver/build.py -msgid "Refresh and cache scanner rules and signatures from the network" -msgstr "Сканлаусы ҡағиҙәләрен һәм имзаларын селтәрҙән яңыртыу һәм кешлау" - -#: ../fdroidserver/publish.py -#, python-brace-format -msgid "Refusing to sign '{path}', file exists in both {dir1} and {dir2} folder." -msgstr "'{path}' тамғалауҙан баш тартам, файл {dir1} һәм {dir2} каталогтарында ла бар." - -#: ../fdroidserver/verify.py -msgid "Remove source tarball and any APKs if successfully verified." -msgstr "Уңышлы тикшерелһә, сығанаҡ tarball-ды һәм теләһә ниндәй APK-ларҙы юйыу." - -#: ../fdroidserver/common.py -msgid "Removing specified files" -msgstr "Күрһәтелгән файлдар юйыла" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Removing {path}\"" -msgstr "\"{path} юйыла" - -#: ../fdroidserver/update.py -msgid "Rename APK files that do not match package.name_123.apk" -msgstr "package.name_123.apk ҡалыбына тап килмәгән APK файлдарының исемен үҙгәртеү" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "Resigning {apkfilename} with provided debug.keystore" -msgstr "{apkfilename} бирелгән debug.keystore менән яңынан тамғалана" - -#: ../fdroidserver/update.py -msgid "Resize all the icons exceeding the max pixel size and exit" -msgstr "Максималь пиксель үлсәменән артҡан бөтә иконкаларҙың үлсәмен үҙгәртеү һәм сығыу" - -#: ../fdroidserver/common.py -msgid "Restrict output to warnings and errors" -msgstr "Сығарылышты иҫкәрмәләр һәм хаталар менән сикләү" - -#: ../fdroidserver/net.py -#, python-format -msgid "Retrying failed download: %s" -msgstr "Уңышһыҙ йөкмәү ҡабатлана: %s" - -#: ../fdroidserver/__main__.py -msgid "Rewrite all the metadata files" -msgstr "Барлыҡ мета-мәғлүмәт файлдарын үҙгәртеп яҙыу" - -#: ../fdroidserver/rewritemeta.py -#, python-brace-format -msgid "Rewriting '{appid}'" -msgstr "'{appid}' үҙгәртеп яҙыла" - -#: ../fdroidserver/checkupdates.py -msgid "Run on git repo that has uncommitted changes" -msgstr "Һаҡланмаған үҙгәрештәре булған git репозиторийында эшләтеү" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "Run over {cibase} to find -debug.apk. and skip repo_basedir {repo_basedir}" -msgstr "{cibase} буйлап -debug.apk. табыу өсөн эшләтеү. һәм repo_basedir {repo_basedir} үткәреп ебәреү" - -#: ../fdroidserver/lint.py -msgid "Run rewritemeta to fix formatting" -msgstr "Форматлауҙы төҙәтеү өсөн rewritemeta-ны эшләтегеҙ" - -#: ../fdroidserver/deploy.py -msgid "Running first pass with MD5 checking disabled" -msgstr "MD5 тикшереүе һүндерелгән килеш беренсе үтеү башҡарыла" - -#: ../fdroidserver/mirror.py -#, python-brace-format -msgid "Running wget in {path}" -msgstr "wget {path} каталогында эшләтелә" - -#: ../fdroidserver/index.py -#, python-brace-format -msgid "SHA-256 of {url} does not match entry!" -msgstr "{url} адресының SHA-256 суммаһы яҙмаға тап килмәй!" - -#: ../fdroidserver/build.py -msgid "Scan the resulting APK(s) for known non-free classes." -msgstr "Алынған APK(-лар)ҙы билдәле ирекле булмаған кластарға сканлау." - -#: ../fdroidserver/__main__.py -msgid "Scan the source code of a package" -msgstr "Пакеттың сығанаҡ кодын сканлау" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "Scanner found {count} problems in {apk}" -msgstr "Сканлаусы {apk} эсендә {count} проблема тапты" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "Scanner found {count} problems in {appid}:" -msgstr "Сканлаусы {appid} эсендә {count} проблема тапты:" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "Scanner found {count} problems in {appid}:{versionCode}:" -msgstr "Сканлаусы {appid}:{versionCode} эсендә {count} проблема тапты:" - -#: ../fdroidserver/build.py -msgid "Scanner found {} problem" -msgid_plural "Scanner found {} problems" -msgstr[0] "Сканлаусы {} проблема тапты" -msgstr[1] "Сканлаусы {} проблема тапты" - -#: ../fdroidserver/scanner.py -msgid "Scanning APK for extra signing blocks." -msgstr "APK-ны өҫтәмә имзалау блоктарына сканлау." - -#: ../fdroidserver/scanner.py -msgid "Scanning APK with dexdump for known non-free classes." -msgstr "APK-ны dexdump менән билдәле ирекле булмаған кластарға сканлау." - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Set NDK {release} ({version}) up" -msgstr "NDK {release} ({version}) көйләнде" - -#: ../fdroidserver/common.py -msgid "Set clock to that time using:" -msgstr "Сәғәтте ошо ваҡытҡа ҡуйыу өсөн ҡулланығыҙ:" - -#: ../fdroidserver/nightly.py -msgid "Set maximum releases in repo before older ones are archived" -msgstr "Иҫкерәктәре архивланыр алдынан репозиторийҙағы максималь релиздар һанын билдәләү" - -#: ../fdroidserver/build.py -#, python-brace-format -msgid "Set open file limit to {integer}" -msgstr "Асыҡ файлдар сикләүен {integer} итеп ҡуйыу" - -#: ../fdroidserver/__main__.py -msgid "Set up an app build for a nightly build repo" -msgstr "Төнгө йыйыу репозиторийы өсөн ҡушымта йыйыуҙы көйләү" - -#: ../fdroidserver/build.py -msgid "Setting open file limit failed: " -msgstr "Асыҡ файлдар сикләүен ҡуйып булманы: " - -#: ../fdroidserver/build.py -#, python-brace-format -msgid "Setting {0} sec timeout for this build" -msgstr "Был йыйыу өсөн {0} секундлыҡ тайм-аут ҡуйыла" - -#: ../fdroidserver/__main__.py -msgid "Sign and place packages in the repo" -msgstr "Пакеттарҙы тамғалау һәм репозиторийға урынлаштырыу" - -#: ../fdroidserver/__main__.py -msgid "Sign indexes created using update --nosign" -msgstr "update --nosign ярҙамында булдырылған индекстарҙы тамғалау" - -#: ../fdroidserver/build.py -msgid "Skip scanning the source code for binaries and other problems" -msgstr "Сығанаҡ кодты бинарҙарға һәм башҡа проблемаларға сканлауҙы үткәреп ебәреү" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Skipping '{apkfilename}' with invalid signature!" -msgstr "Дөрөҫ булмаған имзалы '{apkfilename}' үткәреп ебәрелә!" - -#: ../fdroidserver/deploy.py ../fdroidserver/index.py -#, python-format -msgid "Skipping GitLab Pages mirror because the repo is too large (>%.2fGB)!" -msgstr "GitLab Pages көҙгөһө үткәреп ебәрелә, сөнки репозиторий бигерәк ҙур (>%.2fGB)!" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Skipping index generation for {appid}" -msgstr "{appid} өсөн индекс булдырыу үткәреп ебәрелә" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Skipping {apkfilename} with invalid signature!" -msgstr "Дөрөҫ булмаған имзалы {apkfilename} үткәреп ебәрелә!" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "Skipping {appid}: disabled" -msgstr "{appid} үткәреп ебәрелә: һүндерелгән" - -#: ../fdroidserver/deploy.py -msgid "Specify a local folder to sync the repo to" -msgstr "Репоны синхронлаштырыу өсөн локаль каталогты күрһәтегеҙ" - -#: ../fdroidserver/deploy.py -msgid "Specify an identity file to provide to SSH for rsyncing" -msgstr "rsync өсөн SSH-ға биреләсәк идентификация файлын күрһәтегеҙ" - -#: ../fdroidserver/nightly.py -msgid "Specify which debug keystore file to use." -msgstr "Ҡайһы төҙәтеү асҡыстар һаҡлағысы файлын ҡулланырға икәнен күрһәтегеҙ." - -#: ../fdroidserver/common.py -msgid "Spew out even more information than normal" -msgstr "Ғәҙәттәгенән дә күберәк мәғлүмәт сығарыу" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "Stripping mystery signature from {apkfilename}" -msgstr "Серле имза {apkfilename} файлынан алына" - -#: ../fdroidserver/lint.py -#, python-format -msgid "Summary '%s' is just the app's name" -msgstr "'%s' ҡыҫҡаса аңлатмаһы — ул ҡушымтаның исеме генә" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Summary of length {length} is over the {limit} char limit" -msgstr "{length} оҙонлоғондағы ҡыҫҡаса аңлатма {limit} символ сикләүенән артып китә" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "System clock is older than date in {path}!" -msgstr "Система сәғәте {path} эсендәге датанан иҫкерәк!" - -#: ../fdroidserver/checkupdates.py -msgid "Tags update mode only works for git, hg, bzr and git-svn repositories currently" -msgstr "Тегтарҙы яңыртыу режимы әлеге ваҡытта тик git, hg, bzr һәм git-svn репозиторийҙары өсөн генә эшләй" - -#: ../fdroidserver/checkupdates.py -msgid "Tags update mode used in git-svn, but the repo was not set up with tags" -msgstr "Тегтарҙы яңыртыу режимы git-svn-да ҡулланылған, ләкин репо тегтар менән көйләнмәгән" - -#: ../fdroidserver/build.py -msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." -msgstr "Һынау режимы — сығарылышты тик tmp каталогына ғына урынлаштырыу һәм сығарылыш булһа ла, һәр ваҡыт йыйыу." - -#: ../fdroidserver/index.py -msgid "The \"qrcode\" Python package is not installed (e.g. apt-get install python3-qrcode)!" -msgstr "\"qrcode\" Python пакеты ҡуйылмаған (мәҫ. apt-get install python3-qrcode)!" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode -#: ../fdroidserver/update.py -#, python-brace-format -msgid "The OBB version code must come after \"{name}.\":" -msgstr "OBB версия коды \"{name}.\" һуңынан килергә тейеш:" - -#: ../fdroidserver/btlog.py -msgid "The base URL for the repo to log (default: https://f-droid.org)" -msgstr "Лог яһаласаҡ репоның төп URL-ы (стандарт: https://f-droid.org)" - -#: ../fdroidserver/mirror.py -msgid "The directory to write the mirror to" -msgstr "Көҙгөнө яҙыу өсөн каталог" - -#: ../fdroidserver/nightly.py -msgid "The file to be included in the repo (path or glob)" -msgstr "Репоға индереләсәк файл (юл йәки ҡалып)" - -#: ../fdroidserver/index.py -msgid "The repository's fingerprint does not match." -msgstr "Репозиторийҙың бармаҡ эҙе тап килмәй." - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "The root dir for local_copy_dir \"{path}\" does not exist!" -msgstr "local_copy_dir \"{path}\" өсөн тамыр каталогы юҡ!" - -#: ../fdroidserver/publish.py -msgid "There is a keyalias collision - publishing halted" -msgstr "keyalias ҡапма-ҡаршылығы бар — баҫтырыу туҡтатылды" - -#: ../fdroidserver/common.py -msgid "These are the apps that have been archived from the main repo." -msgstr "Былар — төп репозиторийҙан архиваланған ҡушымталар." - -#: ../fdroidserver/mirror.py -msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB." -msgstr "Был команда f-droid.org-тың көҙгөһөн яһау өсөн бер ҡасан да ҡулланылырға тейеш түгел! Тулы күсермә өсөн 600GB-тан ашыу урын кәрәк." - -#: ../fdroidserver/common.py -msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." -msgstr "Был — F-Droid менән ҡулланыу өсөн ҡушымталар репозиторийы. Был репозиторийҙағы ҡушымталар йә оригиналь эшләүселәр тарафынан йыйылған рәсми бинарҙар, йә f-droid.org администраторы тарафынан https://gitlab.com/fdroid адресындағы ҡоралдар ярҙамында сығанаҡ кодтан йыйылған бинарҙар." - -#: ../fdroidserver/import_subcommand.py -#, python-format -msgid "This repo already has local metadata: %s" -msgstr "Был репоның инде локаль мета-мәғлүмәттәре бар: %s" - -#: ../fdroidserver/init.py -#, python-format -msgid "" -"To complete the setup, add your APKs to \"%s\"\n" -"then run \"fdroid update -c; fdroid update\". You might also want to edit\n" -"\"config.yml\" to set the URL, repo name, and more. You should also set up\n" -"a signing key (a temporary one might have been automatically generated).\n" -"\n" -"For more info: https://f-droid.org/docs/Setup_an_F-Droid_App_Repo\n" -"and https://f-droid.org/docs/Signing_Process" -msgstr "" -"Көйләүҙе тамамлау өсөн, APK-ларығыҙҙы \"%s\" каталогына өҫтәгеҙ,\n" -"шунан \"fdroid update -c; fdroid update\" командаһын эшләтегеҙ. Шулай уҡ URL-ды, репо исемен\n" -"һәм башҡаларҙы көйләү өсөн \"config.yml\" файлына үҙгәреш индерергә теләрһегеҙ. \n" -"Шулай уҡ имзалау асҡысын көйләргә тейешһегеҙ (ваҡытлыса асҡыс автоматик рәүештә булдырылған булырға мөмкин).\n" -"\n" -"Күберәк мәғлүмәт өсөн: https://f-droid.org/docs/Setup_an_F-Droid_App_Repo\n" -"һәм https://f-droid.org/docs/Signing_Process" - -#: ../fdroidserver/deploy.py -msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.yml!" -msgstr "awsbucket-ты ҡулланыу өсөн config.yml-да awssecretkey һәм awsaccesskeyid та күрһәтелергә тейеш!" - -#: ../fdroidserver/deploy.py -msgid "To use rclone, rclone_config and awsbucket must be set in config.yml!" -msgstr "rclone-ды ҡулланыу өсөн config.yml-да rclone_config һәм awsbucket күрһәтелергә тейеш!" - -#: ../fdroidserver/lint.py -msgid "URL must start with https:// or http://" -msgstr "URL https:// йәки http:// менән башланырға тейеш" - -#: ../fdroidserver/lint.py -msgid "URL shorteners should not be used" -msgstr "URL ҡыҫҡартҡыстары ҡулланылырға тейеш түгел" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "URL {url} in Description: {error}" -msgstr "Тасуирламалағы {url} URL-ы: {error}" - -#: ../fdroidserver/lint.py -msgid "Unexpected license tag \"{}\"! Only use FSF or OSI approved tags from https://spdx.org/license-list" -msgstr "Көтөлмәгән \"{}\" лицензия тегы! Тик https://spdx.org/license-list адресынан FSF йәки OSI тарафынан раҫланған тегтарҙы ҡулланығыҙ" - -#: ../fdroidserver/lint.py -msgid "Unexpected license tag \"{}\"! Only use license tags configured in your config file" -msgstr "Көтөлмәгән \"{}\" лицензия тегы! Тик конфигурация файлында көйләнгән лицензия тегтарын ҡулланығыҙ" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Unknown entry {key} in {configname}" -msgstr "{configname} эсендә билдәһеҙ {key} яҙмаһы" - -#: ../fdroidserver/__main__.py -msgid "Unknown exception found!" -msgstr "Билдәһеҙ хата табылды!" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "Unknown file '{filename}' in build '{versionName}'" -msgstr "'{versionName}' йыйылмаһында билдәһеҙ '{filename}' файлы" - -#: ../fdroidserver/metadata.py -#, python-format -msgid "Unknown metadata format: %s" -msgstr "Билдәһеҙ мета-мәғлүмәт форматы: %s" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Unknown metadata format: {path} (use: *.yml)" -msgstr "Билдәһеҙ мета-мәғлүмәт форматы: {path} (ҡулланығыҙ: *.yml)" - -#: ../fdroidserver/common.py -msgid "Unknown version of aapt, might cause problems: " -msgstr "aapt-тың билдәһеҙ версияһы, проблемалар тыуҙырыуы мөмкин: " - -#: ../fdroidserver/lint.py -msgid "Unnecessary leading space" -msgstr "Кәрәкмәгән алғы буш урын" - -#: ../fdroidserver/lint.py -msgid "Unnecessary trailing space" -msgstr "Кәрәкмәгән артҡы буш урын" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Unrecognised app field '{fieldname}' in '{path}'" -msgstr "'{path}' эсендә танылмаған '{fieldname}' ҡушымта яланы" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Unrecognised build flag '{build_flag}' in '{path}'" -msgstr "'{path}' эсендә танылмаған '{build_flag}' йыйыу флагы" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Unsupported file type \"{extension}\" for repo graphic" -msgstr "Репо графикаһы өсөн яраҡһыҙ \"{extension}\" файл төрө" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "Unsupported graphics file found: {path}" -msgstr "Яраҡһыҙ графика файлы табылды: {path}" - -#: ../fdroidserver/lint.py -#, python-format -msgid "Unused extlib at %s" -msgstr "%s юлында ҡулланылмаған extlib" - -#: ../fdroidserver/lint.py -#, python-format -msgid "Unused file at %s" -msgstr "%s юлында ҡулланылмаған файл" - -#: ../fdroidserver/scanner.py -#, python-format -msgid "Unused scandelete path: %s" -msgstr "Ҡулланылмаған scandelete юлы: %s" - -#: ../fdroidserver/scanner.py -#, python-format -msgid "Unused scanignore path: %s" -msgstr "Ҡулланылмаған scanignore юлы: %s" - -#: ../fdroidserver/__main__.py -msgid "Update repo information for new packages" -msgstr "Яңы пакеттар өсөн репо мәғлүмәтен яңыртыу" - -#: ../fdroidserver/__main__.py -msgid "Update the binary transparency log for a URL" -msgstr "URL өсөн бинар асыҡлыҡ логын яңыртыу" - -#: ../fdroidserver/checkupdates.py -#, python-brace-format -msgid "UpdateCheckData has invalid URL: {url}" -msgstr "UpdateCheckData-ла дөрөҫ булмаған URL: {url}" - -#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "UpdateCheckData must match the version code as integer (\\d or [0-9]): {codeex}" -msgstr "UpdateCheckData версия кодына бөтөн һан булараҡ тап килергә тейеш (\\d йәки [0-9]): {codeex}" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "UpdateCheckData must use HTTPS URL: {url}" -msgstr "UpdateCheckData HTTPS URL-ын ҡулланырға тейеш: {url}" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "UpdateCheckData not a valid URL: {url}" -msgstr "UpdateCheckData — дөрөҫ URL түгел: {url}" - -#: ../fdroidserver/lint.py -msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." -msgstr "UpdateCheckMode ҡуйылған, ләкин checkupdates әле эшләтелмәгән кеүек." - -#. Translators: https://developer.android.com/build/configure-app-module#set-application-id -#: ../fdroidserver/lint.py -msgid "UpdateCheckName is set to the known application ID, it can be removed" -msgstr "UpdateCheckName билдәле ҡушымта идентификаторына ҡуйылған, уны алып ташларға мөмкин" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Uploading {apkfilename} to androidobservatory.org" -msgstr "{apkfilename} androidobservatory.org-ҡа йөкләнә" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Uploading {apkfilename} to virustotal" -msgstr "{apkfilename} virustotal-ға йөкләнә" - -#: ../fdroidserver/lint.py -msgid "Use /HEAD instead of /master or /main to point at a file in the default branch" -msgstr "Стандарт ботаҡтағы файлға күрһәтеү өсөн /master йәки /main урынына /HEAD ҡулланығыҙ" - -#: ../fdroidserver/update.py -msgid "Use `fdroid update -c` to create it." -msgstr "Уны булдырыу өсөн `fdroid update -c` ҡулланығыҙ." - -#: ../fdroidserver/build.py -msgid "Use build server" -msgstr "Йыйыу серверын ҡулланыу" - -#: ../fdroidserver/update.py -msgid "Use date from APK instead of current time for newly added APKs" -msgstr "Яңы өҫтәлгән APK-лар өсөн ағымдағы ваҡыт урынына APK-нан датаны ҡулланыу" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Using \"{path}\" for configuring s3cmd." -msgstr "s3cmd-ты көйләү өсөн \"{path}\" ҡулланыла." - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Using \"{path}\" for syncing with remote storage." -msgstr "Алыҫтағы һаҡлағыс менән синхронлаштырыу өсөн \"{path}\" ҡулланыла." - -#: ../fdroidserver/common.py -msgid "Using APK Signature v2" -msgstr "APK имзаһының v2 версияһы ҡулланыла" - -#: ../fdroidserver/common.py -msgid "Using APK Signature v3" -msgstr "APK имзаһының v3 версияһы ҡулланыла" - -#: ../fdroidserver/common.py -msgid "Using JAR Signature" -msgstr "JAR имзаһы ҡулланыла" - -#: ../fdroidserver/common.py -msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" -msgstr "Java-ның jarsigner-ы ҡулланыла, APK-ларҙы тикшереү өсөн тәҡдим ителмәй! apksigner ҡулланығыҙ" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "Using blank dictionary instead of contents of {path}!" -msgstr "{path} эстәлеге урынына буш һүҙлек ҡулланыла!" - -#: ../fdroidserver/init.py -#, python-brace-format -msgid "Using existing keystore \"{path}\"" -msgstr "Инде булған \"{path}\" асҡыстар һаҡлағысы ҡулланыла" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Using rclone to sync with: {url}" -msgstr "Синхронлаштырыу өсөн rclone ҡулланыла: {url}" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "Using s3cmd to sync with: {url}" -msgstr "Синхронлаштырыу өсөн s3cmd ҡулланыла: {url}" - -#: ../fdroidserver/__main__.py -msgid "Valid commands are:" -msgstr "Яраҡлы командалар:" - -#: ../fdroidserver/verify.py -msgid "Verify against locally cached copy rather than redownloading." -msgstr "Яңынан йөкмәү урынына локаль кешланған күсермәгә ҡаршы тикшереү." - -#: ../fdroidserver/__main__.py -msgid "Verify the integrity of downloaded packages" -msgstr "Йөкләнгән пакеттарҙың бөтөнлөгөн тикшереү" - -#: ../fdroidserver/index.py -msgid "Verifying index signature:" -msgstr "Индекс имзаһы тикшерелә:" - -#: ../fdroidserver/install.py -#, python-brace-format -msgid "Verifying package {path} with apksigner." -msgstr "{path} пакеты apksigner менән тикшерелә." - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." -msgstr "VirusTotal API асҡысы 32MB-тан ҙурыраҡ файлдарҙы йөкләй алмай, {path} файлын йөкләү өсөн {url} ҡулланығыҙ." - -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - -#: ../fdroidserver/__main__.py -msgid "Warn about possible metadata errors" -msgstr "Мөмкин булған мета-мәғлүмәт хаталары тураһында иҫкәртеү" - -#: ../fdroidserver/scanner.py -msgid "WebAssembly binary file" -msgstr "WebAssembly бинар файлы" - -#: ../fdroidserver/update.py -msgid "When configured for signed indexes, create only unsigned indexes at this stage" -msgstr "Тамғаланған индекстар өсөн көйләнгәндә, был этапта тик тамғаланмаған индекстарҙы ғына булдырыу" - -#: ../fdroidserver/lint.py -msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." -msgstr "Бөтә репозиторийҙы линтлағанда yamllint стандарт буйынса һүндерелгән. Был опция yamllint-ты мәжбүри рәүештә эшләтә." - -#: ../fdroidserver/publish.py -msgid "When signing or verifying fails, exit with an error code." -msgstr "Тамғалау йәки тикшереү уңышһыҙ булһа, хата коды менән сығыу." - -#: ../fdroidserver/install.py -msgid "Would you like to download and install F-Droid.apk via adb? (YES/no)" -msgstr "F-Droid.apk-ны adb аша йөкләп ҡуйырға теләйһегеҙме? (ЭЙЕ/юҡ)" - -#: ../fdroidserver/install.py -msgid "Would you like to download the app(s) from f-droid.org? (YES/no)" -msgstr "Ҡушымта(лар)ҙы f-droid.org-тан йөкләргә теләйһегеҙме? (ЭЙЕ/юҡ)" - -#: ../fdroidserver/init.py -msgid "X.509 'Distinguished Name' used when generating keys" -msgstr "Асҡыстарҙы булдырғанда ҡулланылған X.509 'Айырым исем' (Distinguished Name)" - -#: ../fdroidserver/common.py -msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" -msgstr "SDK-ға юлды күрһәтеү өсөн ANDROID_HOME ҡуллана алаһығыҙ, йәғни:" - -#: ../fdroidserver/scanner.py -msgid "ZIP file archive" -msgstr "ZIP файл архивы" - -#: ../fdroidserver/install.py -#, python-brace-format -msgid "adb reports {serial} is \"{status}\"!" -msgstr "adb хәбәр итә: {serial} — \"{status}\"!" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "adding IdentityFile to {path}" -msgstr "IdentityFile {path} юлына өҫтәлә" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "adding to {name}: {path}" -msgstr "{name}-ға өҫтәлә: {path}" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "ambiguous option: %(option)s could match %(matches)s" -msgstr "ике мәғәнәле опция: %(option)s %(matches)s-ҡа тап килеүе мөмкин" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "apksigner in build-tools;{version} passes APKs with invalid v3 signatures, ignoring." -msgstr "build-tools;{version} эсендәге apksigner дөрөҫ булмаған v3 имзалы APK-ларҙы үткәрә, иғтибарһыҙ ҡалдырыла." - -#: ../fdroidserver/common.py -msgid "apksigner not found! Cannot sign or verify modern APKs" -msgstr "apksigner табылманы! Заманса APK-ларҙы тамғалап йәки тикшереп булмай" - -#: ../fdroidserver/common.py -msgid "apksigner not found, it's required for signing!" -msgstr "apksigner табылманы, ул тамғалау өсөн кәрәк!" - -#. Translators: https://developer.android.com/build/configure-app-module#set-application-id -#: ../fdroidserver/checkupdates.py ../fdroidserver/lint.py -#: ../fdroidserver/rewritemeta.py -msgid "application ID of file to operate on" -msgstr "эшкәртеләсәк файлдың ҡушымта идентификаторы" - -#. Translators: https://developer.android.com/build/configure-app-module#set-application-id -#: ../fdroidserver/build.py ../fdroidserver/install.py -#: ../fdroidserver/publish.py ../fdroidserver/scanner.py -#: ../fdroidserver/verify.py -msgid "application ID with optional versionCode in the form APPID[:VERCODE]" -msgstr "ҡушымта идентификаторы, APPID[:VERCODE] рәүешендә versionCode өҫтәмә булыуы мөмкин" - -#: ../fdroidserver/common.py -msgid "archive_url needs to end with /archive" -msgstr "archive_url /archive менән тамамланырға тейеш" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "argument \"-\" with mode %r" -msgstr "%r режимлы \"-\" аргументы" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "argument %(argument_name)s: %(message)s" -msgstr "%(argument_name)s аргументы: %(message)s" - -#: ../fdroidserver/nightly.py -msgid "attempting bare SSH connection to test deploy key:" -msgstr "урынлаштырыу асҡысын һынау өсөн ябай SSH тоташыуы яһала:" - -#: ../fdroidserver/common.py -msgid "can not parse scrlib spec (not a string): '{}'" -msgstr "scrlib спецификацияһын танып булмай (юл түгел): '{}'" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "can't open '%(filename)s': %(error)s" -msgstr "'%(filename)s' асылманы: %(error)s" - -#: ../fdroidserver/scanner.py -msgid "can't open non-https url: '{};" -msgstr "https булмаған url-ды асып булмай: '{};" - -#: ../fdroidserver/build.py -#, python-brace-format -msgid "cannot find required srclibs: \"{path}\"" -msgstr "кәрәкле srclib-тар табылманы: \"{path}\"" - -#: /usr/lib/python3.11/argparse.py -msgid "cannot have multiple subparser arguments" -msgstr "бер нисә аҫпарсер аргументы була алмай" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "cannot merge actions - two groups are named %r" -msgstr "ғәмәлдәрҙе берләштереп булмай — ике төркөм %r тип аталған" - -#: ../fdroidserver/nightly.py -msgid "cannot publish update, did you set the deploy key?" -msgstr "яңыртыуҙы баҫтырып булмай, урынлаштырыу асҡысын күрһәттегеҙме?" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "cloning {url}" -msgstr "{url} клонлана" - -#: ../fdroidserver/__main__.py -msgid "commands from plugin modules:" -msgstr "плагин модулдәренән командалар:" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "conflicting option string: %s" -msgid_plural "conflicting option strings: %s" -msgstr[0] "ҡапма-ҡаршылыҡлы опция юлы: %s" -msgstr[1] "ҡапма-ҡаршылыҡлы опция юлдары: %s" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "conflicting subparser alias: %s" -msgstr "ҡапма-ҡаршылыҡлы аҫпарсер псевдонимы: %s" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "conflicting subparser: %s" -msgstr "ҡапма-ҡаршылыҡлы аҫпарсер: %s" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "could not parse '{path}'" -msgstr "'{path}' танылманы" - -#: ../fdroidserver/common.py -msgid "could not parse srclib spec (no name specified): '{}'" -msgstr "srclib спецификацияһын танып булманы (исем күрһәтелмәгән): '{}'" - -#: ../fdroidserver/common.py -msgid "could not parse srclib spec (no ref specified): '{}'" -msgstr "srclib спецификацияһын танып булманы (ref күрһәтелмәгән): '{}'" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "created {path}" -msgstr "{path} булдырылды" - -#: ../fdroidserver/checkupdates.py -#, python-brace-format -msgid "current version is newer: old vercode={old}, new vercode={new}" -msgstr "ағымдағы версия яңыраҡ: иҫке vercode={old}, яңы vercode={new}" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "deleting: repo/{apkfilename}" -msgstr "юйыла: repo/{apkfilename}" - -#: ../fdroidserver/scanner.py -msgid "dependency file without lock" -msgstr "йоҙаҡһыҙ бәйлелек файлы" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "deployed process log {path} to {dest}" -msgstr "эшкәртеү логы {path} {dest} адресына урынлаштырылды" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "dest= is required for options like %r" -msgstr "%r кеүек опциялар өсөн dest= кәрәк" - -#: ../fdroidserver/scanner.py -msgid "downloading '{}'" -msgstr "'{}' йөкләнә" - -#: ../fdroidserver/scanner.py -msgid "downloading scanner signatures from '{}' failed" -msgstr "сканлаусы имзаларын '{}' адресынан йөкләү уңышһыҙ булды" - -#: ../fdroidserver/scanner.py -msgid "executable binary, possibly code" -msgstr "башҡарылыусы бинар, код булыуы мөмкин" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "expected %s argument" -msgid_plural "expected %s arguments" -msgstr[0] "%s аргумент көтөлә" -msgstr[1] "%s аргумент көтөлә" - -#: /usr/lib/python3.11/argparse.py -msgid "expected at least one argument" -msgstr "кәмендә бер аргумент көтөлә" - -#: /usr/lib/python3.11/argparse.py -msgid "expected at most one argument" -msgstr "күп тигәндә бер аргумент көтөлә" - -#: /usr/lib/python3.11/argparse.py -msgid "expected one argument" -msgstr "бер аргумент көтөлә" - -#: ../fdroidserver/__main__.py -msgid "fdroid [] [-h|--help|--version|]" -msgstr "fdroid [<команда>] [-h|--help|--version|<аргументтар>]" - -#: ../fdroidserver/scanner.py -msgid "fetch the latest version of signatures from the web" -msgstr "имзаларҙың һуңғы версияһын вебтән алыу" - -#: ../fdroidserver/metadata.py -msgid "force metadata errors (default) to be warnings, or to be ignored." -msgstr "мета-мәғлүмәт хаталарын (стандарт) иҫкәрмәләргә әйләндерергә йәки иғтибарһыҙ ҡалдырырға мәжбүр итеү." - -#: ../fdroidserver/common.py -msgid "git svn clone failed" -msgstr "git svn clone уңышһыҙ булды" - -#: ../fdroidserver/scanner.py -msgid "gzip file archive" -msgstr "gzip файл архивы" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "ignored explicit argument %r" -msgstr "асыҡтан-асыҡ %r аргументы иғтибарһыҙ ҡалдырылды" - -#: ../fdroidserver/index.py -msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" -msgstr "index-v1 имзалы булырға тейеш, уны булдырыу өсөн `fdroid signindex` ҡулланығыҙ!" - -#: ../fdroidserver/index.py -msgid "index-v2 must have a signature, use `fdroid signindex` to create it!" -msgstr "index-v2 имзалы булырға тейеш, уны булдырыу өсөн `fdroid signindex` ҡулланығыҙ!" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "invalid %(type)s value: %(value)r" -msgstr "дөрөҫ булмаған %(type)s ҡиммәте: %(value)r" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "invalid choice: %(value)r (choose from %(choices)s)" -msgstr "дөрөҫ булмаған һайлау: %(value)r (%(choices)s араһынан һайлағыҙ)" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "invalid conflict_resolution value: %r" -msgstr "дөрөҫ булмаған conflict_resolution ҡиммәте: %r" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" -msgstr "дөрөҫ булмаған %(option)r опция юлы: %(prefix_chars)r символы менән башланырға тейеш" - -#: ../fdroidserver/common.py -msgid "ipfs_cid not found, skipping CIDv1 generation" -msgstr "ipfs_cid табылманы, CIDv1 булдырыу үткәреп ебәрелә" - -#: ../fdroidserver/checkupdates.py -#, python-brace-format -msgid "latest build recipe is newer: old vercode={old}, new vercode={new}" -msgstr "һуңғы йыйыу рецебы яңыраҡ: иҫке vercode={old}, яңы vercode={new}" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" -msgstr "local_copy_dir \"fdroid\" менән тамамланмай, бәлки һеҙ быны күҙ уңында тоттоғоҙ: \"{path}\"" - -#: ../fdroidserver/deploy.py -msgid "local_copy_dir must be an absolute path!" -msgstr "local_copy_dir абсолют юл булырға тейеш!" - -#: ../fdroidserver/deploy.py -msgid "local_copy_dir must be directory, not a file!" -msgstr "local_copy_dir каталог булырға тейеш, файл түгел!" - -#: ../fdroidserver/index.py -#, python-format -msgid "mirror '%s' does not end with 'fdroid'!" -msgstr "'%s' көҙгөһө 'fdroid' менән тамамланмай!" - -#: ../fdroidserver/index.py -#, python-brace-format -msgid "mirrors set twice, in config.yml and {path}!" -msgstr "көҙгөләр ике тапҡыр күрһәтелгән, config.yml-да һәм {path}-та!" - -#: /usr/lib/python3.11/argparse.py -msgid "mutually exclusive arguments must be optional" -msgstr "бер-береһен инҡар итеүсе аргументтар өҫтәмә булырға тейеш" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "next {name} cache update due in {time}" -msgstr "киләһе {name} кешын яңыртыу {time} аша" - -#: ../fdroidserver/mirror.py -#, python-brace-format -msgid "no \"icon\" in {appid}" -msgstr "{appid}-та \"icon\" юҡ" - -#: ../fdroidserver/signatures.py -msgid "no APK supplied" -msgstr "APK бирелмәгән" - -#: ../fdroidserver/checkupdates.py -msgid "no version information found" -msgstr "версия тураһында мәғлүмәт табылманы" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "not allowed with argument %s" -msgstr "%s аргументы менән рөхсәт ителмәй" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "one of the arguments %s is required" -msgstr "%s аргументтарының береһе кәрәк" - -#: ../fdroidserver/common.py ../fdroidserver/index.py -msgid "only accepts strings, lists, and tuples" -msgstr "тик юлдарҙы, исемлектәрҙе һәм кортеждарҙы ғына ҡабул итә" - -#: /usr/lib/python3.11/argparse.py -msgid "options" -msgstr "опциялар" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "overwriting existing {path}" -msgstr "инде булған {path} өҫтөнән яҙыла" - -#: /usr/lib/python3.11/argparse.py -msgid "positional arguments" -msgstr "позицион аргументтар" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "process log deploy {path} to {dest} failed!" -msgstr "эшкәртеү логын {path} {dest} адресына урынлаштырыу уңышһыҙ булды!" - -#: ../fdroidserver/build.py -msgid "reference binary missing signature" -msgstr "өлгө бинарҙың имзаһы юҡ" - -#: ../fdroidserver/signatures.py -#, python-brace-format -msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" -msgstr "хәүефһеҙ булмаған HTTP тоташыуы аша йөкләүҙән баш тартыу (HTTPS ҡулланығыҙ йәки --no-https-check күрһәтегеҙ): {apkfilename}" - -#: ../fdroidserver/index.py -#, python-format -msgid "repo_icon \"repo/icons/%s\" does not exist, generating placeholder." -msgstr "\"repo/icons/%s\" repo_icon-ы юҡ, ҡалып булдырыла." - -#: ../fdroidserver/common.py -msgid "repo_url needs to end with /repo" -msgstr "repo_url /repo менән тамамланырға тейеш" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "rsync is missing or broken: {error}" -msgstr "rsync юҡ йәки боҙолған: {error}" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "s3cmd sync indexes {path} to {url} and delete" -msgstr "s3cmd индекстарҙы {path}-тан {url}-ға синхронлаштыра һәм юя" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "s3cmd syncs indexes from {path} to {url} and deletes removed" -msgstr "s3cmd индекстарҙы {path}-тан {url}-ға синхронлаштыра һәм юйылғандарҙы юя" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "scanner cache is malformed! You can clear it with: '{clear}'" -msgstr "сканлаусы кешы боҙолған! Уны былай таҙартырға мөмкин: '{clear}'" - -#: ../fdroidserver/deploy.py -msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:" -msgstr "serverwebroot: юл \"fdroid\" менән тамамланмай, бәлки һеҙ быларҙың береһен күҙ уңында тоттоғоҙ:" - -#: ../fdroidserver/scanner.py -msgid "shared library" -msgstr "уртаҡ китапхана" - -#: /usr/lib/python3.11/argparse.py -msgid "show this help message and exit" -msgstr "был ярҙам хәбәрен күрһәтеү һәм сығыу" - -#: ../fdroidserver/signatures.py -msgid "signed APK, either a file-path or HTTPS URL." -msgstr "тамғаланған APK, файл юлы йәки HTTPS URL-ы." - -#: ../fdroidserver/common.py -msgid "skip deploying full build logs: log content is empty" -msgstr "тулы йыйыу логтарын урынлаштырыуҙы үткәреп ебәреү: лог эстәлеге буш" - -#: ../fdroidserver/common.py -msgid "skip deploying full build logs: not enabled in config" -msgstr "тулы йыйыу логтарын урынлаштырыуҙы үткәреп ебәреү: конфигурацияла ҡабыҙылмаған" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "skipping source tarball: {path}" -msgstr "сығанаҡ tarball үткәреп ебәрелә: {path}" - -#: ../fdroidserver/lint.py -msgid "srclibs missing name and/or @" -msgstr "srclibs-та исем һәм/йәки @ юҡ" - -#: ../fdroidserver/scanner.py -msgid "static library" -msgstr "статик китапхана" - -#: ../fdroidserver/build.py -#, python-brace-format -msgid "supplied reference binary has allowed signer {signer}" -msgstr "бирелгән өлгө бинарҙың рөхсәт ителгән имзалаусыһы {signer} бар" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "the following arguments are required: %s" -msgstr "түбәндәге аргументтар мотлаҡ: %s" - -#: ../fdroidserver/install.py -msgid "true" -msgstr "дөрөҫ" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "unexpected option string: %s" -msgstr "көтөлмәгән опция юлы: %s" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "unknown parser %(parser_name)r (choices: %(choices)s)" -msgstr "билдәһеҙ парсер %(parser_name)r (һайлау варианттары: %(choices)s)" - -#: /usr/lib/python3.11/argparse.py -#, python-format -msgid "unrecognized arguments: %s" -msgstr "танылмаған аргументтар: %s" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "unsafe permissions on '{config_file}' (should be 0600)!" -msgstr "'{config_file}' өсөн хәүефле рөхсәттәр (0600 булырға тейеш)!" - -#: ../fdroidserver/__main__.py /usr/lib/python3.11/argparse.py -msgid "usage: " -msgstr "ҡулланыу: " - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "using Apache libcloud to sync with {url}" -msgstr "{url} менән синхронлаштырыу өсөн Apache libcloud ҡулланыла" - -#: ../fdroidserver/deploy.py -msgid "virustotal.com is rate limiting, waiting to retry..." -msgstr "virustotal.com сикләү ҡуйҙы, ҡабатлап ҡарау өсөн көтөлә..." - -#: ../fdroidserver/install.py -msgid "yes" -msgstr "эйе" - -#: ../fdroidserver/publish.py -#, python-brace-format -msgid "{0} app, {1} key aliases" -msgid_plural "{0} apps, {1} key aliases" -msgstr[0] "{0} ҡушымта, {1} асҡыс псевдонимы" -msgstr[1] "{0} ҡушымта, {1} асҡыс псевдонимы" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{apkfilename} ({appid}) has no metadata!" -msgstr "{apkfilename} ({appid}) өсөн мета-мәғлүмәт юҡ!" - -#. Translators: https://developer.android.com/build/configure-app-module#set-application-id -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " -msgstr "{apkfilename}-ның AndroidManifest.xml-ында дөрөҫ булмаған дата: " - -#. Translators: https://developer.android.com/build/configure-app-module#set-application-id -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{appid} does not have a name! Using application ID instead." -msgstr "{appid} өсөн исем юҡ! Уның урынына ҡушымта идентификаторы ҡулланыла." - -#. Translators: https://developer.android.com/build/configure-app-module#set-application-id -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{appid} from {path} is not a valid Android application ID!" -msgstr "{path} эсендәге {appid} — дөрөҫ Android ҡушымта идентификаторы түгел!" - -#: ../fdroidserver/metadata.py ../fdroidserver/update.py -#, python-brace-format -msgid "{appid} from {path} is not a valid Java Package Name!" -msgstr "{path} эсендәге {appid} — дөрөҫ Java пакет исеме түгел!" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{appid} has both APKs and files: {files}" -msgstr "{appid}-та APK-лар ҙа, файлдар ҙа бар: {files}" - -#: ../fdroidserver/mirror.py -#, python-brace-format -msgid "{appid} is missing {name}" -msgstr "{appid}-та {name} юҡ" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "{appid}: Unknown extlib {path} in build '{versionName}'" -msgstr "{appid}: '{versionName}' йыйылмаһында билдәһеҙ extlib {path}" - -#: ../fdroidserver/scanner.py -#, python-brace-format -msgid "{appid}: no builds specified, running on current source state" -msgstr "{appid}: йыйылмалар күрһәтелмәгән, ағымдағы сығанаҡ хәлендә эшләтелә" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "{appid}: {field} must be a '{type}', but it is a '{fieldtype}!'" -msgstr "{appid}: {field} '{type}' булырға тейеш, ләкин ул '{fieldtype}'!" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "{appid}: {field} must be a '{type}', but it is a '{fieldtype}'!" -msgstr "{appid}: {field} '{type}' булырға тейеш, ләкин ул '{fieldtype}'!" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "{build_flag} must be an integer, found: {value}" -msgstr "{build_flag} бөтөн һан булырға тейеш, табылды: {value}" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "{build_flag} must be list or string, found: {value}" -msgstr "{build_flag} исемлек йәки юл булырға тейеш, табылды: {value}" - -#: ../fdroidserver/metadata.py -#, python-brace-format -msgid "{file} is blank or corrupt!" -msgstr "{file} буш йәки боҙолған!" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{name} \"{section}/icons/{path}\" does not exist! Check \"config.yml\"." -msgstr "{name} \"{section}/icons/{path}\" юҡ! \"config.yml\"-ды тикшерегеҙ." - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{path1} is a duplicate of {path2}, remove one!" -msgstr "{path1} — {path2}-нең күсермәһе, береһен юйығыҙ!" - -#: ../fdroidserver/import_subcommand.py -#, python-brace-format -msgid "{path} already exists, ignoring import results!" -msgstr "{path} инде бар, импорт һөҙөмтәләре иғтибарһыҙ ҡалдырыла!" - -#: ../fdroidserver/nightly.py -#, python-brace-format -msgid "{path} does not exist! Create it by running:" -msgstr "{path} юҡ! Уны булдырыу өсөн эшләтегеҙ:" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" -msgstr "{path} файлының имзаһы дөрөҫ түгел \"{pattern}\", Janus эксплойты булыуы мөмкин!" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "{path} has been flagged by virustotal {count} times:" -msgstr "{path} virustotal тарафынан {count} тапҡыр билдәләнгән:" - -#: ../fdroidserver/install.py -#, python-brace-format -msgid "{path} has the wrong fingerprint ({fingerprint})!" -msgstr "{path} файлының бармаҡ эҙе дөрөҫ түгел ({fingerprint})!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "{path} is not \"key: value\" dict, but a {datatype}!" -msgstr "{path} — \"key: value\" һүҙлеге түгел, ә {datatype}!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "{path} is not a standard config file!" -msgstr "{path} — стандарт конфигурация файлы түгел!" - -#: ../fdroidserver/index.py -#, python-brace-format -msgid "{path} is not list, but a {datatype}!" -msgstr "{path} — исемлек түгел, ә {datatype}!" - -#: ../fdroidserver/common.py -#, python-brace-format -msgid "{path} is not {expected_type}, but a {datatype}!" -msgstr "{path} — {expected_type} түгел, ә {datatype}!" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{path} is zero size!" -msgstr "{path} үлсәме нуль!" - -#: ../fdroidserver/deploy.py -#, python-brace-format -msgid "{path} more than 200MB, manually upload: {url}" -msgstr "{path} 200MB-тан ҙурыраҡ, ҡулдан йөкләү: {url}" - -#: ../fdroidserver/lint.py -#, python-brace-format -msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!" -msgstr "{path}: \"{code}\" — дөрөҫ ISO_3166-1 alpha-2 ил коды түгел!" - -#: ../fdroidserver/update.py -#, python-brace-format -msgid "{path}: {error}" -msgstr "{path}: {error}" - -#: ../fdroidserver/mirror.py -#, python-brace-format -msgid "{url} does not end with \"fdroid\", check the URL path!" -msgstr "{url} \"fdroid\" менән тамамланмай, URL юлын тикшерегеҙ!" - -#: ../fdroidserver/import_subcommand.py -#, python-brace-format -msgid "{url} does not start with \"http\"!" -msgstr "{url} \"http\" менән башланмай!" - -#: ../fdroidserver/build.py -msgid "{} build failed" -msgid_plural "{} builds failed" -msgstr[0] "{} йыйыу уңышһыҙ булды" -msgstr[1] "{} йыйыу уңышһыҙ булды" - -#: ../fdroidserver/build.py -msgid "{} build succeeded" -msgid_plural "{} builds succeeded" -msgstr[0] "{} йыйыу уңышлы булды" -msgstr[1] "{} йыйыу уңышлы булды" diff --git a/locale/be/LC_MESSAGES/fdroidserver.po b/locale/be/LC_MESSAGES/fdroidserver.po index 9526f6ea..bab918a4 100644 --- a/locale/be/LC_MESSAGES/fdroidserver.po +++ b/locale/be/LC_MESSAGES/fdroidserver.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.2.1-143-g1a5ee449\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-01-21 00:08+0000\n" "Last-Translator: flac \n" "Language-Team: Belarusian \n" @@ -358,11 +358,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1488,11 +1483,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Перайменуйце файлы APK, якія не адпавядаюць package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2006,10 +1996,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Папярэджваць аб магчымых памылках метададзеных" diff --git a/locale/bg/LC_MESSAGES/fdroidserver.po b/locale/bg/LC_MESSAGES/fdroidserver.po index bbcbc06a..bc6bff77 100644 --- a/locale/bg/LC_MESSAGES/fdroidserver.po +++ b/locale/bg/LC_MESSAGES/fdroidserver.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.1b0\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-07-19 10:21+0000\n" "Last-Translator: 109247019824 \n" "Language-Team: Bulgarian \n" @@ -354,11 +354,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1484,11 +1479,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2002,10 +1992,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/bn/LC_MESSAGES/fdroidserver.po b/locale/bn/LC_MESSAGES/fdroidserver.po index 44e14abf..fa057130 100644 --- a/locale/bn/LC_MESSAGES/fdroidserver.po +++ b/locale/bn/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2021-02-12 09:48+0000\n" "Last-Translator: Oymate \n" "Language-Team: Bengali \n" @@ -353,11 +353,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1483,11 +1478,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2001,10 +1991,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/bo/LC_MESSAGES/fdroidserver.po b/locale/bo/LC_MESSAGES/fdroidserver.po index cbd1c63c..3f892a0e 100644 --- a/locale/bo/LC_MESSAGES/fdroidserver.po +++ b/locale/bo/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-04-10 13:33+0000\n" "Last-Translator: Hans-Christoph Steiner \n" "Language-Team: Tibetan \n" @@ -358,11 +358,6 @@ msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "ཚགས་རྒྱབ་པའི་སྐབས་སུ་ནོར་སྐྱོན་ {} ཤོར་བས་བཟོ་སྐྲུན་བྱེད་ཐུབ་མེད།" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "ཀློག་མི་ཐུབ།{path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1504,11 +1499,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "package.name_123.apk དང་མི་འདྲ་བའི་APK ཡིག་ཆ་དེ་ཚོར་མིང་སྐྱར་ཏུ་བཏགས།" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2025,10 +2015,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་སྐྱོན་སྲིད་པ་རྣམས་པ་ཉེན་བརྡ་གཏོང་།" diff --git a/locale/ca/LC_MESSAGES/fdroidserver.po b/locale/ca/LC_MESSAGES/fdroidserver.po index 48cea1fc..4a12ad45 100644 --- a/locale/ca/LC_MESSAGES/fdroidserver.po +++ b/locale/ca/LC_MESSAGES/fdroidserver.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.1-273-g54e84d87\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-05-16 16:36+0000\n" "Last-Translator: Ecron \n" "Language-Team: Catalan \n" @@ -363,11 +363,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "No es pot construir a causa d'un error {} en escanejar" msgstr[1] "No es pot construir a causa d'errors {} en escanejar" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "No s'ha pogut llegir {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1495,11 +1490,6 @@ msgstr "S'està suprimint {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Canvia el nom dels fitxers APK que no coincideixin amb package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2020,10 +2010,6 @@ msgstr "S'està verificant el paquet {path} l'apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "La clau de l'API VirusTotal no pot pujar fitxers més grans de 32 MB, utilitzeu {url} per pujar {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Avisa de possibles errors a les metadades" diff --git a/locale/cs/LC_MESSAGES/fdroidserver.po b/locale/cs/LC_MESSAGES/fdroidserver.po index 351d8885..4fc63dea 100644 --- a/locale/cs/LC_MESSAGES/fdroidserver.po +++ b/locale/cs/LC_MESSAGES/fdroidserver.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-03-26 10:00+0000\n" "Last-Translator: Fjuro \n" "Language-Team: Czech \n" @@ -366,11 +366,6 @@ msgstr[0] "Nelze sestavit kvůli {} chybě při skenování" msgstr[1] "Nelze sestavit kvůli {} chybám při skenování" msgstr[2] "Nelze sestavit kvůli {} chybám při skenování" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Chyba při čtení {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1498,11 +1493,6 @@ msgstr "Odebírání {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Přejmenovat soubory APK, které se neshodují s package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2024,10 +2014,6 @@ msgstr "Ověřování balíčku {path} pomocí apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "Klíč API VirusTotal neumožňuje nahrávání souborů větších než 32 MB, k nahrání {path} použijte {url}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Varovat ohledně možných chyb metadat" diff --git a/locale/cy/LC_MESSAGES/fdroidserver.po b/locale/cy/LC_MESSAGES/fdroidserver.po index 8451062c..37648a7b 100644 --- a/locale/cy/LC_MESSAGES/fdroidserver.po +++ b/locale/cy/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2021-01-16 21:23+0000\n" "Last-Translator: Aled Powell \n" "Language-Team: Welsh \n" @@ -357,11 +357,6 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1487,11 +1482,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Ailenwi ffeiliau APK na sy'n dilyn y ffurf package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2016,10 +2006,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Rhybuddio am wallau metaddata posib" diff --git a/locale/de/LC_MESSAGES/fdroidserver.po b/locale/de/LC_MESSAGES/fdroidserver.po index 5dde0e8f..201eac5c 100644 --- a/locale/de/LC_MESSAGES/fdroidserver.po +++ b/locale/de/LC_MESSAGES/fdroidserver.po @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-04-29 10:16+0000\n" "Last-Translator: VfBFan \n" "Language-Team: German \n" @@ -378,11 +378,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Kann nicht erstellt werden, da {} Fehler beim Prüfen aufgetreten ist" msgstr[1] "Kann nicht erstellt werden, da {} Fehler beim Prüfen aufgetreten sind" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Lesen von {path} fehlgeschlagen: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1510,11 +1505,6 @@ msgstr "Entferne {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "APK-Dateien umbenennen, die nicht dem Muster „package.name_123.apk“ entsprechen" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2035,10 +2025,6 @@ msgstr "Überprüfen des Pakets {path} mit apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "VirusTotal-API-Schlüssel kann nicht Dateien größer 32MB hochladen, verwende {url} um {path} hochzuladen." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Vor möglichen Metadaten-Fehlern warnen" diff --git a/locale/el/LC_MESSAGES/fdroidserver.po b/locale/el/LC_MESSAGES/fdroidserver.po index 5bd92c4a..13380be3 100644 --- a/locale/el/LC_MESSAGES/fdroidserver.po +++ b/locale/el/LC_MESSAGES/fdroidserver.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.0a0-62-gc63c4b3d\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-05-10 13:24+0000\n" "Last-Translator: ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ \n" "Language-Team: Greek \n" @@ -360,11 +360,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1490,11 +1485,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Μετονομασία αρχείων APK που δεν αντιστοιχούν με «όνομα.πακέτου_123.apk»" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2008,10 +1998,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Προειδοποίηση για πιθανά σφάλματα μετα-δεδομένων" diff --git a/locale/es/LC_MESSAGES/fdroidserver.po b/locale/es/LC_MESSAGES/fdroidserver.po index 64a43a1c..07ac3ea5 100644 --- a/locale/es/LC_MESSAGES/fdroidserver.po +++ b/locale/es/LC_MESSAGES/fdroidserver.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-06-24 11:02+0000\n" "Last-Translator: Swyter \n" "Language-Team: Spanish \n" @@ -371,11 +371,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "No se puede construir debido al error {} mientras se comprobaba" msgstr[1] "No se puede construir debido a los errores {} mientras se comprobaba" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Fallo al leer {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1503,11 +1498,6 @@ msgstr "Eliminando {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Cambiar el nombre de archivos APK que no coinciden con el formato package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2028,10 +2018,6 @@ msgstr "Verificando el paquete {path} con apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "La clave de API de VirusTotal no puede subir archivos mayores de 32MB. Use {url} para subir {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Alertar sobre posibles errores de metadatos" diff --git a/locale/es_AR/LC_MESSAGES/fdroidserver.po b/locale/es_AR/LC_MESSAGES/fdroidserver.po index a15ddd81..f6e544a1 100644 --- a/locale/es_AR/LC_MESSAGES/fdroidserver.po +++ b/locale/es_AR/LC_MESSAGES/fdroidserver.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2021-04-10 21:26+0000\n" "Last-Translator: Germe the fur star \n" "Language-Team: Spanish (Argentina) \n" @@ -361,11 +361,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "No se pudo empaquetar debido al {} error mientras se escaneaba" msgstr[1] "No se pudo empaquetar debido a los {} errores mientras se escaneaba" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "No se puede reescribir \"{path}\"" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1500,11 +1495,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Renombrar archivos APK que no corresponden a package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2018,10 +2008,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Advertir sobre posibles errores en los metadatos" diff --git a/locale/es_MX/LC_MESSAGES/fdroidserver.po b/locale/es_MX/LC_MESSAGES/fdroidserver.po index aaddd007..344bf130 100644 --- a/locale/es_MX/LC_MESSAGES/fdroidserver.po +++ b/locale/es_MX/LC_MESSAGES/fdroidserver.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2020-04-29 12:49+0000\n" "Last-Translator: Hans-Christoph Steiner \n" "Language-Team: Spanish (Mexico) \n" @@ -354,11 +354,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1488,11 +1483,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2006,10 +1996,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/eu/LC_MESSAGES/fdroidserver.po b/locale/eu/LC_MESSAGES/fdroidserver.po index 4cb555c2..8d6c69b4 100644 --- a/locale/eu/LC_MESSAGES/fdroidserver.po +++ b/locale/eu/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.0a0-62-gc63c4b3d\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -352,11 +352,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1482,11 +1477,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2000,10 +1990,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/fa/LC_MESSAGES/fdroidserver.po b/locale/fa/LC_MESSAGES/fdroidserver.po index ff34a457..d8aad95a 100644 --- a/locale/fa/LC_MESSAGES/fdroidserver.po +++ b/locale/fa/LC_MESSAGES/fdroidserver.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-11-26 15:16+0000\n" "Last-Translator: Danial Behzadi \n" "Language-Team: Persian \n" @@ -356,11 +356,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "{path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1486,11 +1481,6 @@ msgstr "برداشتن {path}" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2004,10 +1994,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/fdroidserver.pot b/locale/fdroidserver.pot index 486f290d..0f9e9b28 100644 --- a/locale/fdroidserver.pot +++ b/locale/fdroidserver.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: fdroidserver 2.4.2-3-gdcb804f7\n" +"Project-Id-Version: fdroidserver 2.4.0\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -354,11 +354,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1484,11 +1479,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2002,10 +1992,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/fi/LC_MESSAGES/fdroidserver.po b/locale/fi/LC_MESSAGES/fdroidserver.po index 31803e83..065b07d8 100644 --- a/locale/fi/LC_MESSAGES/fdroidserver.po +++ b/locale/fi/LC_MESSAGES/fdroidserver.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.0a0-62-gc63c4b3d\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-01-31 14:19+0000\n" "Last-Translator: Ricky Tigg \n" "Language-Team: Finnish \n" @@ -355,11 +355,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1485,11 +1480,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2003,10 +1993,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/fr/LC_MESSAGES/fdroidserver.po b/locale/fr/LC_MESSAGES/fdroidserver.po index d65abe95..61cd9215 100644 --- a/locale/fr/LC_MESSAGES/fdroidserver.po +++ b/locale/fr/LC_MESSAGES/fdroidserver.po @@ -47,7 +47,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-04-11 17:20+0000\n" "Last-Translator: Laurent FAVOLE \n" "Language-Team: French \n" @@ -399,11 +399,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Build impossible à cause de l'erreur lors de l'analyse" msgstr[1] "Build impossible à cause des {} erreurs lors de l'analyse" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Erreur de lecture {path} : {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1531,11 +1526,6 @@ msgstr "Suppression de {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Renomme les fichiers APK dont le nom ne ressemble pas à nom.paquet_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2058,10 +2048,6 @@ msgstr "Vérification du paquet {path} avec apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "L’API de VirusTotal ne permet pas d’envoyer des fichiers plus grands que 32Mo, utilisez {url} pour envoyer {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Avertir de possibles erreurs dans les métadonnées" diff --git a/locale/fy/LC_MESSAGES/fdroidserver.po b/locale/fy/LC_MESSAGES/fdroidserver.po index 1f751485..677eea67 100644 --- a/locale/fy/LC_MESSAGES/fdroidserver.po +++ b/locale/fy/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.0\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2021-07-01 15:29+0000\n" "Last-Translator: Vancha March \n" "Language-Team: Frisian \n" @@ -353,11 +353,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1483,11 +1478,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2001,10 +1991,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/ga/LC_MESSAGES/fdroidserver.po b/locale/ga/LC_MESSAGES/fdroidserver.po index b9916f78..a0c708cc 100644 --- a/locale/ga/LC_MESSAGES/fdroidserver.po +++ b/locale/ga/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.3a1-162-gfbb3cc59\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-03-27 19:35+0000\n" "Last-Translator: Aindriú Mac Giolla Eoin \n" "Language-Team: Irish \n" @@ -360,11 +360,6 @@ msgstr[2] "Ní féidir tógáil de bharr {} earráidí agus an scanadh" msgstr[3] "Ní féidir tógáil de bharr {} earráidí agus an scanadh" msgstr[4] "Ní féidir tógáil de bharr {} earráidí agus an scanadh" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Theip ar léamh {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1492,11 +1487,6 @@ msgstr "Ag baint {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Athainmnigh comhaid APK nach bhfuil comhoiriúnach package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2020,10 +2010,6 @@ msgstr "Pacáiste {path} á fhíorú le apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "Ní féidir le heochair API VirusTotal comhaid níos mó ná 32MB a uaslódáil, úsáid {url} chun {path} a uaslódáil." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Tabhair rabhadh faoi earráidí meiteashonraí a d'fhéadfadh a bheith ann" diff --git a/locale/hi/LC_MESSAGES/fdroidserver.po b/locale/hi/LC_MESSAGES/fdroidserver.po index 58779021..11e53f7d 100644 --- a/locale/hi/LC_MESSAGES/fdroidserver.po +++ b/locale/hi/LC_MESSAGES/fdroidserver.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2023-02-22 11:24+0000\n" "Last-Translator: Saurmandal \n" "Language-Team: Hindi \n" @@ -354,11 +354,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1484,11 +1479,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2002,10 +1992,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/hu/LC_MESSAGES/fdroidserver.po b/locale/hu/LC_MESSAGES/fdroidserver.po index 6e232ead..a9d51973 100644 --- a/locale/hu/LC_MESSAGES/fdroidserver.po +++ b/locale/hu/LC_MESSAGES/fdroidserver.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-04-10 13:33+0000\n" "Last-Translator: Hans-Christoph Steiner \n" "Language-Team: Hungarian \n" @@ -359,11 +359,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Nem lehet összeállítani, mert {} hiba történt az átvizsgáláskor" msgstr[1] "Nem lehet összeállítani, mert {} hiba történt az átvizsgáláskor" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "A(z) {path} olvasása sikertelen: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1499,11 +1494,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Azon APK fájlok átnevezése, melyek nem illeszkednek a csomag.név_123.apk mintára" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2021,10 +2011,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Figyelmeztetés a lehetséges metaadat-hibákról" diff --git a/locale/it/LC_MESSAGES/fdroidserver.po b/locale/it/LC_MESSAGES/fdroidserver.po index 5117e2d4..a20dfa82 100644 --- a/locale/it/LC_MESSAGES/fdroidserver.po +++ b/locale/it/LC_MESSAGES/fdroidserver.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-03-20 16:21+0000\n" "Last-Translator: Champ0999 \n" "Language-Team: Italian \n" @@ -375,11 +375,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Impossibile costruire a causa di un errore con {} durante la scansione" msgstr[1] "Impossibile costruire a causa di errori con {} durante la scansione" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Impossibile leggere {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1509,11 +1504,6 @@ msgstr "Rimozione di {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Rinomina i file APK che non corrispondono a package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2038,10 +2028,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "La chiave API di VirusTotal non può caricare file più grandi di 32MB, usa {url} per caricare {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Avvisa riguardo possibili errori nei metadati" diff --git a/locale/ja/LC_MESSAGES/fdroidserver.po b/locale/ja/LC_MESSAGES/fdroidserver.po index 50dd832d..be68cfc4 100644 --- a/locale/ja/LC_MESSAGES/fdroidserver.po +++ b/locale/ja/LC_MESSAGES/fdroidserver.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.8-224-g4b0ade7\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-04-30 04:07+0000\n" "Last-Translator: Liner Seven \n" "Language-Team: Japanese \n" @@ -359,11 +359,6 @@ msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "スキャン時に{}個のエラーが発生したためビルドできません" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "{path}を読み込めませんでした:{error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1491,11 +1486,6 @@ msgstr "{path} を削除" msgid "Rename APK files that do not match package.name_123.apk" msgstr "package.name_123.apkに合致しないAPKファイルの名前を変更" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2015,10 +2005,6 @@ msgstr "apksignerを使用してパッケージ{path}を検証しています。 msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "VirusTotalのAPI鍵は32メガバイトより大きいファイルをアップロードできません。{url}から{path}をアップロードしてください。" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "潜在的なメタデータのエラーに関して警告" diff --git a/locale/kab/LC_MESSAGES/fdroidserver.po b/locale/kab/LC_MESSAGES/fdroidserver.po index 121b58f0..9cc66432 100644 --- a/locale/kab/LC_MESSAGES/fdroidserver.po +++ b/locale/kab/LC_MESSAGES/fdroidserver.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2021-01-15 13:25+0000\n" "Last-Translator: R_SACI \n" "Language-Team: Kabyle \n" @@ -355,11 +355,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1487,11 +1482,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2005,10 +1995,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/ko/LC_MESSAGES/fdroidserver.po b/locale/ko/LC_MESSAGES/fdroidserver.po index cb546be1..66244698 100644 --- a/locale/ko/LC_MESSAGES/fdroidserver.po +++ b/locale/ko/LC_MESSAGES/fdroidserver.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.8-135-g16dd6d28\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-09-06 14:57+0000\n" "Last-Translator: Cxnfl1ct \n" "Language-Team: Korean \n" @@ -358,11 +358,6 @@ msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1490,11 +1485,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "package.name_123.apk와 일치하지 않는 APK 파일의 이름을 바꿉니다" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2007,10 +1997,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "가능한 메타데이터 오류에 대해 경고합니다" diff --git a/locale/ml/LC_MESSAGES/fdroidserver.po b/locale/ml/LC_MESSAGES/fdroidserver.po index 1a4cc764..39b7a730 100644 --- a/locale/ml/LC_MESSAGES/fdroidserver.po +++ b/locale/ml/LC_MESSAGES/fdroidserver.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2023-06-23 14:52+0000\n" "Last-Translator: abe1242 \n" "Language-Team: Malayalam \n" @@ -358,11 +358,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1488,11 +1483,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2009,10 +1999,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/nb_NO/LC_MESSAGES/fdroidserver.po b/locale/nb_NO/LC_MESSAGES/fdroidserver.po index 8ba73029..26cf9e7f 100644 --- a/locale/nb_NO/LC_MESSAGES/fdroidserver.po +++ b/locale/nb_NO/LC_MESSAGES/fdroidserver.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.8-74-ga380b9f\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2022-09-06 14:30+0000\n" "Last-Translator: Hans-Christoph Steiner \n" "Language-Team: Norwegian Bokmål \n" @@ -366,11 +366,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Kan ikke bygge som følge av {} feil under skanning" msgstr[1] "Kan ikke bygge som følge av {} feiler under skanning" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Klarte ikke å lese {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, fuzzy, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1542,11 +1537,6 @@ msgstr "Fjerner {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Gi nytt navn til APK-filer som ikke samsvarer med package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2080,10 +2070,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "VirusTotal API-nøkkel kan ikke laste opp filer større enn 32 MB, bruk {url} for å laste opp {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Advar om mulige metadata-feil" diff --git a/locale/nl/LC_MESSAGES/fdroidserver.po b/locale/nl/LC_MESSAGES/fdroidserver.po index f5dbfba0..aa9106fb 100644 --- a/locale/nl/LC_MESSAGES/fdroidserver.po +++ b/locale/nl/LC_MESSAGES/fdroidserver.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.1-680-ge1d3de71\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-01-03 09:07+0000\n" "Last-Translator: Issa1553 \n" "Language-Team: Dutch \n" @@ -361,11 +361,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1491,11 +1486,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Hernoem APK-bestanden die niet overeenkomen met pakket.naam_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2009,10 +1999,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Waarschuwen voor mogelijke metadata fouten" diff --git a/locale/nn/LC_MESSAGES/fdroidserver.po b/locale/nn/LC_MESSAGES/fdroidserver.po index 5db8fd94..180c114d 100644 --- a/locale/nn/LC_MESSAGES/fdroidserver.po +++ b/locale/nn/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.3.0-3-g4ba7b5c9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-11-26 10:54+0000\n" "Last-Translator: Bård Sigurd Møller \n" "Language-Team: Norwegian Nynorsk \n" @@ -353,11 +353,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1483,11 +1478,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2001,10 +1991,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/pa/LC_MESSAGES/fdroidserver.po b/locale/pa/LC_MESSAGES/fdroidserver.po index 8c64a1c2..b08867aa 100644 --- a/locale/pa/LC_MESSAGES/fdroidserver.po +++ b/locale/pa/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.3.3\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -352,11 +352,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1482,11 +1477,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2000,10 +1990,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/pick-complete-translations.py b/locale/pick-complete-translations.py index be11426c..8c4d377b 100755 --- a/locale/pick-complete-translations.py +++ b/locale/pick-complete-translations.py @@ -2,13 +2,13 @@ # # add completed translations from weblate to MANIFEST.in +import git import json import os import re +import requests import subprocess -import git -import requests projectbasedir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) localedir = os.path.join(projectbasedir, 'locale') diff --git a/locale/pl/LC_MESSAGES/fdroidserver.po b/locale/pl/LC_MESSAGES/fdroidserver.po index 03bbc39f..7b417234 100644 --- a/locale/pl/LC_MESSAGES/fdroidserver.po +++ b/locale/pl/LC_MESSAGES/fdroidserver.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-06-24 12:05+0000\n" "Last-Translator: WaldiS \n" "Language-Team: Polish \n" @@ -363,11 +363,6 @@ msgstr[0] "Nie można zbudować z powodu błędu {} podczas skanowania" msgstr[1] "Nie można zbudować z powodu błędów {} podczas skanowania" msgstr[2] "Nie można zbudować z powodu błędów {} podczas skanowania" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Błąd odczytu {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1495,11 +1490,6 @@ msgstr "Usuwanie „{path}”" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Zmień nazwy plików APK, które nie pasują do pliku package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2021,10 +2011,6 @@ msgstr "Weryfikacja pakietu {path} za pomocą apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "Klucz VirusTotal API nie może przesyłać plików większych niż 32 MB, użyj {url}, aby przesłać {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Ostrzegaj o możliwych błędach metadanych" diff --git a/locale/pt/LC_MESSAGES/fdroidserver.po b/locale/pt/LC_MESSAGES/fdroidserver.po index 84ee4ed9..780bebdf 100644 --- a/locale/pt/LC_MESSAGES/fdroidserver.po +++ b/locale/pt/LC_MESSAGES/fdroidserver.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.1-680-ge1d3de71\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-04-06 16:45+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese \n" @@ -361,11 +361,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Não é possível construir devido a erro {} durante a digitalização" msgstr[1] "Não é possível construir devido a erros {} durante a digitalização" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Falha de leitura {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1493,11 +1488,6 @@ msgstr "A remover {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Renomear todos os ficheiros APKs que não correspondem com package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2018,10 +2008,6 @@ msgstr "A verificar o pacote {path} com apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "A chave VirusTotal API não pode enviar ficheiros maiores que 32MB, use {url} para enviar {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Avisar sobre possíveis erros de metadados" diff --git a/locale/pt_BR/LC_MESSAGES/fdroidserver.po b/locale/pt_BR/LC_MESSAGES/fdroidserver.po index ea2ad833..53b8a080 100644 --- a/locale/pt_BR/LC_MESSAGES/fdroidserver.po +++ b/locale/pt_BR/LC_MESSAGES/fdroidserver.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-03-26 10:00+0000\n" "Last-Translator: Igor Rückert \n" "Language-Team: Portuguese (Brazil) \n" @@ -371,11 +371,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Não é possível criar devido a {} erro durante a digitalização" msgstr[1] "Não é possível criar devido a {} erros durante a digitalização" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Falha ao ler {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1503,11 +1498,6 @@ msgstr "Removendo {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Renomeia arquivos APK que não correspondem a pacote.nome_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2028,10 +2018,6 @@ msgstr "Verificando o pacote {path} com apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "A chave API do VirusTotal não pode carregar arquivos maiores que 32MB, utilize {url} para enviar para {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Avisa sobre possíveis erros de metadados" diff --git a/locale/pt_PT/LC_MESSAGES/fdroidserver.po b/locale/pt_PT/LC_MESSAGES/fdroidserver.po index e9f15dfa..1fac5cd5 100644 --- a/locale/pt_PT/LC_MESSAGES/fdroidserver.po +++ b/locale/pt_PT/LC_MESSAGES/fdroidserver.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-05-30 07:19+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese (Portugal) \n" @@ -363,11 +363,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Não é possível construir devido a erro {} durante a digitalização" msgstr[1] "Não é possível construir devido a erros {} durante a digitalização" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Falha de leitura {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1495,11 +1490,6 @@ msgstr "A remover {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Renomear todos os ficheiros APKs que não correspondem com package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2020,10 +2010,6 @@ msgstr "A verificar o pacote {path} com apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "A chave VirusTotal API não pode enviar ficheiros maiores que 32MB, use {url} para enviar {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Avisar sobre possíveis erros de metadados" diff --git a/locale/ro/LC_MESSAGES/fdroidserver.po b/locale/ro/LC_MESSAGES/fdroidserver.po index 0599ee8c..4293395d 100644 --- a/locale/ro/LC_MESSAGES/fdroidserver.po +++ b/locale/ro/LC_MESSAGES/fdroidserver.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-12-02 17:00+0000\n" "Last-Translator: Licaon Kter \n" "Language-Team: Romanian \n" @@ -362,11 +362,6 @@ msgstr[0] "Nu se poate construi din cauza unei erori {} în timpul scanării" msgstr[1] "Nu se poate construi din cauza erorilor {} în timpul scanării" msgstr[2] "Nu se poate construi din cauza erorilor {} în timpul scanării" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "A eșuat citirea {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1494,11 +1489,6 @@ msgstr "Eliminarea lui {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Redenumiți fișierele APK care nu se potrivesc cu package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2021,10 +2011,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "VirusTotal API key nu poate încărca fișiere mai mari de 32MB, utilizați {url} pentru a încărca {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Avertizează cu privire la posibile erori de metadate" diff --git a/locale/ru/LC_MESSAGES/fdroidserver.po b/locale/ru/LC_MESSAGES/fdroidserver.po index bd4aa6f5..e8222af3 100644 --- a/locale/ru/LC_MESSAGES/fdroidserver.po +++ b/locale/ru/LC_MESSAGES/fdroidserver.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-06-24 10:15+0000\n" "Last-Translator: Artyom Rybakov \n" "Language-Team: Russian \n" @@ -374,11 +374,6 @@ msgstr[0] "Запустить сборку невозможно из-за {} о msgstr[1] "Запустить сборку невозможно из-за {} ошибок во время сканирования данных" msgstr[2] "Запустить сборку невозможно из-за {} ошибок во время сканирования данных" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Не удалось распознать {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1506,11 +1501,6 @@ msgstr "Удаление {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Переименовать все APK файлы, не соответствующие шаблону \"название.пакета_123.apk\"" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2032,10 +2022,6 @@ msgstr "Проверка пакета {path} с помощью apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "Через API VirusTotal нельзя загрузить файлы больше 32MB, загрузите {path} на {url} самостоятельно." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Предупреждать о возможных ошибках в метаданных" diff --git a/locale/sk/LC_MESSAGES/fdroidserver.po b/locale/sk/LC_MESSAGES/fdroidserver.po index f3f21800..a4dd859f 100644 --- a/locale/sk/LC_MESSAGES/fdroidserver.po +++ b/locale/sk/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -353,11 +353,6 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1483,11 +1478,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2002,10 +1992,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/sq/LC_MESSAGES/fdroidserver.po b/locale/sq/LC_MESSAGES/fdroidserver.po index efa0401b..709bf334 100644 --- a/locale/sq/LC_MESSAGES/fdroidserver.po +++ b/locale/sq/LC_MESSAGES/fdroidserver.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-03-26 21:33+0000\n" "Last-Translator: Besnik Bleta \n" "Language-Team: Albanian \n" @@ -358,11 +358,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "S’montohet dot, për shkak të {} gabimi teksa skanohej" msgstr[1] "S’montohet dot, për shkak të {} gabimeve teksa skanohej" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "S’u arrit të lexohej {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1490,11 +1485,6 @@ msgstr "Po hiqet {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Riemërtoni kartelat APK që nuk përputhen me package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2016,10 +2006,6 @@ msgstr "Po verifikohet paketë {path} me apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "Kyçi API VirusTotal s’mund të ngarkojë kartela më të mëdha se 2MB, përdorni {url} që të ngarkoni {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Sinjalizo rreth gabimesh të mundshëm tejtëdhënash" diff --git a/locale/sr/LC_MESSAGES/fdroidserver.po b/locale/sr/LC_MESSAGES/fdroidserver.po index 5413ac1d..b07f0c4e 100644 --- a/locale/sr/LC_MESSAGES/fdroidserver.po +++ b/locale/sr/LC_MESSAGES/fdroidserver.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.1b0\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-12-30 22:00+0000\n" "Last-Translator: Reno Tx \n" "Language-Team: Serbian \n" @@ -361,11 +361,6 @@ msgstr[0] "Не може се изградити због {} грешке при msgstr[1] "Не може се изградити због {} грешке приликом скенирања" msgstr[2] "Не може се изградити због {} грешака приликом скенирања" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Није успело читање {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1493,11 +1488,6 @@ msgstr "Уклањање {path}" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Преименујте APK фајлове који не одговарају package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2019,10 +2009,6 @@ msgstr "Провера пакета {path} са apksigner." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "VirusTotal API кључ не може отпремити датотеке веће од 32MB, користи {url} за отпремање {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Упозорење о могућим грешкама у метаподацима" diff --git a/locale/sv/LC_MESSAGES/fdroidserver.po b/locale/sv/LC_MESSAGES/fdroidserver.po index a0928312..ce93975f 100644 --- a/locale/sv/LC_MESSAGES/fdroidserver.po +++ b/locale/sv/LC_MESSAGES/fdroidserver.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-03-17 21:44+0000\n" "Last-Translator: Kristoffer Grundström \n" "Language-Team: Swedish \n" @@ -362,11 +362,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "{path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1492,11 +1487,6 @@ msgstr "Tar bort {path}''" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Byt namn på APK-filer som inte matchar paket.namn_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2010,10 +2000,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Visa varningar vid möjliga metadatafel" diff --git a/locale/sw/LC_MESSAGES/fdroidserver.po b/locale/sw/LC_MESSAGES/fdroidserver.po index 3ddf8eb8..21e2b3a3 100644 --- a/locale/sw/LC_MESSAGES/fdroidserver.po +++ b/locale/sw/LC_MESSAGES/fdroidserver.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.3a1\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-09-08 11:09+0000\n" "Last-Translator: abelbiwott-dev \n" "Language-Team: Swahili \n" @@ -359,11 +359,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Haiwezi kujenga kutokana na kosa la {} wakati wa uchanganuzi" msgstr[1] "Haiwezi kujenga kutokana na makosa ya {} wakati wa uchanganuzi" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Imeshindwa kusoma {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1491,11 +1486,6 @@ msgstr "Kuondoa {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Badilisha jina la faili za APK ambazo hazilingani na package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2017,10 +2007,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "Ufunguo wa API ya VirusTotal haiwezi kupakia faili zaidi ya 32MB, tumia {url} kupakia {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Onya kuhusu hitilafu ya metadata yanayoweza kutokea" diff --git a/locale/ta/LC_MESSAGES/fdroidserver.po b/locale/ta/LC_MESSAGES/fdroidserver.po index 0661e420..00d2540d 100644 --- a/locale/ta/LC_MESSAGES/fdroidserver.po +++ b/locale/ta/LC_MESSAGES/fdroidserver.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 2.1-273-g54e84d87\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-01-20 14:04+0000\n" "Last-Translator: Hans-Christoph Steiner \n" "Language-Team: Tamil \n" @@ -360,11 +360,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "ச்கேன் செய்யும் போது {} பிழை காரணமாக உருவாக்க முடியாது" msgstr[1] "ச்கேன் செய்யும் போது {} பிழைகள் காரணமாக உருவாக்க முடியாது" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "தோல்வியுற்ற வாசிப்பு {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1492,11 +1487,6 @@ msgstr "{path} \"ஐ நீக்குதல்" msgid "Rename APK files that do not match package.name_123.apk" msgstr "தொகுப்புடன் பொருந்தாத APK கோப்புகளை மறுபெயரிடுங்கள். NAME_123.APK" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2017,10 +2007,6 @@ msgstr "Apksigner உடன் தொகுப்பு {path} ஐ சரிப msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "வைரச்டோட்டல் பநிஇ விசையை 32MB ஐ விட பெரிய கோப்புகளை பதிவேற்ற முடியாது, {path} பதிவேற்ற {url} ஐப் பயன்படுத்தவும்." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "சாத்தியமான மேனிலை தரவு பிழைகள் குறித்து எச்சரிக்கவும்" diff --git a/locale/tr/LC_MESSAGES/fdroidserver.po b/locale/tr/LC_MESSAGES/fdroidserver.po index b3bbe3d5..4c051537 100644 --- a/locale/tr/LC_MESSAGES/fdroidserver.po +++ b/locale/tr/LC_MESSAGES/fdroidserver.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-05-26 22:01+0000\n" "Last-Translator: Bora Atıcı \n" "Language-Team: Turkish \n" @@ -363,11 +363,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Tarama sırasında {} hata nedeniyle inşa edilemiyor" msgstr[1] "Tarama sırasında {} hata nedeniyle inşa edilemiyor" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "{path} okunamadı: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1495,11 +1490,6 @@ msgstr "\"{path}\" kaldırılıyor" msgid "Rename APK files that do not match package.name_123.apk" msgstr "paket.adı_123.apk örüntüsüyle eşleşmeyen tüm APK dosyalarını yeniden adlandır" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2020,10 +2010,6 @@ msgstr "{path} paketi apksigner ile doğrulanıyor." msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "VirusTotal API anahtarı 32MB'den büyük dosyaları yükleyemiyor, {path} yüklemek için {url} kullanın." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Olası üst veri hataları hakkında uyar" diff --git a/locale/tzm/LC_MESSAGES/fdroidserver.po b/locale/tzm/LC_MESSAGES/fdroidserver.po index fcfc7527..705a018c 100644 --- a/locale/tzm/LC_MESSAGES/fdroidserver.po +++ b/locale/tzm/LC_MESSAGES/fdroidserver.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.1-681-gc19e8952\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2020-10-29 08:32+0000\n" "Last-Translator: Hakim Oubouali \n" "Language-Team: Central Atlas Tamazight \n" @@ -353,11 +353,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1483,11 +1478,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2001,10 +1991,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/ug/LC_MESSAGES/fdroidserver.po b/locale/ug/LC_MESSAGES/fdroidserver.po index 82346c03..e4565e46 100644 --- a/locale/ug/LC_MESSAGES/fdroidserver.po +++ b/locale/ug/LC_MESSAGES/fdroidserver.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2018-06-08 03:44+0000\n" "Last-Translator: ۋولقان \n" "Language-Team: Uyghur \n" @@ -354,11 +354,6 @@ msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1485,11 +1480,6 @@ msgstr "" msgid "Rename APK files that do not match package.name_123.apk" msgstr "" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2003,10 +1993,6 @@ msgstr "" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "" diff --git a/locale/uk/LC_MESSAGES/fdroidserver.po b/locale/uk/LC_MESSAGES/fdroidserver.po index 822f3358..a8503aeb 100644 --- a/locale/uk/LC_MESSAGES/fdroidserver.po +++ b/locale/uk/LC_MESSAGES/fdroidserver.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-03-27 19:35+0000\n" "Last-Translator: Ihor Hordiichuk \n" "Language-Team: Ukrainian \n" @@ -370,11 +370,6 @@ msgstr[0] "Неможливо створити через {} помилку пі msgstr[1] "Неможливо створити через {} помилки під час сканування" msgstr[2] "Неможливо створити через {} помилок під час сканування" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "Не вдалося розпізнати {path}: {error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1502,11 +1497,6 @@ msgstr "Вилучення {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "Перейменування файлів APK, які не відповідають package.name_123.apk" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2028,10 +2018,6 @@ msgstr "Перевірка пакета {path} за допомогою apksigner msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "Ключ API VirusTotal не може завантажити файли, розмір яких понад 32 МБ, використовуйте {url} для завантаження {path}." -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "Попереджати про можливі помилки метаданих" diff --git a/locale/zh_Hans/LC_MESSAGES/fdroidserver.po b/locale/zh_Hans/LC_MESSAGES/fdroidserver.po index 6bb2b142..952e4838 100644 --- a/locale/zh_Hans/LC_MESSAGES/fdroidserver.po +++ b/locale/zh_Hans/LC_MESSAGES/fdroidserver.po @@ -39,7 +39,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2025-03-26 10:00+0000\n" "Last-Translator: 大王叫我来巡山 \n" "Language-Team: Chinese (Simplified Han script) \n" @@ -390,11 +390,6 @@ msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "因扫描时的{}错误而无法构建" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "读取 {path} 失败:{error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1522,11 +1517,6 @@ msgstr "删除 {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "重命名文件名不符合 package.name_123.apk 的 APK 文件" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2046,10 +2036,6 @@ msgstr "使用 apksigner 验证包 {path}。" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "VirusTotal 的 API 密钥无法用于上传大于 32MB 的文件,请使用 {url} 上传 {path}。" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "警告元数据中可能存在的错误" diff --git a/locale/zh_Hant/LC_MESSAGES/fdroidserver.po b/locale/zh_Hant/LC_MESSAGES/fdroidserver.po index e2358e7e..4516afc7 100644 --- a/locale/zh_Hant/LC_MESSAGES/fdroidserver.po +++ b/locale/zh_Hant/LC_MESSAGES/fdroidserver.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2025-06-25 09:52+0200\n" +"POT-Creation-Date: 2025-03-25 11:36+0100\n" "PO-Revision-Date: 2024-11-26 15:16+0000\n" "Last-Translator: Peter Dave Hello \n" "Language-Team: Chinese (Traditional Han script) \n" @@ -362,11 +362,6 @@ msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "掃描時由於 {} 出錯,無法進行編譯" -#: ../fdroidserver/common.py -#, fuzzy, python-brace-format -msgid "Cannot read {path}: {error}" -msgstr "讀取 {path} 失敗:錯誤訊息{error}" - #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Cannot rewrite \"{path}\"" @@ -1514,11 +1509,6 @@ msgstr "正在移除 {path}\"" msgid "Rename APK files that do not match package.name_123.apk" msgstr "為不符合 package.name_123.apk 格式的 APK 檔案更名" -#: ../fdroidserver/common.py -#, python-brace-format -msgid "RepoType {type} is deprecated, please switch to git." -msgstr "" - #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" @@ -2055,10 +2045,6 @@ msgstr "正在使用 apksigner 驗證套件 {path}。" msgid "VirusTotal API key cannot upload files larger than 32MB, use {url} to upload {path}." msgstr "VirusTotal API key 無法上傳大於 32MB 的檔案, 選擇使用 {url} 來上傳檔案 {path} 。" -#: ../fdroidserver/nightly.py -msgid "WARNING: only public git repos are supported!" -msgstr "" - #: ../fdroidserver/__main__.py msgid "Warn about possible metadata errors" msgstr "關於中介資料可能錯誤的警告" diff --git a/pyproject.toml b/pyproject.toml index c0ae09c9..a1f8a99b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ force-exclude = '''( | examples/fdroid_exportkeystore\.py | examples/fdroid_fetchsrclibs\.py | examples/fdroid_nitrokeyimport\.py + | fdroidserver/__init__\.py | fdroidserver/__main__\.py | fdroidserver/apksigcopier\.py | fdroidserver/looseversion\.py diff --git a/tests/config/antiFeatures.yml b/tests/config/antiFeatures.yml index cb4dc676..06d794a1 100644 --- a/tests/config/antiFeatures.yml +++ b/tests/config/antiFeatures.yml @@ -39,3 +39,7 @@ Tracking: description: This app tracks and reports your activity icon: ic_antifeature_tracking.xml name: Tracking +UpstreamNonFree: + description: The upstream source code is not entirely Free + icon: ic_antifeature_upstreamnonfree.xml + name: Upstream Non-Free diff --git a/tests/config/de/antiFeatures.yml b/tests/config/de/antiFeatures.yml index 65111db1..3053e41a 100644 --- a/tests/config/de/antiFeatures.yml +++ b/tests/config/de/antiFeatures.yml @@ -38,3 +38,7 @@ Tracking: description: Diese App verfolgt und versendet Ihre Aktivitäten icon: ic_antifeature_tracking.xml name: Tracking +UpstreamNonFree: + description: Der Originalcode ist nicht völlig quelloffen + icon: ic_antifeature_upstreamnonfree.xml + name: Originalcode nicht-quelloffen diff --git a/tests/config/fa/antiFeatures.yml b/tests/config/fa/antiFeatures.yml index aa8290ef..554dcee9 100644 --- a/tests/config/fa/antiFeatures.yml +++ b/tests/config/fa/antiFeatures.yml @@ -37,3 +37,7 @@ Tracking: description: این کاره، فعّالیتتان را ردیابی و گزارش می‌کند icon: ic_antifeature_tracking.xml name: ردیابی +UpstreamNonFree: + description: کد مبدأ بالادستی کاملاً آزاد نیست + icon: ic_antifeature_upstreamnonfree.xml + name: بالادست ناآزاد diff --git a/tests/config/ro/antiFeatures.yml b/tests/config/ro/antiFeatures.yml index 9610b448..97d61172 100644 --- a/tests/config/ro/antiFeatures.yml +++ b/tests/config/ro/antiFeatures.yml @@ -38,3 +38,7 @@ Tracking: description: Aplicația îți înregistrează și raportează activitatea undeva icon: ic_antifeature_tracking.xml name: Urmărire +UpstreamNonFree: + description: Codul sursa originar nu este în totalitatea lui software liber + icon: ic_antifeature_upstreamnonfree.xml + name: Surse ne-libere diff --git a/tests/config/zh-rCN/antiFeatures.yml b/tests/config/zh-rCN/antiFeatures.yml index 2c9f0819..a1b287b9 100644 --- a/tests/config/zh-rCN/antiFeatures.yml +++ b/tests/config/zh-rCN/antiFeatures.yml @@ -37,3 +37,7 @@ Tracking: description: 此应用会记录并报告你的活动 icon: ic_antifeature_tracking.xml name: 跟踪用户 +UpstreamNonFree: + description: 上游源代码不是完全自由的 + icon: ic_antifeature_upstreamnonfree.xml + name: 上游代码非自由 diff --git a/tests/dump_internal_metadata_format.py b/tests/dump_internal_metadata_format.py index ffc72059..f9763ebc 100755 --- a/tests/dump_internal_metadata_format.py +++ b/tests/dump_internal_metadata_format.py @@ -25,6 +25,7 @@ import sys from argparse import ArgumentParser import git + import yaml localmodule = os.path.realpath( diff --git a/tests/extra/manual-vmtools-test.py b/tests/extra/manual-vmtools-test.py index 2f01c9ff..0f0c745b 100755 --- a/tests/extra/manual-vmtools-test.py +++ b/tests/extra/manual-vmtools-test.py @@ -4,12 +4,12 @@ # that run in the buildserver setup. It is not really maintained, but # is still here as a kind of reference. -import inspect -import logging import os import sys -import tempfile +import logging import textwrap +import tempfile +import inspect from argparse import ArgumentParser localmodule = os.path.realpath( diff --git a/tests/get-country-region-data.py b/tests/get-country-region-data.py index 240d70b2..f0f52e4b 100755 --- a/tests/get-country-region-data.py +++ b/tests/get-country-region-data.py @@ -5,11 +5,10 @@ import collections import os import re -import sys -import tempfile - import requests import requests_cache +import sys +import tempfile def main(): diff --git a/tests/gradle-release-checksums.py b/tests/gradle-release-checksums.py index 53ceb1a5..0c190ebf 100755 --- a/tests/gradle-release-checksums.py +++ b/tests/gradle-release-checksums.py @@ -1,14 +1,16 @@ #!/usr/bin/env python3 +import git +import gitlab import os import re +import requests import subprocess import sys - -import requests from colorama import Fore, Style from packaging.version import Version + checksums = None versions = dict() @@ -62,6 +64,88 @@ for version in sorted(versions.keys()): with open('makebuildserver', 'w') as fp: fp.write(makebuildserver_current) -p = subprocess.run(['git', '--no-pager', 'diff']) -errors += p.returncode -sys.exit(errors) +# write out update to gradlew-fdroid +with open('gradlew-fdroid') as fp: + gradlew_fdroid = fp.read() +current = '' +get_sha_pat = re.compile(r""" +'([0-9][0-9.]+[0-9])'\)\s+echo '([0-9a-f]{64})' ;;\n""") +for m in get_sha_pat.finditer(gradlew_fdroid): + current += m.group() + checksum = m.group(2) + if checksum != versions[m.group(1)]: + print(Fore.RED + + 'ERROR: checksum mismatch:', checksum, versions[m.group(1)] + + Style.RESET_ALL) + errors += 1 +new = '' +for version in sorted(versions.keys(), key=Version): + sha256 = versions[version] + spaces = '' + for i in range(6 - len(version)): + spaces += ' ' + new += """ '%s')%s echo '%s' ;;\n""" % (version, spaces, sha256) +gradlew_fdroid = gradlew_fdroid.replace(current, new) +plugin_v = ' '.join(sorted(versions.keys(), key=Version, reverse=True)) +plugin_v_pat = re.compile(r'\nplugin_v=\(([0-9. ]+)\)') +with open('gradlew-fdroid', 'w') as fp: + fp.write(plugin_v_pat.sub('\nplugin_v=(%s)' % plugin_v, gradlew_fdroid)) + +if os.getenv('CI_PROJECT_NAMESPACE') != 'fdroid': + p = subprocess.run(['git', '--no-pager', 'diff']) + print(p.stdout) + sys.exit(errors) + +# This only runs after commits are pushed to fdroid/fdroidserver +git_repo = git.repo.Repo('.') +modified = git_repo.git().ls_files(modified=True).split() +if git_repo.is_dirty() and ('gradlew-fdroid' in modified or 'makebuildserver' in modified): + private_token = os.getenv('PERSONAL_ACCESS_TOKEN') + if not private_token: + print(Fore.RED + + 'ERROR: GitLab Token not found in PERSONAL_ACCESS_TOKEN!' + + Style.RESET_ALL) + sys.exit(1) + + branch = git_repo.create_head(os.path.basename(__file__), force=True) + branch.checkout() + git_repo.index.add(['gradlew-fdroid', 'makebuildserver']) + author = git.Actor('fdroid-bot', 'fdroid-bot@f-droid.org') + git_repo.index.commit('gradle v' + version, author=author) + project_path = 'fdroid-bot/' + os.getenv('CI_PROJECT_NAME') + url = ('https://gitlab-ci-token:%s@%s/%s.git' + % (os.getenv('PERSONAL_ACCESS_TOKEN'), os.getenv('CI_SERVER_HOST'), project_path)) + remote_name = 'fdroid-bot' + try: + remote = git_repo.create_remote(remote_name, url) + # See https://github.com/PyCQA/pylint/issues/2856 . + # pylint: disable-next=no-member + except git.exc.GitCommandError: + remote = git.remote.Remote(git_repo, remote_name) + remote.set_url(url) + remote.push(force=True) + git.remote.Remote.rm(git_repo, remote_name) + + gl = gitlab.Gitlab(os.getenv('CI_SERVER_URL'), api_version=4, + private_token=private_token) + project = gl.projects.get(project_path, lazy=True) + description = ( + 'see ' + '\n\n

generated by GitLab CI Job #%s

' + % (os.getenv('CI_PROJECT_URL'), os.getenv('CI_JOB_ID'), os.getenv('CI_JOB_ID')) + ) + try: + mr = project.mergerequests.create({ + 'source_branch': branch.name, + 'target_project_id': 36527, # fdroid/fdroidserver + 'target_branch': 'master', + 'title': 'update to gradle v' + version, + 'description': description, + 'labels': ['fdroid-bot', 'gradle'], + 'remove_source_branch': True, + }) + mr.save() + except gitlab.exceptions.GitlabCreateError as e: + if e.response_code == 409: # Another open merge request already exists for this source branch + print(e.error_message) + else: + raise e diff --git a/tests/key-tricks.py b/tests/key-tricks.py index a01bf0bf..7fc0f3ea 100755 --- a/tests/key-tricks.py +++ b/tests/key-tricks.py @@ -1,10 +1,9 @@ #!/usr/bin/env python3 import os +import fdroidserver import shutil import sys - -import fdroidserver from fdroidserver import common, nightly if os.getenv('CI') is None: diff --git a/tests/metadata-rewrite-yml/app.with.special.build.params.yml b/tests/metadata-rewrite-yml/app.with.special.build.params.yml index 95c1695c..0fc97b65 100644 --- a/tests/metadata-rewrite-yml/app.with.special.build.params.yml +++ b/tests/metadata-rewrite-yml/app.with.special.build.params.yml @@ -1,5 +1,5 @@ AntiFeatures: - - Tracking + - UpstreamNonFree Categories: - System License: GPL-3.0-only diff --git a/tests/metadata/app.with.special.build.params.yml b/tests/metadata/app.with.special.build.params.yml index c58cadf1..d12c713c 100644 --- a/tests/metadata/app.with.special.build.params.yml +++ b/tests/metadata/app.with.special.build.params.yml @@ -1,5 +1,5 @@ AntiFeatures: - - Tracking + - UpstreamNonFree Categories: - System License: GPL-3.0-only diff --git a/tests/metadata/com.politedroid.yml b/tests/metadata/com.politedroid.yml index 87d13bcb..cd474d6c 100644 --- a/tests/metadata/com.politedroid.yml +++ b/tests/metadata/com.politedroid.yml @@ -22,6 +22,7 @@ Builds: target: android-10 antifeatures: - KnownVuln + - UpstreamNonFree - NonFreeAssets - versionName: '1.3' @@ -42,6 +43,7 @@ Builds: - yes antifeatures: - KnownVuln + - UpstreamNonFree - NonFreeAssets ArchivePolicy: 4 versions diff --git a/tests/metadata/dump/app.with.special.build.params.yaml b/tests/metadata/dump/app.with.special.build.params.yaml index fae6c9ae..9f2c61f6 100644 --- a/tests/metadata/dump/app.with.special.build.params.yaml +++ b/tests/metadata/dump/app.with.special.build.params.yaml @@ -2,7 +2,7 @@ --- AllowedAPKSigningKeys: [] AntiFeatures: - Tracking: {} + UpstreamNonFree: {} ArchivePolicy: 0 AuthorEmail: null AuthorName: null diff --git a/tests/metadata/dump/com.politedroid.yaml b/tests/metadata/dump/com.politedroid.yaml index 01d55b82..b4d56c3e 100644 --- a/tests/metadata/dump/com.politedroid.yaml +++ b/tests/metadata/dump/com.politedroid.yaml @@ -19,6 +19,7 @@ Builds: antifeatures: KnownVuln: {} NonFreeAssets: {} + UpstreamNonFree: {} binary: null build: '' buildjni: [] @@ -126,6 +127,7 @@ Builds: antifeatures: KnownVuln: {} NonFreeAssets: {} + UpstreamNonFree: {} binary: null build: '' buildjni: [] diff --git a/tests/openssl-version-check-test.py b/tests/openssl-version-check-test.py index 69a1ff59..d4022126 100755 --- a/tests/openssl-version-check-test.py +++ b/tests/openssl-version-check-test.py @@ -6,7 +6,6 @@ # This is used in update.has_known_vulnerability() import re - import requests # this list was generated using: diff --git a/tests/repo/entry.json b/tests/repo/entry.json index 85b6b14f..1eb017bc 100644 --- a/tests/repo/entry.json +++ b/tests/repo/entry.json @@ -3,8 +3,8 @@ "version": 20002, "index": { "name": "/index-v2.json", - "sha256": "94dca5f4398d2a0167bbe69c790cdd66f1bc305ca5e362ee5e3f793e9f88e3cf", - "size": 53355, + "sha256": "f0912b64db80168ee807f43ab3470bb709b6659aee05ad63057dcbcd1c97dc5e", + "size": 55186, "numPackages": 11 }, "diffs": {} diff --git a/tests/repo/index-v1.json b/tests/repo/index-v1.json index 03f8f060..ed1cbcde 100644 --- a/tests/repo/index-v1.json +++ b/tests/repo/index-v1.json @@ -244,7 +244,8 @@ "added": 1498176000000, "antiFeatures": [ "KnownVuln", - "NonFreeAssets" + "NonFreeAssets", + "UpstreamNonFree" ], "apkName": "com.politedroid_6.apk", "hash": "70c2f776a2bac38a58a7d521f96ee0414c6f0fb1de973c3ca8b10862a009247d", @@ -331,7 +332,8 @@ "added": 1498176000000, "antiFeatures": [ "KnownVuln", - "NonFreeAssets" + "NonFreeAssets", + "UpstreamNonFree" ], "apkName": "com.politedroid_3.apk", "hash": "665d03d61ebc642289fda697f71a59305b0202b16cafc5ffdae91cbe91f0b25d", diff --git a/tests/repo/index-v2.json b/tests/repo/index-v2.json index 263dffd2..96c2cfea 100644 --- a/tests/repo/index-v2.json +++ b/tests/repo/index-v2.json @@ -453,6 +453,49 @@ "ro": "Urmărire", "zh-rCN": "跟踪用户" } + }, + "UpstreamNonFree": { + "description": { + "de": "Der Originalcode ist nicht völlig quelloffen", + "en-US": "The upstream source code is not entirely Free", + "fa": "کد مبدأ بالادستی کاملاً آزاد نیست", + "ro": "Codul sursa originar nu este în totalitatea lui software liber", + "zh-rCN": "上游源代码不是完全自由的" + }, + "icon": { + "de": { + "name": "/icons/ic_antifeature_upstreamnonfree.xml", + "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86", + "size": 1442 + }, + "en-US": { + "name": "/icons/ic_antifeature_upstreamnonfree.xml", + "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86", + "size": 1442 + }, + "fa": { + "name": "/icons/ic_antifeature_upstreamnonfree.xml", + "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86", + "size": 1442 + }, + "ro": { + "name": "/icons/ic_antifeature_upstreamnonfree.xml", + "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86", + "size": 1442 + }, + "zh-rCN": { + "name": "/icons/ic_antifeature_upstreamnonfree.xml", + "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86", + "size": 1442 + } + }, + "name": { + "de": "Originalcode nicht-quelloffen", + "en-US": "Upstream Non-Free", + "fa": "بالادست ناآزاد", + "ro": "Surse ne-libere", + "zh-rCN": "上游代码非自由" + } } }, "categories": { @@ -584,7 +627,8 @@ "en-US": "1.5" }, "NonFreeAssets": {}, - "NonFreeNet": {} + "NonFreeNet": {}, + "UpstreamNonFree": {} } }, "5bdbfa071cca4b8d05ced41d6b28763595d6e8096cca5bbf0f9253c9a2622e5d": { @@ -712,7 +756,8 @@ "en-US": "1.5" }, "NonFreeAssets": {}, - "NonFreeNet": {} + "NonFreeNet": {}, + "UpstreamNonFree": {} } } } diff --git a/tests/repo/index.xml b/tests/repo/index.xml index 04e8f87d..4036a6f7 100644 --- a/tests/repo/index.xml +++ b/tests/repo/index.xml @@ -346,7 +346,7 @@ APK is called F-Droid Privileged Extension. https://github.com/miguelvps/PoliteDroid/issues 1.5 6 - KnownVuln,NoSourceSince,NonFreeAssets,NonFreeNet + KnownVuln,NoSourceSince,NonFreeAssets,NonFreeNet,UpstreamNonFree 1.5 6 diff --git a/tests/shared_test_code.py b/tests/shared_test_code.py index 3e34900b..59f515a7 100644 --- a/tests/shared_test_code.py +++ b/tests/shared_test_code.py @@ -20,8 +20,10 @@ import sys import tempfile import unittest import unittest.mock + from pathlib import Path + GP_FINGERPRINT = 'B7C2EEFD8DAC7806AF67DFCD92EB18126BC08312A7F2D6F3862E46013C7A6135' diff --git a/tests/test_api.py b/tests/test_api.py index ba18caa6..6cb9a53b 100755 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -8,9 +8,9 @@ from unittest import mock import fdroidserver from fdroidserver import common, signindex - from .shared_test_code import GP_FINGERPRINT, mkdtemp + basedir = Path(__file__).parent diff --git a/tests/test_build.py b/tests/test_build.py index 578837ed..f7558c8c 100755 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -6,16 +6,15 @@ import sys import tempfile import textwrap import unittest +import yaml from pathlib import Path from unittest import mock -import yaml +from .shared_test_code import TmpCwd, mkdtemp import fdroidserver.build import fdroidserver.common -from .shared_test_code import TmpCwd, mkdtemp - class FakeProcess: output = 'fake output' diff --git a/tests/test_checkupdates.py b/tests/test_checkupdates.py index 107caf29..4cc76db3 100755 --- a/tests/test_checkupdates.py +++ b/tests/test_checkupdates.py @@ -1,19 +1,19 @@ #!/usr/bin/env python3 +import git import os import platform import shutil import tempfile import time import unittest -from pathlib import Path from unittest import mock - -import git +from pathlib import Path import fdroidserver import fdroidserver.checkupdates + basedir = Path(__file__).parent diff --git a/tests/test_common.py b/tests/test_common.py index 3110b446..1f6ff947 100755 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -1,44 +1,40 @@ #!/usr/bin/env python3 import difflib +import git import glob -import gzip import importlib import json import logging import os import re +import ruamel.yaml import shutil import subprocess import sys import tempfile -import textwrap import time import unittest +import textwrap +import gzip from argparse import ArgumentParser from datetime import datetime, timezone -from pathlib import Path -from unittest import mock from zipfile import BadZipFile, ZipFile +from unittest import mock +from pathlib import Path -import git -import ruamel.yaml import fdroidserver +import fdroidserver.signindex import fdroidserver.common import fdroidserver.metadata -import fdroidserver.signindex -from fdroidserver._yaml import config_dump, yaml, yaml_dumper +from .shared_test_code import TmpCwd, mkdtemp, mkdir_testfiles from fdroidserver.common import ANTIFEATURES_CONFIG_NAME, CATEGORIES_CONFIG_NAME -from fdroidserver.exception import ( - FDroidException, - MetaDataException, - VCSException, - VerificationException, -) +from fdroidserver._yaml import yaml, yaml_dumper, config_dump +from fdroidserver.exception import FDroidException, VCSException,\ + MetaDataException, VerificationException from fdroidserver.looseversion import LooseVersion -from .shared_test_code import TmpCwd, mkdir_testfiles, mkdtemp basedir = Path(__file__).parent @@ -2419,9 +2415,8 @@ class CommonTest(SetUpTearDownMixin, unittest.TestCase): @mock.patch('sdkmanager._generate_package_xml', lambda a, b, c: None) def test_auto_install_ndk_mock_dl(self): """Test NDK installs by actually calling sdkmanager""" - import importlib.metadata - import sdkmanager + import importlib.metadata sdkmanager_version = LooseVersion(importlib.metadata.version('sdkmanager')) if sdkmanager_version < LooseVersion('0.6.4'): @@ -2784,6 +2779,7 @@ class CommonTest(SetUpTearDownMixin, unittest.TestCase): 'NonFreeDep', 'NonFreeNet', 'Tracking', + 'UpstreamNonFree', ], list(antiFeatures.keys()), ) @@ -2819,46 +2815,6 @@ class CommonTest(SetUpTearDownMixin, unittest.TestCase): ) self.assertEqual(['en-US'], list(categories['GuardianProject']['name'].keys())) - def test_load_localized_config_copy_icon(self): - os.chdir(self.testdir) - os.mkdir('config') - Path('config/categories.yml').write_text('System:\n icon: system.png') - source_file = 'config/system.png' - Path(source_file).write_text('placeholder') - time.sleep(0.01) # ensure reliable failure if mtime isn't preserved - fdroidserver.common.load_localized_config(CATEGORIES_CONFIG_NAME, 'repo') - dest_file = f'repo/icons/{os.path.basename(source_file)}' - self.assertEqual(os.path.getsize(source_file), os.path.getsize(dest_file)) - self.assertEqual(os.path.getmtime(source_file), os.path.getmtime(dest_file)) - - def test_load_localized_config_copy_unchanged(self): - """The destination file should only change if the source file did.""" - os.chdir(self.testdir) - os.mkdir('config') - Path('config/categories.yml').write_text('System:\n icon: system.png') - source_file = 'config/system.png' - Path(source_file).write_text('placeholder') - fdroidserver.common.load_localized_config(CATEGORIES_CONFIG_NAME, 'repo') - delta = 0.01 - time.sleep(delta) # ensure reliable failure if file isn't preserved - fdroidserver.common.load_localized_config(CATEGORIES_CONFIG_NAME, 'repo') - dest_file = f'repo/icons/{os.path.basename(source_file)}' - self.assertAlmostEqual( - os.path.getctime(source_file), os.path.getctime(dest_file), delta=delta - ) - - def test_load_localized_config_copy_over_dest(self): - os.chdir(self.testdir) - os.mkdir('config') - Path('config/categories.yml').write_text('System:\n icon: system.png') - source_file = Path('config/system.png') - dest_file = Path(f'repo/icons/{os.path.basename(source_file)}') - source_file.write_text('placeholder') - dest_file.parent.mkdir(parents=True) - dest_file.write_text('different contents') - fdroidserver.common.load_localized_config(CATEGORIES_CONFIG_NAME, 'repo') - self.assertEqual(os.path.getsize(source_file), os.path.getsize(dest_file)) - def test_load_localized_config_0_file(self): os.chdir(self.testdir) os.mkdir('config') diff --git a/tests/test_deploy.py b/tests/test_deploy.py index 60d157c3..b821725c 100755 --- a/tests/test_deploy.py +++ b/tests/test_deploy.py @@ -11,8 +11,7 @@ from unittest import mock import git import fdroidserver - -from .shared_test_code import TmpCwd, VerboseFalseOptions, mkdtemp +from .shared_test_code import TmpCwd, mkdtemp, VerboseFalseOptions basedir = Path(__file__).parent diff --git a/tests/test_exception.py b/tests/test_exception.py index 01a6cd46..accc6653 100755 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 import unittest - import fdroidserver diff --git a/tests/test_github.py b/tests/test_github.py index f30ce0bb..39514c5d 100755 --- a/tests/test_github.py +++ b/tests/test_github.py @@ -3,9 +3,8 @@ import unittest import unittest.mock -import fdroidserver - from .shared_test_code import mock_urlopen +import fdroidserver class GithubApiTest(unittest.TestCase): diff --git a/tests/test_gpgsign.py b/tests/test_gpgsign.py index 84634874..f73b217e 100755 --- a/tests/test_gpgsign.py +++ b/tests/test_gpgsign.py @@ -5,10 +5,10 @@ import os import shutil import tempfile import unittest -from pathlib import Path -from unittest.mock import MagicMock, patch from fdroidserver import common, gpgsign +from pathlib import Path +from unittest.mock import MagicMock, patch basedir = Path(__file__).parent diff --git a/tests/test_gradlew-fdroid b/tests/test_gradlew-fdroid new file mode 100755 index 00000000..26d9bf5b --- /dev/null +++ b/tests/test_gradlew-fdroid @@ -0,0 +1,75 @@ +#!/bin/bash + +red='\033[0;31m' +green='\033[0;32m' +nocolor='\033[0m' + +TEST_VALUE='HELLO WORLD!' + +run_test() { + cd $source_files/$1 + printf "\n${1}:\n" + if ($basedir/gradlew-fdroid 2>/dev/null || true) | grep -Fo "$2"; then + printf "${green}passed: $1\n" + else + printf "${red}ERROR: $2 not found in $1\n" + ((exit_value++)) + fi + printf $nocolor +} + +download_cache_test() { + if $basedir/gradlew-fdroid helloWorld 2>/dev/null | grep -F "$TEST_VALUE"; then + printf "${green}passed: $1\n" + else + printf "${red}ERROR: \n" + $basedir/gradlew-fdroid helloWorld + ((exit_value++)) + fi + printf $nocolor +} + +exit_value=0 +basedir=$(cd $(dirname $0)/..; pwd) +source_files=$basedir/tests/source-files +export https_proxy=127.7.7.7:7 # fake proxy to block downloading + +run_test osmandapp/osmand 2.2.1 +run_test com.integreight.onesheeld 3.3 +run_test se.manyver/android 5.5 +run_test yuriykulikov/AlarmClock 5.1.1 + +printf "\n\nforce test files to have Windows linefeeds:\n" +tmpdir=`mktemp -d` +cp -a $source_files/osmandapp $source_files/yuriykulikov $tmpdir/ +awk 'sub("$", "\r")' \ + $source_files/yuriykulikov/AlarmClock/gradle/wrapper/gradle-wrapper.properties \ + > $tmpdir/yuriykulikov/AlarmClock/gradle/wrapper/gradle-wrapper.properties +awk 'sub("$", "\r")' \ + $source_files/osmandapp/osmand/build.gradle \ + > $tmpdir/osmandapp/osmand/build.gradle +source_files=$tmpdir + +run_test yuriykulikov/AlarmClock 5.1.1 +run_test osmandapp/osmand 2.2.1 + +cd $tmpdir +mkdir -p download_cache_test/gradle/wrapper +cd download_cache_test +echo 'distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip' \ + > gradle/wrapper/gradle-wrapper.properties +printf "task helloWorld {\n\tdoLast {\n\t\tprintln '$TEST_VALUE'\n\t}\n}" > build.gradle + +export GRADLE_VERSION_DIR=$tmpdir/gradle/versions +mkdir -p $GRADLE_VERSION_DIR + +unset https_proxy +printf "download, unpack, and run: " +download_cache_test 7.3 +printf "unpack and run: " +rm -rf $GRADLE_VERSION_DIR/7.3/ +download_cache_test 7.3 +printf "just run: " +download_cache_test 7.3 + +exit $exit_value diff --git a/tests/test_import_subcommand.py b/tests/test_import_subcommand.py index 530e10fb..05e2c379 100755 --- a/tests/test_import_subcommand.py +++ b/tests/test_import_subcommand.py @@ -13,11 +13,11 @@ import git import requests import yaml +from .shared_test_code import TmpCwd, mkdtemp, VerboseFalseOptions + import fdroidserver import fdroidserver.import_subcommand -from .shared_test_code import TmpCwd, VerboseFalseOptions, mkdtemp - basedir = Path(__file__).parent logging.basicConfig(level=logging.DEBUG) diff --git a/tests/test_index.py b/tests/test_index.py index c8ff5cbe..b4973d79 100755 --- a/tests/test_index.py +++ b/tests/test_index.py @@ -3,23 +3,22 @@ import copy import datetime import glob -import json import os -import shutil -import tempfile import unittest -import zipfile from pathlib import Path -from unittest.mock import patch - -import requests import yaml +import zipfile +from unittest.mock import patch +import requests +import tempfile +import json +import shutil import fdroidserver from fdroidserver import common, index, publish, signindex, update - from .shared_test_code import GP_FINGERPRINT, TmpCwd, mkdtemp + basedir = Path(__file__).parent diff --git a/tests/test_init.py b/tests/test_init.py index a038493b..179f06c7 100755 --- a/tests/test_init.py +++ b/tests/test_init.py @@ -8,7 +8,6 @@ import unittest import fdroidserver.common import fdroidserver.init - from .shared_test_code import mkdtemp basedir = pathlib.Path(__file__).parent diff --git a/tests/test_install.py b/tests/test_install.py index aa239d4d..b4e404d5 100755 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -3,6 +3,7 @@ import os import textwrap import unittest + from pathlib import Path from unittest.mock import Mock, patch diff --git a/tests/test_integration.py b/tests/test_integration.py index 6d757b1e..76a7e82b 100755 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -18,7 +18,6 @@ except ModuleNotFoundError: from androguard.core.apk import get_apkid from fdroidserver._yaml import yaml, yaml_dumper - from .shared_test_code import mkdir_testfiles # TODO: port generic tests that use index.xml to index-v2 (test that diff --git a/tests/test_lint.py b/tests/test_lint.py index 37b7ce95..f0bf6b4d 100755 --- a/tests/test_lint.py +++ b/tests/test_lint.py @@ -9,13 +9,13 @@ import unittest from pathlib import Path from unittest import mock +from .shared_test_code import mkdtemp + import fdroidserver.common import fdroidserver.lint import fdroidserver.metadata from fdroidserver._yaml import config_dump -from .shared_test_code import mkdtemp - basedir = Path(__file__).parent @@ -510,7 +510,7 @@ class LintAntiFeaturesTest(unittest.TestCase): def test_check_antiFeatures(self): app = fdroidserver.metadata.App() - app['AntiFeatures'] = ['Ads', 'Tracking'] + app['AntiFeatures'] = ['Ads', 'UpstreamNonFree'] self.assertEqual([], list(fdroidserver.lint.check_antiFeatures(app))) def test_check_antiFeatures_fails_one(self): diff --git a/tests/test_main.py b/tests/test_main.py index 68984088..50fda3e2 100755 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -2,13 +2,12 @@ import os import pkgutil -import tempfile import textwrap import unittest +import tempfile from unittest import mock import fdroidserver.__main__ - from .shared_test_code import TmpCwd, TmpPyPath diff --git a/tests/test_metadata.py b/tests/test_metadata.py index 84040024..8c3f7591 100755 --- a/tests/test_metadata.py +++ b/tests/test_metadata.py @@ -4,24 +4,23 @@ import copy import io import os import random +import ruamel.yaml import shutil +import unittest import tempfile import textwrap -import unittest from collections import OrderedDict from pathlib import Path from unittest import mock -import ruamel.yaml - import fdroidserver from fdroidserver import metadata -from fdroidserver._yaml import yaml -from fdroidserver.common import DEFAULT_LOCALE from fdroidserver.exception import MetaDataException - +from fdroidserver.common import DEFAULT_LOCALE +from fdroidserver._yaml import yaml from .shared_test_code import TmpCwd, mkdtemp + basedir = Path(__file__).parent @@ -672,7 +671,7 @@ class MetadataTest(unittest.TestCase): """Definitions in .yml files should override the localized versions.""" app = metadata.parse_metadata('metadata/app.with.special.build.params.yml') - self.assertEqual(app['AntiFeatures'], {'Tracking': {}}) + self.assertEqual(app['AntiFeatures'], {'UpstreamNonFree': {}}) self.assertEqual(49, app['Builds'][-3]['versionCode']) self.assertEqual( @@ -961,6 +960,7 @@ class MetadataTest(unittest.TestCase): - versionCode: 123 antifeatures: - KnownVuln + - UpstreamNonFree - NonFreeAssets """ ) @@ -971,7 +971,11 @@ class MetadataTest(unittest.TestCase): 'AntiFeatures': {'Ads': {}}, 'Builds': [ { - 'antifeatures': {'KnownVuln': {}, 'NonFreeAssets': {}}, + 'antifeatures': { + 'KnownVuln': {}, + 'NonFreeAssets': {}, + 'UpstreamNonFree': {}, + }, 'versionCode': 123, } ], @@ -992,7 +996,7 @@ class MetadataTest(unittest.TestCase): es: 2nd az: zero en-US: first - Tracking: + UpstreamNonFree: NonFreeAssets: AntiFeatures: NonFreeDep: @@ -1014,7 +1018,7 @@ class MetadataTest(unittest.TestCase): 'antifeatures': { 'KnownVuln': {'az': 'zero', 'en-US': 'first', 'es': '2nd'}, 'NonFreeAssets': {}, - 'Tracking': {}, + 'UpstreamNonFree': {}, }, 'versionCode': 123, } @@ -1868,6 +1872,7 @@ class MetadataTest(unittest.TestCase): antifeatures: - KnownVuln - NonFreeAssets + - UpstreamNonFree ArchivePolicy: 4 AutoUpdateMode: Version v%v diff --git a/tests/test_net.py b/tests/test_net.py index beacd9af..581edcfb 100755 --- a/tests/test_net.py +++ b/tests/test_net.py @@ -2,17 +2,16 @@ import os import random +import requests import socket import tempfile import threading import time import unittest -from pathlib import Path from unittest.mock import MagicMock, patch -import requests - from fdroidserver import net +from pathlib import Path class RetryServer: diff --git a/tests/test_nightly.py b/tests/test_nightly.py index fb1614b7..681df96d 100755 --- a/tests/test_nightly.py +++ b/tests/test_nightly.py @@ -2,19 +2,20 @@ import os import platform +import requests import shutil import subprocess import tempfile import time import unittest +import yaml + from pathlib import Path from unittest.mock import patch -import requests -import yaml - from fdroidserver import common, exception, index, nightly + DEBUG_KEYSTORE = '/u3+7QAAAAIAAAABAAAAAQAPYW5kcm9pZGRlYnVna2V5AAABNYhAuskAAAK8MIICuDAOBgorBgEEASoCEQEBBQAEggKkqRnFlhidQmVff83bsAeewXPIsF0jiymzJnvrnUAQtCK0MV9uZonu37Mrj/qKLn56mf6QcvEoKvpCstZxzftgYYpAHWMVLM+hy2Z707QZEHlY7Ukppt8DItj+dXkeqGt7f8KzOb2AQwDbt9lm1fJb+MefLowTaubtvrLMcKIne43CbCu2D8HyN7RPWpEkVetA2Qgr5W4sa3tIUT80afqo9jzwJjKCspuxY9A1M8EIM3/kvyLo2B9r0cuWwRjYZXJ6gmTYI2ARNz0KQnCZUok14NDg+mZTb1B7AzRfb0lfjbA6grbzuAL+WaEpO8/LgGfuOh7QBZBT498TElOaFfQ9toQWA79wAmrQCm4OoFukpPIy2m/l6VjJSmlK5Q+CMOl/Au7OG1sUUCTvPaIr0XKnsiwDJ7a71n9garnPWHkvuWapSRCzCNgaUoGQjB+fTMJFFrwT8P1aLfM6onc3KNrDStoQZuYe5ngCLlNS56bENkVGvJBfdkboxtHZjqDXXON9jWGSOI527J3o2D5sjSVyx3T9XPrsL4TA/nBtdU+c/+M6aoASZR2VymzAKdMrGfj9kE5GXp8vv2vkJj9+OJ4Jm5yeczocc/Idtojjb1yg+sq1yY8kAQxgezpY1rpgi2jF3tSN01c23DNvAaSJLJX2ZuH8sD40ACc80Y1Qp1nUTdpwBZUeaeNruBwx4PHU8GnC71FwtiUpwNs0OoSl0pgDUJ3ODC5bs8B5QmW1wu1eg7I4mMSmCsNGW6VN3sFcu+WEqnmTxPoZombdFZKxsr2oq359Nn4bJ6Uc9PBz/sXsns7Zx1vND/oK/Jv5Y269UVAMeKX/eGpfnxzagW3tqGbOu12C2p9Azo5VxiU2fG/tmk2PjaG5hV/ywReco7I6C1p8OWM2fwAAAAEABVguNTA5AAAB6TCCAeUwggFOoAMCAQICBE89gTUwDQYJKoZIhvcNAQEFBQAwNzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0FuZHJvaWQxFjAUBgNVBAMTDUFuZHJvaWQgRGVidWcwHhcNMTIwMjE2MjIyMDM3WhcNNDIwMjA4MjIyMDM3WjA3MQswCQYDVQQGEwJVUzEQMA4GA1UEChMHQW5kcm9pZDEWMBQGA1UEAxMNQW5kcm9pZCBEZWJ1ZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3AKU7S7JXhUjEwxWP1/LPHXieh61SaA/+xbpqsPA+yjGz1sAcGAyuG6bjNAVm56pq7nkjJzicX7Wi83nUBo58DEC/quxOLdy0C4PEOSAeTnTT1RJIwMDvOgiL1GFCErvQ7gCH6zuAID/JRFbN6nIkhDjs2DYnSBl7aJJf8wCLc0CAwEAATANBgkqhkiG9w0BAQUFAAOBgQAoq/TJffA0l+ZGf89xndmHdxrO6qi+TzSlByvLZ4eFfCovTh1iO+Edrd5V1yXGLxyyvdsadMAFZT8SaxMrP5xxhJ0nra0APWYLpA96M//auMhQBWPgqPntwgvEZuEH7f0kdItjBJ39yijbG8xfgwid6XqNUo0TDDkp/wNWKpJ9tJe+2PrGw1NAvrgSydoH2j8DI1Eq' DEBUG_KEYSTORE_KEY_FILE_NAME = ( 'debug_keystore_QW+xRCJDGHXyyFtgCW8QRajj+6uYmsLwGWpCfYqYQ5M_id_rsa' diff --git a/tests/test_publish.py b/tests/test_publish.py index 82c670d7..cb47bff5 100755 --- a/tests/test_publish.py +++ b/tests/test_publish.py @@ -15,15 +15,17 @@ import os import pathlib import shutil import sys -import tempfile import unittest +import tempfile from unittest import mock -from fdroidserver import common, metadata, publish, signatures +from fdroidserver import publish +from fdroidserver import common +from fdroidserver import metadata +from fdroidserver import signatures from fdroidserver._yaml import yaml from fdroidserver.exception import FDroidException - -from .shared_test_code import VerboseFalseOptions, mkdtemp +from .shared_test_code import mkdtemp, VerboseFalseOptions basedir = pathlib.Path(__file__).parent diff --git a/tests/test_rewritemeta.py b/tests/test_rewritemeta.py index 4dcdd03f..5ad1b94d 100755 --- a/tests/test_rewritemeta.py +++ b/tests/test_rewritemeta.py @@ -1,14 +1,13 @@ #!/usr/bin/env python3 import os +import unittest import tempfile import textwrap -import unittest from pathlib import Path from unittest import mock from fdroidserver import metadata, rewritemeta - from .shared_test_code import TmpCwd, mkdtemp basedir = Path(__file__).parent @@ -40,6 +39,7 @@ class RewriteMetaTest(unittest.TestCase): 'target': 'android-10', 'antifeatures': { 'KnownVuln': {}, + 'UpstreamNonFree': {}, 'NonFreeAssets': {}, }, }, diff --git a/tests/test_scanner.py b/tests/test_scanner.py index 849476e6..d982ed4f 100755 --- a/tests/test_scanner.py +++ b/tests/test_scanner.py @@ -26,7 +26,6 @@ import fdroidserver.common import fdroidserver.exception import fdroidserver.metadata import fdroidserver.scanner - from .shared_test_code import TmpCwd, mkdtemp, mock_open_to_str basedir = pathlib.Path(__file__).parent diff --git a/tests/test_signatures.py b/tests/test_signatures.py index 4f7bd105..603ddf2c 100755 --- a/tests/test_signatures.py +++ b/tests/test_signatures.py @@ -6,9 +6,8 @@ import sys import unittest from tempfile import TemporaryDirectory -from fdroidserver import common, signatures - from .shared_test_code import TmpCwd +from fdroidserver import common, signatures basedir = os.path.dirname(__file__) diff --git a/tests/test_signindex.py b/tests/test_signindex.py index 21d54585..149afb24 100755 --- a/tests/test_signindex.py +++ b/tests/test_signindex.py @@ -6,10 +6,10 @@ import shutil import subprocess import tempfile import unittest -from pathlib import Path -from unittest.mock import patch from fdroidserver import apksigcopier, common, exception, signindex, update +from pathlib import Path +from unittest.mock import patch class Options: diff --git a/tests/test_update.py b/tests/test_update.py index 623f48cc..de39d8fd 100755 --- a/tests/test_update.py +++ b/tests/test_update.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import copy +import git import glob import hashlib import json @@ -11,18 +12,16 @@ import shutil import string import subprocess import sys -import textwrap import time import unittest +import yaml import zipfile +import textwrap from binascii import hexlify from datetime import datetime from pathlib import Path from unittest import mock -import git -import yaml - try: # these were moved in androguard 4.0 from androguard.core.apk import APK @@ -45,16 +44,15 @@ except ImportError: except ImportError: from yaml import Loader as FullLoader -from PIL import PngImagePlugin - import fdroidserver.common import fdroidserver.exception import fdroidserver.metadata import fdroidserver.update from fdroidserver.common import CATEGORIES_CONFIG_NAME from fdroidserver.looseversion import LooseVersion - from .shared_test_code import TmpCwd, mkdtemp +from PIL import PngImagePlugin + DONATION_FIELDS = ('Donate', 'Liberapay', 'OpenCollective') @@ -255,113 +253,6 @@ class UpdateTest(unittest.TestCase): fdroidserver.update.insert_localized_app_metadata(apps) self.assertEqual('42', apps[app.id]['localized']['en-US']['whatsNew']) - def test_fastlane_with_subdir(self): - """Test if fastlane in simple one-level subdir is found.""" - os.chdir(self.testdir) - config = dict() - fdroidserver.common.fill_config_defaults(config) - fdroidserver.update.config = config - - app = fdroidserver.metadata.App() - app.id = 'com.example.app' - build_dir = f'build/{app.id}' - flavor = 'flavor' - subdir = 'subproject' - apps = {app.id: app} - build = fdroidserver.metadata.Build() - build.versionCode = 42 - build.gradle = [flavor] - build.subdir = subdir - app['Builds'] = [build] - - first_value = 'first' - first_dir = Path(f'{build_dir}/src/{flavor}/fastlane/metadata/android/en-US') - first_dir.mkdir(parents=True) - (first_dir / 'title.txt').write_text(first_value) - fdroidserver.update.insert_localized_app_metadata(apps) - self.assertEqual(first_value, apps[app.id]['localized']['en-US']['name']) - - second_value = 'second' - second_dir = Path(f'{build_dir}/{subdir}/fastlane/metadata/android/en-US') - second_dir.mkdir(parents=True) - (second_dir / 'title.txt').write_text(second_value) - fdroidserver.update.insert_localized_app_metadata(apps) - self.assertEqual(second_value, apps[app.id]['localized']['en-US']['name']) - - def test_fastlane_with_schildichat(self): - """Test if fastlane is found in this tangle of dirs and symlinks. - - https://github.com/SchildiChat/schildichat-android-next/tree/sc_v0.10.3-ex_25_6_2 - """ - os.chdir(self.testdir) - config = dict() - fdroidserver.common.fill_config_defaults(config) - fdroidserver.update.config = config - - app = fdroidserver.metadata.App() - app.id = 'chat.schildi.android' - build_dir = f'build/{app.id}' - flavors = ['fdroid', 'sc', 'default'] - subdir = 'app' - apps = {app.id: app} - build = fdroidserver.metadata.Build() - build.versionCode = 42 - build.gradle = flavors - build.subdir = subdir - app['Builds'] = [build] - - wrong_value = 'wrong' - wrong_dir = Path(f'{build_dir}/upstream_infra/fastlane/metadata/android/en-US') - wrong_dir.mkdir(parents=True) - (wrong_dir / 'title.txt').write_text(wrong_value) - - right_value = 'right' - right_dir = Path(f'{build_dir}/metadata/en-US') - right_dir.mkdir(parents=True) - (right_dir / 'title.txt').write_text(right_value) - _fastlane = Path('.fastlane/metadata') - _fastlane.mkdir(parents=True) - os.symlink('../../metadata', _fastlane / 'android') - os.symlink('.fastlane', 'fastlane') - fdroidserver.update.insert_localized_app_metadata(apps) - self.assertEqual(right_value, apps[app.id]['localized']['en-US']['name']) - - def test_fastlane_with_multi_level_subdir(self): - """Test if fastlane in multi-level subdir is found.""" - os.chdir(self.testdir) - config = dict() - fdroidserver.common.fill_config_defaults(config) - fdroidserver.update.config = config - - app = fdroidserver.metadata.App() - app.id = 'org.videolan.vlc' - build_dir = f'build/{app.id}' - subdir = 'application/app' - apps = {app.id: app} - build = fdroidserver.metadata.Build() - build.versionCode = 42 - build.gradle = ['yes'] - build.subdir = subdir - app['Builds'] = [build] - - first_value = 'first' - first_dir = Path(f'{build_dir}/{subdir}/fastlane/metadata/android/en-US') - first_dir.mkdir(parents=True) - (first_dir / 'title.txt').write_text(first_value) - fdroidserver.update.insert_localized_app_metadata(apps) - self.assertEqual(first_value, apps[app.id]['localized']['en-US']['name']) - - # I'm not sure that it is correct behavior for this path to - # override the above path, but it is how it is working now. It - # seems to me it should be the other way around, but that is - # really hard to implement using the current algorithm. - second_value = 'second' - second_dir = Path(f'{build_dir}/fastlane/metadata/android/en-US') - second_dir.mkdir(parents=True) - (second_dir / 'title.txt').write_text(second_value) - fdroidserver.update.insert_localized_app_metadata(apps) - self.assertEqual(second_value, apps[app.id]['localized']['en-US']['name']) - def test_name_title_scraping(self): """metadata file --> fdroiddata localized files --> fastlane/triple-t in app source --> APK""" shutil.copytree(basedir, self.testdir, dirs_exist_ok=True) @@ -1375,7 +1266,7 @@ class UpdateTest(unittest.TestCase): if apk['packageName'] == 'com.politedroid' and apk['versionCode'] == 3: antiFeatures = apk.get('antiFeatures') self.assertTrue('KnownVuln' in antiFeatures) - self.assertEqual(2, len(antiFeatures)) + self.assertEqual(3, len(antiFeatures)) foundtest = True self.assertTrue(foundtest) diff --git a/tests/test_vcs.py b/tests/test_vcs.py index a007feae..2b640a9e 100755 --- a/tests/test_vcs.py +++ b/tests/test_vcs.py @@ -7,8 +7,7 @@ from git import Repo import fdroidserver.common import fdroidserver.metadata - -from .shared_test_code import VerboseFalseOptions, mkdtemp +from .shared_test_code import mkdtemp, VerboseFalseOptions class VCSTest(unittest.TestCase): diff --git a/tests/test_verify.py b/tests/test_verify.py index e5a2f7c4..f9da9092 100755 --- a/tests/test_verify.py +++ b/tests/test_verify.py @@ -6,11 +6,13 @@ import shutil import sys import tempfile import unittest + from pathlib import Path from unittest.mock import patch from fdroidserver import verify + TEST_APP_ENTRY = { "1539780240.3885746": { "local": {