init
This commit is contained in:
+20
-2
@@ -60,6 +60,19 @@ def obfuscate_coruna_7z_header(standard_7z: bytes) -> bytes:
|
||||
|
||||
|
||||
def make_passworded_7z(member_name: str, payload: bytes, password: str) -> bytes:
|
||||
"""Build passworded 7z; cache by content so py7zr's random salt does not drift runs."""
|
||||
cache_key = sha256_hex(
|
||||
member_name.encode("utf-8")
|
||||
+ b"\0"
|
||||
+ password.encode("utf-8")
|
||||
+ b"\0"
|
||||
+ payload
|
||||
)
|
||||
cache_dir = LAB_ROOT / "out" / "7z_cache"
|
||||
cache_path = cache_dir / cache_key
|
||||
if cache_path.is_file():
|
||||
return cache_path.read_bytes()
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
root = Path(tmp)
|
||||
member = root / member_name
|
||||
@@ -67,7 +80,11 @@ def make_passworded_7z(member_name: str, payload: bytes, password: str) -> bytes
|
||||
archive = root / "out.7z"
|
||||
with py7zr.SevenZipFile(archive, mode="w", password=password) as handle:
|
||||
handle.write(member, arcname=member_name)
|
||||
return archive.read_bytes()
|
||||
data = archive.read_bytes()
|
||||
|
||||
cache_dir.mkdir(parents=True, exist_ok=True)
|
||||
cache_path.write_bytes(data)
|
||||
return data
|
||||
|
||||
|
||||
def extract_daily_config_bytes() -> bytes:
|
||||
@@ -139,7 +156,8 @@ def main() -> int:
|
||||
|
||||
if args.root:
|
||||
set_tree_root(args.root)
|
||||
ensure_tree_layout(tree_root())
|
||||
# sync-only: campaign dirs are web/<channel-id>/ and may not match ORIGINAL
|
||||
ensure_tree_layout(tree_root(), require_campaign=False)
|
||||
if args.apply:
|
||||
if not args.root:
|
||||
raise SystemExit("--apply requires --root <project-dir> (refusing to write into source/)")
|
||||
|
||||
Reference in New Issue
Block a user