blob: 74d239d46e715cd27d3de63ff436620a240ed2c5 [file] [log] [blame]
"""A tool to replace files in the intelliJ resources.jar."""
import argparse
import sys
import zipfile
def write_entry(zip: zipfile.ZipFile, filename: str, arcname: str) -> str:
"""Writes the filename at arcname, returns the arcname."""
zip.write(filename, arcname)
return arcname
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument("--resources_jar", help="The resources jar being modified")
parser.add_argument("--out", help="The updated resources jar")
parser.add_argument("--svg", help="The icon as a SVG file")
parser.add_argument("--svg_small", help="The icon as a smaller SVG")
parser.add_argument("--splash", help="The splash screen")
parser.add_argument("--splash2x", help="The splash screen at 2x resolution for Retina displays")
args = parser.parse_args(argv)
with zipfile.ZipFile(args.out, 'w') as out:
replaced = []
replaced.append(write_entry(out, args.svg, 'artwork/androidstudio.svg'))
replaced.append(write_entry(out, args.svg_small, 'artwork/androidstudio-small.svg'))
replaced.append(write_entry(out, args.svg, 'artwork/preview/androidstudio.svg'))
replaced.append(write_entry(out, args.svg_small, 'artwork/preview/androidstudio-small.svg'))
replaced.append(write_entry(out, args.splash, 'artwork/studio_splash.png'))
replaced.append(write_entry(out, args.splash2x, 'artwork/[email protected]'))
with zipfile.ZipFile(args.resources_jar) as res_jar:
for f in replaced:
if f not in res_jar.namelist():
sys.exit(f"ERROR: file '{f}' not found in the original resource jar. Did the icon locations change?")
for e in res_jar.infolist():
if e.filename not in replaced:
out.writestr(e.filename, res_jar.read(e.filename))
if __name__ == "__main__":
main(sys.argv[1:])