#! /usr/bin/python3 import sys import re from geo import Geo if len(sys.argv) < 4: print("Usage:") print(" %s [ ...]" % (sys.argv[0], )) print("Operations:") print(" del_model Delete models with the name matching regular expression.") print(" geo_name Rename the name of the .geo .") print(" rename_model Rename model to .") exit() fn_in = sys.argv[1] fn_out = sys.argv[2] if fn_in == fn_out: print("Input and output filenames are identical. Refusing to run, to avoid accidental lose.") print("Reading '%s'..." % (fn_in, )) fh_in = open(fn_in, "rb") geo = Geo() geo.loadFromFile(fh_in) fh_in.close() print("Done.") print() arg_i = 3 while arg_i < len(sys.argv): operation = sys.argv[arg_i] arg_i += 1 if operation == "del_model": reg_exp_str = sys.argv[arg_i] arg_i += 1 reg_exp = re.compile(reg_exp_str) for i in range(len(geo.models) - 1, -1, -1): name = geo.models[i].name.decode("utf-8") if reg_exp.search(name) is not None: print("Remove: %s" % (name, )) del geo.models[i] else: print("Keep : %s" % (name, )) elif operation == "geo_name": name = sys.argv[arg_i] arg_i += 1 print("Rename GEO from '%s' to '%s'" % (geo.header_modelheader_name.decode("utf-8"), name)) geo.header_modelheader_name = bytes(name, "utf-8") elif operation == "rename_model": nameold = bytes(sys.argv[arg_i], "utf-8") namenew = bytes(sys.argv[arg_i+1], "utf-8") arg_i += 2 renamed = False for m in geo.models: if m.name == nameold: m.name = namenew print("Renamed model '%s' to '%s'" % (nameold.decode("utf-8"), namenew.decode("utf-8"))) renamed +=1 break if renamed <= 0: print(" **Warning!*** Rename failed, no model name matched '%s'." % (nameold.decode("utf-8"), )) else: print("Unknown operation: '%s'" % (operation, )) exit() print() print("Writing '%s'..." % (fn_out, )) fh_out = open(fn_out, "wb") geo.saveToFile(fh_out) fh_out.close() print("Done.")