1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-09-21 04:10:37 +02:00

fix(deploy): missing index files trigger errors

This commit is contained in:
proletarius101 2024-06-05 18:10:22 +08:00
parent 76a31463b3
commit 4341343fa4
No known key found for this signature in database

View File

@ -96,6 +96,16 @@ def _get_index_includes(base_dir):
return index_includes return index_includes
def _remove_missing_files(files: List[str]) -> List[str]:
"""Remove files that are missing from the file system."""
existing = []
for f in files:
if os.path.exists(f):
existing.append(f)
return existing
def update_awsbucket(repo_section, is_index_only=False, verbose=False, quiet=False): def update_awsbucket(repo_section, is_index_only=False, verbose=False, quiet=False):
"""Upload the contents of the directory `repo_section` (including subdirectories) to the AWS S3 "bucket". """Upload the contents of the directory `repo_section` (including subdirectories) to the AWS S3 "bucket".
@ -299,8 +309,9 @@ def update_remote_storage_with_rclone(
if is_index_only: if is_index_only:
sources = _get_index_file_paths(repo_section) sources = _get_index_file_paths(repo_section)
sources = _remove_missing_files(sources)
else: else:
sources = repo_section sources = [repo_section]
for source in sources: for source in sources:
if isinstance(config['rclone_config'], str): if isinstance(config['rclone_config'], str):
@ -429,6 +440,7 @@ def update_awsbucket_libcloud(repo_section, is_index_only=False):
for name in files for name in files
] ]
files_to_upload = list(set(files_to_upload) & set(index_files)) files_to_upload = list(set(files_to_upload) & set(index_files))
files_to_upload = _remove_missing_files(files_to_upload)
else: else:
files_to_upload = [ files_to_upload = [
@ -534,6 +546,9 @@ def update_serverwebroot(serverwebroot, repo_section):
is_index_only = serverwebroot.get('index_only', False) is_index_only = serverwebroot.get('index_only', False)
logging.info('rsyncing ' + repo_section + ' to ' + url) logging.info('rsyncing ' + repo_section + ' to ' + url)
if is_index_only: if is_index_only:
files_to_upload = _get_index_file_paths(repo_section)
files_to_upload = _remove_missing_files(files_to_upload)
rsyncargs += _get_index_file_paths(repo_section) rsyncargs += _get_index_file_paths(repo_section)
rsyncargs += [f'{url}/{repo_section}/'] rsyncargs += [f'{url}/{repo_section}/']
logging.info(rsyncargs) logging.info(rsyncargs)
@ -733,6 +748,7 @@ def update_servergitmirrors(servergitmirrors, repo_section):
# make sure both paths have exactly one trailing slash # make sure both paths have exactly one trailing slash
if is_index_only: if is_index_only:
files_to_sync = _get_index_file_paths(str(workspace_dir / repo_section)) files_to_sync = _get_index_file_paths(str(workspace_dir / repo_section))
files_to_sync = _remove_missing_files(files_to_sync)
else: else:
files_to_sync = [str(workspace_dir / repo_section).rstrip('/') + '/'] files_to_sync = [str(workspace_dir / repo_section).rstrip('/') + '/']
common.local_rsync( common.local_rsync(