]> git.phdru.name Git - phdru.name/phdru.name.git/blobdiff - dotfiles2html/dotfiles2html.py
Escape the escape literal
[phdru.name/phdru.name.git] / dotfiles2html / dotfiles2html.py
index 2b96e7f22ab9242f38fbb9720e54ff55db1bb187..640cf15625567c6c9d126d41820e230249510fdc 100755 (executable)
@@ -1,10 +1,7 @@
 #! /usr/bin/env python
 
-__version__ = "$Revision$"[11:-2]
-__revision__ = "$Id$"[5:-2]
-__date__ = "$Date$"[7:-2]
-__author__ = "Oleg Broytman <phd@phd.pp.ru>"
-__copyright__ = "Copyright (C) 2004-2009 PhiloSoft Design"
+__author__ = "Oleg Broytman <phd@phdru.name>"
+__copyright__ = "Copyright (C) 2004-2013 PhiloSoft Design"
 
 import os, shutil, filecmp
 os.umask(0022) # octal; -rw-r--r--
@@ -13,7 +10,7 @@ from m_lib.m_path import get_homedir
 home_dir = get_homedir()
 
 
-def add_headers(fname, prev, next):
+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()
@@ -32,15 +29,19 @@ def add_headers(fname, prev, next):
        txt_name = fname
 
    html_file = open(html_fname, 'w')
-   html_file.write("#extends phd_pp_ru\n")
+   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 $alternates = (("text/plain", "Plain text version", "%s"),)' % txt_name)
+   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")
@@ -49,53 +50,65 @@ def add_headers(fname, prev, next):
    html_file.write(html)
    html_file.write("#end raw\n")
    html_file.write("#end def\n")
-   html_file.write("$phd_pp_ru.respond(self)\n")
+   html_file.write("$phd_site.respond(self)\n")
    html_file.close()
 
 
-file_types = (("fvwm2rc", "fvwm2m4"),
-      ("mailcap", "conf"), ("mime.types", "conf"),
-      ("muttrc", "muttrc"), ("procmailrc", "procmail"),
-      ("vimrc", "vim"), ("gvimrc", "vim"),
-      ("init.py", "python"), ("pdbrc", "python"), ("pdbrc.py", "python"),
-      ("bindings", "conf"), ("menu", "conf"))
-ft_len = len(file_types)
+home_file_types = (("bashrc", "sh"), ("profile", "sh"), ("shellrc", "sh"),
+    ("fvwm2rc", "fvwm2m4"), ("mailcap", "conf"), ("mime.types", "conf"),
+    ("muttrc", "muttrc"), ("procmailrc", "procmail"), ("vimrc", "vim"))
 
-for i, (fname, ftype) in enumerate(file_types):
+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
+
    if fname == 'vimrc' and os.path.exists(fname):
       file = open('vimrc', 'r')
       text = file.read()
       file.close()
       file = open('vimrc', 'w')
-      file.write(text.replace('\e', '<Esc>'))
+      file.write(text.replace('\033', '<Esc>'))
       file.close()
 
-   elif fname == 'menu' and os.path.exists(fname):
-      file = open('menu', 'r')
+   elif fname in ('mailcap', 'mc.ext', 'menu') and os.path.exists(fname):
+      file = open(fname, 'r')
       text = file.read()
       file.close()
-      file = open('menu', 'w')
-      file.write(text.replace('mplay', 'mplayer'))
+      file = open(fname, 'w')
+      text = text.replace('mplay', 'mplayer')
+      text = text.replace('mplayerer', 'mplayer')
+      if fname == 'mailcap':
+         text = text.replace(
+            '-a -n "`which smplayer`" -a -n "`which smplayer`"',
+            '-a -n "`which smplayer`"')
+         text = text.replace(
+            '-a -n "`which mplayer`" -a -n "`which mplayer`"',
+            '-a -n "`which mplayer`"')
+      file.write(text)
       file.close()
 
-   if not os.path.exists(fname):
-      continue
-
    os.system("""exec gvim -f -c "set filetype=%s" -c ":source %s/dotfile2html.vim" "%s"
       """ % (ftype, home_dir, fname))
 
-   if i == 0:
+   first = file_types[0][0]
+   if i==0:
       prev = None
    else:
       prev = file_types[i-1][0]
-   if i >= ft_len - 1:
+   if i >= len(file_types) - 1:
       next = None
    else:
       next = file_types[i+1][0]
-   add_headers(fname, prev, next)
+   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")
@@ -112,3 +125,11 @@ for i, (fname, ftype) in enumerate(file_types):
 
    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)