From 610216d7b5aef1629dc4a84d2da6788cf78c66e1 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Sun, 20 Feb 2022 16:33:57 +0800 Subject: [PATCH] =?UTF-8?q?pack-prog.py=20=E6=94=AF=E6=8C=81=E6=89=93?= =?UTF-8?q?=E5=8C=85pdb=E6=96=87=E4=BB=B6=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pack-prog.py | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/pack-prog.py b/pack-prog.py index 81c0b72..58dda82 100644 --- a/pack-prog.py +++ b/pack-prog.py @@ -39,6 +39,12 @@ def add_path_ext(path: str) -> str: return path +def check_pdb(path: str) -> str: + p = splitext(path)[0] + '.pdb' + if exists(p): + return p + + def check_needed_prog(): if system(f'ldd-rust --help > {devnull}'): return False @@ -103,6 +109,12 @@ class Prog: print(f'add program: "{pro_w}"') self._loc.append(pro_w) + def add_file(self, path: str): + p = getWindowsPath(path) + if p not in self._loc: + print(f'add file: "{p}"') + self._loc.append(p) + def to_7z(self, output: str): p = NamedTemporaryFile(delete=False) for i in self._loc: @@ -118,7 +130,8 @@ class Prog: remove(fp) -def main(prog: List[str], output: str = None): +def main(prog: List[str], output: str = None, adds: List[str] = None, + pdbs: List[str] = None): if output is None: output = 'prog.7z' if not check_needed_prog(): @@ -135,18 +148,45 @@ def main(prog: List[str], output: str = None): p.add_prog(pro) for i in rel: p.add_dep(i) + if adds is not None: + for f in adds: + p.add_file(f) + if pdbs: + for i in pdbs: + pro = abspath(i) + pro = add_path_ext(pro) + rel = check_prog(pro) + if rel is None: + print(f'Can not get dependencies for {pro},') + exit(-1) + fn = check_pdb(pro) + if fn: + p.add_file(fn) + for i in rel: + fn = check_pdb(i) + if fn: + p.add_file(fn) p.to_7z(output) if __name__ == "__main__": if len(argv) > 1: - d = getopt(argv[1:], 'o:') + d = getopt(argv[1:], 'o:a:p:') output = None + adds = None + pdbs = None if len(d[0]): for i in d[0]: if i[0] == '-o': output = i[1] - break - main(d[1], output) + elif i[0] == '-a': + if adds is None: + adds = [] + adds.append(i[1]) + elif i[0] == '-p': + if pdbs is None: + pdbs = [] + pdbs.append(i[1]) + main(d[1], output, adds, pdbs) else: print_help()