#!/usr/bin/env python3 import os import re import tempfile def parse_env_file(fname): envs = {} env_reg = re.compile('^(?:\s*export)?\s*(.*)\s*=\s*(.*)\s*$') with open(fname, 'r') as f: for line in f: if '=' not in line: continue m = env_reg.match(line) envs[m.group(1)] = m.group(2) return envs def mutilate_figure_name(fig_fname, envs): return fig_fname if __name__ == "__main__": from argparse import ArgumentParser parser = ArgumentParser() #parser.add_argument('-f', '--figures', nargs='*') parser.add_argument("-d", "--directories", nargs='*') parser.add_argument('out_dir', default='./figures', type=str) args = parser.parse_args() os.makedirs(args.out_dir, exist_ok=True) #with open(args.out_file, 'w') as fp: if True: for d in args.directories: d = os.path.realpath(d) fig_dir = os.path.join(d, 'figures') env_fname = os.path.join(d, 'env.sh') if not os.path.exists(fig_dir): print(f"Cannot find {fig_dir}") continue ## parse properties from env.sh #envs = parse_env_file(env_fname) #print(envs, fig_dir) for f in os.listdir(fig_dir): fname, ext = os.path.splitext(f) dname = os.path.basename(d) if ext not in ['.pdf', '.png']: continue link_name = fname + "_" + dname + ext target = os.path.realpath(os.path.join(fig_dir, f)) tmpLink = tempfile.mktemp(dir=args.out_dir) os.symlink(target, tmpLink) os.rename(tmpLink, os.path.join(args.out_dir, link_name))