blob: c86dcf39af46b1af4db78bb24109021d17bd6129 [file] [log] [blame]
"""Packages plugin files into a zip archive."""
import argparse
from itertools import izip
import time
import zipfile
parser = argparse.ArgumentParser()
parser.add_argument("--output", help="The output filename.", required=True)
parser.add_argument(
"files_to_zip", nargs="+", help="Sequence of exec_path, zip_path... pairs")
def pairwise(t):
it = iter(t)
return izip(it, it)
def main():
args = parser.parse_args()
# zipfile cannot be coaxed into putting a custom timestamp into the zip files,
# and we cannot modify the timestamp of the file itself (because it's a CAS
# entry on Forge). Therefore, we replace time.localtime().
time.localtime = lambda _: [2000, 1, 1, 0, 0, 0, 0, 0, 0]
outfile = zipfile.ZipFile(args.output, "w", zipfile.ZIP_DEFLATED)
for exec_path, zip_path in pairwise(args.files_to_zip):
outfile.write(exec_path, zip_path)
outfile.close()
if __name__ == "__main__":
main()