#!/usr/bin/env python3 import argparse, os #import docutils def basename(fname): '''Returns the name of the guide from either its name or its directory''' if os.path.isdir(os.path.join('guides',fname)): return fname elif os.path.isdir(fname): return os.path.basename(os.path.abspath(fname)) else: msg = '%s is not a valid directory' % fname raise argparse.ArgumentTypeError(msg) def build_latex(guide): '''Builds the LaTeX source for the guide''' build_dir = os.path.join('build',guide) tex_name = guide+'.tex' # DEBUG print('Building LaTeX...') if not os.path.isdir(build_dir): os.mkdir(build_dir) fp = open(os.path.join(build_dir,tex_name),'w') fp.close() def build_pdf(guide): '''Builds the A6 PDF for the guide''' build_dir = os.path.join('build',guide) dist_dir = os.path.join('dist','PDF') tex_name = guide+'.tex' pdf_name = guide+'.pdf' # check for prerequisites if not os.path.isfile(os.path.join(build_dir,tex_name)): build_latex(guide) # DEBUG print('Building PDF...') if not os.path.isdir(dist_dir): os.mkdir(dist_dir) fp = open(os.path.join(dist_dir,pdf_name),'w') fp.close() def build_nup_pdf(guide): '''Builds the nup-ed PDF for the guide''' dist_dir = os.path.join('dist','PDF') pdf_name = guide+'.pdf' nup_name = guide+'-A6suA4.pdf' # check for prerequisites if not os.path.isfile(os.path.join(dist_dir,pdf_name)): build_pdf(guide) # DEBUG print('Building nup PDF...') if not os.path.isdir(dist_dir): os.mkdir(dist_dir) fp = open(os.path.join(dist_dir,nup_name),'w') fp.close() def main(): parser = argparse.ArgumentParser(description='Build a distribution format of a 1800 words article') parser.add_argument('guide', nargs='+', type=basename, help='Source directory of the article') parser.add_argument('-l','--latex',action='store_true', help='Generate LaTeX source') parser.add_argument('-p','--pdf',action='store_true', help='Generate PDF') parser.add_argument('-n','--nup-pdf',action='store_true', help='Generate nup-ed A4 PDF') args = parser.parse_args() for guide in args.guide: if args.latex: build_latex(guide) if args.pdf: build_pdf(guide) if args.nup_pdf: build_nup_pdf(guide) if __name__ == '__main__': main()