12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/usr/bin/env python
- # -*- coding: UTF-8 -*-
-
- import jinja2
- import optparse
- import os
- import shutil
- import time
-
-
- TYPES = [u'brief', u'merkblatt', u'präsentation']
- TARGET_EXTENTION = u'.tex'
-
-
- def mkdir(path):
- """.. warning:: Needs to be documented
- """
- path=os.path.abspath(path)
- if not os.path.exists(os.path.dirname(path)):
- mkdir(os.path.dirname(path))
- if not os.path.exists(path):
- os.mkdir(path)
- return os.path.isdir(path)
-
-
- def get_path_replace_list():
- HOME_PATH_REPLACEMENT = '~'
- rv = []
- home_path = os.getenv("HOME")
- rv.append( (home_path, HOME_PATH_REPLACEMENT) )
- for p in os.listdir(home_path):
- full_path = os.path.join(home_path, p)
- if os.path.islink(full_path):
- rv.append( (os.path.realpath(full_path), os.path.join(HOME_PATH_REPLACEMENT, p)) )
- return rv
-
-
- template_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'latex_doc', 'templates')
- static_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'latex_doc', 'static')
-
-
- if __name__ == "__main__":
- parser = optparse.OptionParser("usage: %%prog [options] folder_for_document")
- parser.add_option("-t", "--type", dest="type", default=None, type="string", help="|".join(TYPES))
- parser.add_option("-f", "--force", dest="force", action="store_true", default=False)
- (options, args) = parser.parse_args()
- if len(args) != 1 or options.type is None or options.type not in TYPES:
- parser.print_help()
- else:
- target_file = os.path.join(os.path.abspath('.'), args[0])
- if not target_file.endswith(TARGET_EXTENTION):
- target_file = os.path.join(target_file, os.path.basename(target_file) + TARGET_EXTENTION)
- full_path = target_file
- for original, replacement in get_path_replace_list():
- if full_path.startswith(original):
- full_path = replacement + full_path[len(original):]
- break
- full_folder = os.path.dirname(full_path)
- filename = os.path.splitext(os.path.basename(target_file))[0]
- short_date = time.strftime('%d.%m.%Y')
- #
- # Main Actions
- #
- latex_jinja_env = jinja2.Environment(
- block_start_string = '\BLOCK{',
- block_end_string = '}',
- variable_start_string = '\VAR{',
- variable_end_string = '}',
- comment_start_string = '\#{',
- comment_end_string = '}',
- line_statement_prefix = '%_',
- line_comment_prefix = '%#',
- trim_blocks = True,
- autoescape = False,
- loader = jinja2.FileSystemLoader(template_path)
- )
- if not os.path.exists(target_file) or options.force:
- mkdir(os.path.dirname(target_file))
- with open(target_file, 'w') as fh:
- fh.write(latex_jinja_env.get_template(options.type + TARGET_EXTENTION).render(
- full_path=full_path,
- full_folder=full_folder,
- filename=filename,
- short_date=short_date).encode('UTF-8'))
- if options.type == 'merkblatt':
- shutil.copytree(os.path.join(static_path, options.type), os.path.join(os.path.dirname(target_file), 'icons'))
- else:
- print("File exists. Use option -f to create file")
|