#! /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-2020 PhiloSoft Design"
-
-import os, shutil, filecmp
+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, prev, next):
- 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()
-
- html_file = open(html_fname, 'w')
- html_file.write("#extends phd_pp_ru\n")
- html_file.write("#implements respond\n")
- html_file.write("#attr $Title = \".%s\"\n" % fname)
- html_file.write("#attr $Copyright = 2003\n")
- 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"),)' % fname)
- 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_pp_ru.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"))
-ft_len = len(file_types)
-
-for i, (fname, ftype) in enumerate(file_types):
- if os.path.exists('.' + fname) and not os.path.exists(fname):
- shutil.copy2('.' + fname, fname)
- 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.close()
- if os.path.exists(fname):
- os.system("""exec gvim -f -c "set filetype=%s" -c ":source %s/dotfile2html.vim" "%s"
- """ % (ftype, home_dir, fname))
- if i == 0:
- prev = None
- else:
- prev = file_types[i-1][0]
- if i >= ft_len - 1:
- next = None
- else:
- next = file_types[i+1][0]
- add_headers(fname, prev, next)
- 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 == 'vimrc' and os.path.exists('.' + fname):
- shutil.copy2('.' + fname, fname)
- if fname.endswith('.py'):
- new_name = fname + '.txt'
- os.rename(fname, new_name)
- fname = new_name
- if os.path.exists(fname):
- os.chmod(fname, 0644)
+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', '<Esc>')
+ 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)