more comments, less debug

This commit is contained in:
Julian Daube 2020-04-16 11:59:58 +02:00
parent e5285bf94c
commit 768b5d81b4

20
main.py
View File

@ -6,16 +6,18 @@ import os
from pathlib import Path from pathlib import Path
import shutil import shutil
# parse arguments
parser = argparse.ArgumentParser(description="parse netlist and pack all references to current working directory") parser = argparse.ArgumentParser(description="parse netlist and pack all references to current working directory")
parser.add_argument("files", nargs="*", type=argparse.FileType("r"), default=sys.stdin) parser.add_argument("files", nargs="*", type=argparse.FileType("r"), default=sys.stdin)
parser.add_argument("-d", action="store_const", const=True, default=False, help="Dryrun") parser.add_argument("-d", action="store_const", const=True, default=False, help="Dryrun")
args = parser.parse_args() args = parser.parse_args()
print(args.d)
fileregex = re.compile(r"(?<!\w)file=\"(.*?)\"") fileregex = re.compile(r"(?<!\w)file=\"(.*?)\"")
files = {} files = {}
# process all netlists
for file in args.files: for file in args.files:
location = Path(file.name) location = Path(file.name)
print(f"parsing {file.name}") print(f"parsing {file.name}")
@ -25,12 +27,16 @@ for file in args.files:
with open(location.name, "w+") as outfile: with open(location.name, "w+") as outfile:
last = 0 last = 0
# iterate over all matches
for match in fileregex.finditer(content): for match in fileregex.finditer(content):
start = match.start(1) start = match.start(1)
end = match.end(1) end = match.end(1)
path = Path(match.group(1)) path = Path(match.group(1))
destpath = path destpath = path
# build the destination in the current folder
# for the retrieved file reference
if path.is_absolute(): if path.is_absolute():
try: try:
destpath = path.relative_to(location.parent) destpath = path.relative_to(location.parent)
@ -42,35 +48,37 @@ for file in args.files:
if destpath.parts[0] == "..": if destpath.parts[0] == "..":
destpath = Path(*destpath.parts[1:]) destpath = Path(*destpath.parts[1:])
# write the new path the new netlist file
outfile.write(content[last:start]) outfile.write(content[last:start])
outfile.write(str(destpath)) outfile.write(str(destpath))
# remember file to be copied for later
files[path] = destpath files[path] = destpath
last = end last = end
outfile.write(content[last:]) outfile.write(content[last:])
# do dryrun # do dryrun if it is wanted
if args.d: if args.d:
for file in files: for file in files:
print(f"copy {file} -> {files[file]}") print(f"copy {file} -> {files[file]}")
exit(0) exit(0)
# copy all files found in netlist earlier
for file in files: for file in files:
src = Path(file) src = Path(file)
dst = Path(files[file]) dst = Path(files[file])
if not src.exists(): if not src.exists():
# create dir
print(f"src does not exist: {str(src)}") print(f"src does not exist: {str(src)}")
continue continue
# create directory
dst.parent.mkdir(parents=True, exist_ok=True) dst.parent.mkdir(parents=True, exist_ok=True)
print(file, files[file])
shutil.copyfile(src, dst) shutil.copyfile(src, dst)