#! /usr/bin/env python __author__ = "Oleg Broytman " __copyright__ = "Copyright (C) 2004-2020 PhiloSoft Design" import filecmp import os import re import shutil os.umask(0022) # octal; -rw-r--r-- from m_lib.m_path import get_homedir home_dir = get_homedir() def add_headers(fname, first, prev, next, last): head_fname = os.path.join(home_dir, fname + ".head") head_file = open(head_fname, 'r') head = head_file.read() head_file.close() html_fname = fname + ".html" html_file = open(html_fname, 'r') html = html_file.read() html_file.close() if fname in ("init.py", "pdbrc.py"): dot_name = fname txt_name = fname + '.txt' else: dot_name = '.' + fname txt_name = fname html_file = open(html_fname, 'w') if fname in ("muttrc", "procmailrc", "vimrc"): html_file.write("#encoding koi8-r\n") html_file.write("#extends phd_site\n") html_file.write("#implements respond\n") html_file.write("#attr $Title = \"%s\"\n" % dot_name) html_file.write("#attr $Copyright = 2003\n") html_file.write("#attr $First = \"%s.html\"\n" % first) if prev: html_file.write("#attr $Prev = \"%s.html\"\n" % prev) if next: html_file.write("#attr $Next = \"%s.html\"\n" % next) html_file.write("#attr $Last = \"%s.html\"\n" % last) html_file.write('#attr $alternates = (("Plain text version", "text/plain", "%s"),)' % txt_name) html_file.write("\n") html_file.write("#def body_html\n") html_file.write("#raw\n") html_file.write(head) html_file.write("\n") html_file.write(html) html_file.write("#end raw\n") html_file.write("#end def\n") html_file.write("$phd_site.respond(self)\n") html_file.close() home_file_types = ( ("bashrc", "sh"), ("profile", "sh"), ("shellrc", "sh"), ("mailcap", "conf"), ("mime.types", "conf"), ("muttrc", "muttrc"), ("procmailrc", "procmail"), ("gitconfig", "gitconfig"), ("vimrc", "vim"), ) mc_file_types = (("mc.ext", "conf"), ("menu", "conf")) python_file_types = (("init.py", "python"), ("pdbrc", "python"), ("pdbrc.py", "python")) def process_dotfile(i, fname, ftype, file_types): if os.path.exists('.' + fname) and not os.path.exists(fname): shutil.copy2('.' + fname, fname) if not os.path.exists(fname): return file = open(fname, 'r') text = file.read() file.close() text = re.sub('cgmem_nice \d+ ', '', text) if fname in ('mailcap', 'mc.ext', 'menu'): file = open(fname, 'w') text = text.replace('mplay', 'mplayer') text = text.replace('mplayerer', 'mplayer') if fname == 'mailcap': text = text.replace( '-a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`"', '-a -n "`which mplayer 2>/dev/null`"') file.write(text) file.close() elif fname == 'vimrc': file = open(fname, 'w') text = text.replace('\033', '') file.write(text) file.close() os.system("""exec gvim -f -c "set filetype=%s" -c ":source %s/dotfile2html.vim" "%s" """ % (ftype, home_dir, fname)) first = file_types[0][0] if i==0: prev = None else: prev = file_types[i-1][0] if i >= len(file_types) - 1: next = None else: next = file_types[i+1][0] last = file_types[-1][0] add_headers(fname, first, prev, next, last) if os.path.exists(fname + ".tmpl") and filecmp.cmp(fname + ".html", fname + ".tmpl"): os.remove(fname + ".html") else: os.rename(fname + ".html", fname + ".tmpl") if fname.endswith('.py'): new_name = fname + '.txt' os.rename(fname, new_name) fname = new_name if fname == 'vimrc' and os.path.exists('.' + fname): shutil.copy2('.' + fname, fname) if os.path.exists(fname): os.chmod(fname, 0644) def process_files(file_types): for i, (fname, ftype) in enumerate(file_types): process_dotfile(i, fname, ftype, file_types) process_files(home_file_types) process_files(mc_file_types) process_files(python_file_types)