nexus-am/tools/utils.py

38 lines
937 B
Python

from pathlib import Path
import re, shutil
AM_HOME = (Path(__file__) / '../..').resolve()
EXPORT_DIR = AM_HOME / 'tools' / 'export'
def convert(r):
return r.replace('.', r'\.').replace('*', r'[^/]*')
def list_filter(path, xs):
for x in xs:
if re.search(convert(x), path):
return True
return False
def export(white_list, black_list):
def files():
for abspath in AM_HOME.rglob('*'):
if abspath.is_file():
path = abspath.relative_to(AM_HOME)
path_str = '/' + str(path)
white = list_filter(path_str, white_list)
black = list_filter(path_str, black_list)
if white and not black:
print('COPY', path)
yield abspath, path
try:
shutil.rmtree(EXPORT_DIR)
except:
pass
for abspath, relpath in files():
src = abspath
dst = EXPORT_DIR / relpath
dst.parent.mkdir(parents=True, exist_ok=True)
shutil.copyfile(src, dst)