at master 124 lines 4.4 kB view raw
1diff --git a/aab/builder.py b/aab/builder.py 2index 5c3805c..7dfe595 100644 3--- a/aab/builder.py 4+++ b/aab/builder.py 5@@ -77,7 +77,7 @@ class AddonBuilder: 6 self._config = Config() 7 self._path_dist_module = PATH_DIST / "src" / self._config["module_name"] 8 9- def build(self, qt_versions: List[QtVersion], disttype="local", pyenv=None): 10+ def build(self, qt_versions: List[QtVersion], disttype="local", pyenv=None, modtime=None): 11 logging.info( 12 "\n--- Building %s %s for %s ---\n", 13 self._config["display_name"], 14@@ -86,7 +86,7 @@ class AddonBuilder: 15 ) 16 17 self.create_dist() 18- self.build_dist(qt_versions=qt_versions, disttype=disttype, pyenv=pyenv) 19+ self.build_dist(qt_versions=qt_versions, disttype=disttype, pyenv=pyenv, modtime=modtime) 20 21 return self.package_dist(qt_versions=qt_versions, disttype=disttype) 22 23@@ -102,7 +102,7 @@ class AddonBuilder: 24 PATH_DIST.mkdir(parents=True) 25 Git().archive(self._version, PATH_DIST) 26 27- def build_dist(self, qt_versions: List[QtVersion], disttype="local", pyenv=None): 28+ def build_dist(self, qt_versions: List[QtVersion], disttype="local", pyenv=None, modtime=None): 29 self._copy_licenses() 30 if self._path_changelog.exists(): 31 self._copy_changelog() 32@@ -111,7 +111,7 @@ class AddonBuilder: 33 if self._callback_archive: 34 self._callback_archive() 35 36- self._write_manifest(disttype) 37+ self._write_manifest(disttype, modtime=modtime) 38 39 ui_builder = UIBuilder(dist=PATH_DIST, config=self._config) 40 41@@ -162,12 +162,13 @@ class AddonBuilder: 42 43 return out_path 44 45- def _write_manifest(self, disttype): 46+ def _write_manifest(self, disttype, modtime=None): 47 ManifestUtils.generate_and_write_manifest( 48 addon_properties=self._config, 49 version=self._version, 50 dist_type=disttype, 51 target_dir=self._path_dist_module, 52+ modtime=modtime, 53 ) 54 55 def _copy_licenses(self): 56diff --git a/aab/cli.py b/aab/cli.py 57index 2ce6425..0956e98 100644 58--- a/aab/cli.py 59+++ b/aab/cli.py 60@@ -89,7 +89,7 @@ def build(args): 61 total = len(dists) 62 for dist in dists: 63 logging.info("\n=== Build task %s/%s ===", cnt, total) 64- builder.build(qt_versions=qt_versions, disttype=dist) 65+ builder.build(qt_versions=qt_versions, disttype=dist, modtime=args.modtime) 66 cnt += 1 67 68 69@@ -146,7 +146,7 @@ def build_dist(args): 70 total = len(dists) 71 for dist in dists: 72 logging.info("\n=== Build task %s/%s ===", cnt, total) 73- builder.build_dist(qt_versions=qt_versions, disttype=dist) 74+ builder.build_dist(qt_versions=qt_versions, disttype=dist, modtime=args.modtime) 75 cnt += 1 76 77 78@@ -204,6 +204,12 @@ def construct_parser(): 79 default="local", 80 choices=["local", "ankiweb", "all"], 81 ) 82+ dist_parent.add_argument( 83+ "--modtime", 84+ help="Last modified timestamp", 85+ type=int, 86+ required=False, 87+ ) 88 89 build_parent = argparse.ArgumentParser(add_help=False) 90 build_parent.add_argument( 91diff --git a/aab/manifest.py b/aab/manifest.py 92index fc0038d..355e370 100644 93--- a/aab/manifest.py 94+++ b/aab/manifest.py 95@@ -49,10 +49,11 @@ class ManifestUtils: 96 version: str, 97 dist_type: DistType, 98 target_dir: Path, 99+ modtime=None, 100 ): 101 logging.info("Writing manifest...") 102 manifest = cls.generate_manifest_from_properties( 103- addon_properties=addon_properties, version=version, dist_type=dist_type 104+ addon_properties=addon_properties, version=version, dist_type=dist_type, modtime=modtime 105 ) 106 cls.write_manifest(manifest=manifest, target_dir=target_dir) 107 108@@ -62,6 +63,7 @@ class ManifestUtils: 109 addon_properties: Config, 110 version: str, 111 dist_type: DistType, 112+ modtime=None, 113 ) -> Dict[str, Any]: 114 manifest = { 115 "name": addon_properties["display_name"], 116@@ -71,7 +73,7 @@ class ManifestUtils: 117 "version": version, 118 "homepage": addon_properties.get("homepage", ""), 119 "conflicts": deepcopy(addon_properties["conflicts"]), 120- "mod": Git().modtime(version), 121+ "mod": modtime if modtime is not None else Git().modtime(version), 122 } 123 124 # Add version specifiers: