more comments, less debug
This commit is contained in:
parent
e5285bf94c
commit
768b5d81b4
20
main.py
20
main.py
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user