mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-13 14:32:28 +03:00
Merge branch 'only-copy-icons-if-they-changed' into 'master'
only copy icons into repo/ if they changed See merge request fdroid/fdroidserver!1664
This commit is contained in:
commit
51b55963a5
3 changed files with 50 additions and 6 deletions
|
@ -55,6 +55,7 @@ environment variable to include.
|
||||||
import copy
|
import copy
|
||||||
import difflib
|
import difflib
|
||||||
from typing import List
|
from typing import List
|
||||||
|
import filecmp
|
||||||
import git
|
import git
|
||||||
import glob
|
import glob
|
||||||
import io
|
import io
|
||||||
|
@ -812,7 +813,10 @@ def load_localized_config(name, repodir):
|
||||||
icons_dir = os.path.join(repodir, 'icons')
|
icons_dir = os.path.join(repodir, 'icons')
|
||||||
if not os.path.exists(icons_dir):
|
if not os.path.exists(icons_dir):
|
||||||
os.makedirs(icons_dir, exist_ok=True)
|
os.makedirs(icons_dir, exist_ok=True)
|
||||||
shutil.copy(os.path.join("config", value), icons_dir)
|
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)
|
||||||
ret[afname][key][locale] = file_entry(
|
ret[afname][key][locale] = file_entry(
|
||||||
os.path.join(icons_dir, value)
|
os.path.join(icons_dir, value)
|
||||||
)
|
)
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import filecmp
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -1460,19 +1461,18 @@ def insert_localized_ios_app_metadata(apps_with_packages):
|
||||||
fdroidserver.update.copy_ios_screenshots_to_repo(screenshots, package_name)
|
fdroidserver.update.copy_ios_screenshots_to_repo(screenshots, package_name)
|
||||||
|
|
||||||
# lookup icons, copy them and put them into app
|
# lookup icons, copy them and put them into app
|
||||||
icon_path = _get_ipa_icon(Path('build') / package_name)
|
icon_src = _get_ipa_icon(Path('build') / package_name)
|
||||||
icon_dest = Path('repo') / package_name / 'icon.png' # for now just assume png
|
icon_dest = Path('repo') / package_name / 'icon.png' # for now just assume png
|
||||||
icon_stat = os.stat(icon_path)
|
|
||||||
app['iconv2'] = {
|
app['iconv2'] = {
|
||||||
DEFAULT_LOCALE: {
|
DEFAULT_LOCALE: {
|
||||||
'name': str(icon_dest).lstrip('repo'),
|
'name': str(icon_dest).lstrip('repo'),
|
||||||
'sha256': common.sha256sum(icon_dest),
|
'sha256': common.sha256sum(icon_dest),
|
||||||
'size': icon_stat.st_size,
|
'size': os.path.getsize(icon_src),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if not icon_dest.exists():
|
if not icon_dest.exists() or not filecmp.cmp(icon_src, icon_dest):
|
||||||
icon_dest.parent.mkdir(parents=True, exist_ok=True)
|
icon_dest.parent.mkdir(parents=True, exist_ok=True)
|
||||||
shutil.copy(icon_path, icon_dest)
|
shutil.copy2(icon_src, icon_dest)
|
||||||
|
|
||||||
|
|
||||||
def scan_repo_files(apkcache, repodir, knownapks, use_date_from_file=False):
|
def scan_repo_files(apkcache, repodir, knownapks, use_date_from_file=False):
|
||||||
|
|
|
@ -2815,6 +2815,46 @@ class CommonTest(SetUpTearDownMixin, unittest.TestCase):
|
||||||
)
|
)
|
||||||
self.assertEqual(['en-US'], list(categories['GuardianProject']['name'].keys()))
|
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):
|
def test_load_localized_config_0_file(self):
|
||||||
os.chdir(self.testdir)
|
os.chdir(self.testdir)
|
||||||
os.mkdir('config')
|
os.mkdir('config')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue