mirror of
https://github.com/lifegpc/pythonscript.git
synced 2026-06-05 11:08:49 +08:00
pack-prog.py 支持打包pdb文件,支持添加自定义文件
This commit is contained in:
48
pack-prog.py
48
pack-prog.py
@@ -39,6 +39,12 @@ def add_path_ext(path: str) -> str:
|
|||||||
return path
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
def check_pdb(path: str) -> str:
|
||||||
|
p = splitext(path)[0] + '.pdb'
|
||||||
|
if exists(p):
|
||||||
|
return p
|
||||||
|
|
||||||
|
|
||||||
def check_needed_prog():
|
def check_needed_prog():
|
||||||
if system(f'ldd-rust --help > {devnull}'):
|
if system(f'ldd-rust --help > {devnull}'):
|
||||||
return False
|
return False
|
||||||
@@ -103,6 +109,12 @@ class Prog:
|
|||||||
print(f'add program: "{pro_w}"')
|
print(f'add program: "{pro_w}"')
|
||||||
self._loc.append(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):
|
def to_7z(self, output: str):
|
||||||
p = NamedTemporaryFile(delete=False)
|
p = NamedTemporaryFile(delete=False)
|
||||||
for i in self._loc:
|
for i in self._loc:
|
||||||
@@ -118,7 +130,8 @@ class Prog:
|
|||||||
remove(fp)
|
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:
|
if output is None:
|
||||||
output = 'prog.7z'
|
output = 'prog.7z'
|
||||||
if not check_needed_prog():
|
if not check_needed_prog():
|
||||||
@@ -135,18 +148,45 @@ def main(prog: List[str], output: str = None):
|
|||||||
p.add_prog(pro)
|
p.add_prog(pro)
|
||||||
for i in rel:
|
for i in rel:
|
||||||
p.add_dep(i)
|
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)
|
p.to_7z(output)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if len(argv) > 1:
|
if len(argv) > 1:
|
||||||
d = getopt(argv[1:], 'o:')
|
d = getopt(argv[1:], 'o:a:p:')
|
||||||
output = None
|
output = None
|
||||||
|
adds = None
|
||||||
|
pdbs = None
|
||||||
if len(d[0]):
|
if len(d[0]):
|
||||||
for i in d[0]:
|
for i in d[0]:
|
||||||
if i[0] == '-o':
|
if i[0] == '-o':
|
||||||
output = i[1]
|
output = i[1]
|
||||||
break
|
elif i[0] == '-a':
|
||||||
main(d[1], output)
|
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:
|
else:
|
||||||
print_help()
|
print_help()
|
||||||
|
|||||||
Reference in New Issue
Block a user