diff --git a/aab/builder.py b/aab/builder.py index 5c3805c..7dfe595 100644 --- a/aab/builder.py +++ b/aab/builder.py @@ -77,7 +77,7 @@ class AddonBuilder: self._config = Config() self._path_dist_module = PATH_DIST / "src" / self._config["module_name"] - def build(self, qt_versions: List[QtVersion], disttype="local", pyenv=None): + def build(self, qt_versions: List[QtVersion], disttype="local", pyenv=None, modtime=None): logging.info( "\n--- Building %s %s for %s ---\n", self._config["display_name"], @@ -86,7 +86,7 @@ class AddonBuilder: ) self.create_dist() - self.build_dist(qt_versions=qt_versions, disttype=disttype, pyenv=pyenv) + self.build_dist(qt_versions=qt_versions, disttype=disttype, pyenv=pyenv, modtime=modtime) return self.package_dist(qt_versions=qt_versions, disttype=disttype) @@ -102,7 +102,7 @@ class AddonBuilder: PATH_DIST.mkdir(parents=True) Git().archive(self._version, PATH_DIST) - def build_dist(self, qt_versions: List[QtVersion], disttype="local", pyenv=None): + def build_dist(self, qt_versions: List[QtVersion], disttype="local", pyenv=None, modtime=None): self._copy_licenses() if self._path_changelog.exists(): self._copy_changelog() @@ -111,7 +111,7 @@ class AddonBuilder: if self._callback_archive: self._callback_archive() - self._write_manifest(disttype) + self._write_manifest(disttype, modtime=modtime) ui_builder = UIBuilder(dist=PATH_DIST, config=self._config) @@ -162,12 +162,13 @@ class AddonBuilder: return out_path - def _write_manifest(self, disttype): + def _write_manifest(self, disttype, modtime=None): ManifestUtils.generate_and_write_manifest( addon_properties=self._config, version=self._version, dist_type=disttype, target_dir=self._path_dist_module, + modtime=modtime, ) def _copy_licenses(self): diff --git a/aab/cli.py b/aab/cli.py index 2ce6425..0956e98 100644 --- a/aab/cli.py +++ b/aab/cli.py @@ -89,7 +89,7 @@ def build(args): total = len(dists) for dist in dists: logging.info("\n=== Build task %s/%s ===", cnt, total) - builder.build(qt_versions=qt_versions, disttype=dist) + builder.build(qt_versions=qt_versions, disttype=dist, modtime=args.modtime) cnt += 1 @@ -146,7 +146,7 @@ def build_dist(args): total = len(dists) for dist in dists: logging.info("\n=== Build task %s/%s ===", cnt, total) - builder.build_dist(qt_versions=qt_versions, disttype=dist) + builder.build_dist(qt_versions=qt_versions, disttype=dist, modtime=args.modtime) cnt += 1 @@ -204,6 +204,12 @@ def construct_parser(): default="local", choices=["local", "ankiweb", "all"], ) + dist_parent.add_argument( + "--modtime", + help="Last modified timestamp", + type=int, + required=False, + ) build_parent = argparse.ArgumentParser(add_help=False) build_parent.add_argument( diff --git a/aab/manifest.py b/aab/manifest.py index fc0038d..355e370 100644 --- a/aab/manifest.py +++ b/aab/manifest.py @@ -49,10 +49,11 @@ class ManifestUtils: version: str, dist_type: DistType, target_dir: Path, + modtime=None, ): logging.info("Writing manifest...") manifest = cls.generate_manifest_from_properties( - addon_properties=addon_properties, version=version, dist_type=dist_type + addon_properties=addon_properties, version=version, dist_type=dist_type, modtime=modtime ) cls.write_manifest(manifest=manifest, target_dir=target_dir) @@ -62,6 +63,7 @@ class ManifestUtils: addon_properties: Config, version: str, dist_type: DistType, + modtime=None, ) -> Dict[str, Any]: manifest = { "name": addon_properties["display_name"], @@ -71,7 +73,7 @@ class ManifestUtils: "version": version, "homepage": addon_properties.get("homepage", ""), "conflicts": deepcopy(addon_properties["conflicts"]), - "mod": Git().modtime(version), + "mod": modtime if modtime is not None else Git().modtime(version), } # Add version specifiers: