]> git.phdru.name Git - phdru.name/phdru.name.git/blob - dotfiles2html/dotfiles2html.py
Start/first/last links.
[phdru.name/phdru.name.git] / dotfiles2html / dotfiles2html.py
1 #! /usr/bin/env python
2
3 __version__ = "$Revision$"[11:-2]
4 __revision__ = "$Id$"[5:-2]
5 __date__ = "$Date$"[7:-2]
6 __author__ = "Oleg Broytman <phd@phd.pp.ru>"
7 __copyright__ = "Copyright (C) 2004-2010 PhiloSoft Design"
8
9 import os, shutil, filecmp
10 os.umask(0022) # octal; -rw-r--r--
11
12 from m_lib.m_path import get_homedir
13 home_dir = get_homedir()
14
15
16 def add_headers(fname, start, prev, next):
17    head_fname = os.path.join(home_dir, fname + ".head")
18    head_file = open(head_fname, 'r')
19    head = head_file.read()
20    head_file.close()
21
22    html_fname = fname + ".html"
23    html_file = open(html_fname, 'r')
24    html = html_file.read()
25    html_file.close()
26
27    if fname in ("init.py", "pdbrc.py"):
28        dot_name = fname
29        txt_name = fname + '.txt'
30    else:
31        dot_name = '.' + fname
32        txt_name = fname
33
34    html_file = open(html_fname, 'w')
35    html_file.write("#extends phd_pp_ru\n")
36    html_file.write("#implements respond\n")
37    html_file.write("#attr $Title = \"%s\"\n" % dot_name)
38    html_file.write("#attr $Copyright = 2003\n")
39    if start:
40       html_file.write("#attr $Start = \"index.html\"\n")
41    html_file.write("#attr $First = \"profile.html\"\n")
42    if prev:
43       html_file.write("#attr $Prev = \"%s.html\"\n" % prev)
44    if next:
45       html_file.write("#attr $Next = \"%s.html\"\n" % next)
46    html_file.write("#attr $Last = \"pdbrc.py.html\"\n")
47    html_file.write('#attr $alternates = (("Plain text version", "text/plain", "%s"),)' % txt_name)
48    html_file.write("\n")
49    html_file.write("#def body_html\n")
50    html_file.write("#raw\n")
51    html_file.write(head)
52    html_file.write("\n")
53    html_file.write(html)
54    html_file.write("#end raw\n")
55    html_file.write("#end def\n")
56    html_file.write("$phd_pp_ru.respond(self)\n")
57    html_file.close()
58
59
60 file_types = (("profile", "sh"), ("shellrc", "sh"), ("fvwm2rc", "fvwm2m4"),
61     ("mailcap", "conf"), ("mime.types", "conf"),
62     ("muttrc", "muttrc"), ("procmailrc", "procmail"),
63     ("vimrc", "vim"), ("gvimrc", "vim"),
64     ("init.py", "python"), ("pdbrc", "python"), ("pdbrc.py", "python"),
65     ("bindings", "conf"), ("menu", "conf"))
66 ft_len = len(file_types)
67
68 for i, (fname, ftype) in enumerate(file_types):
69    if os.path.exists('.' + fname) and not os.path.exists(fname):
70       shutil.copy2('.' + fname, fname)
71
72    if fname == 'vimrc' and os.path.exists(fname):
73       file = open('vimrc', 'r')
74       text = file.read()
75       file.close()
76       file = open('vimrc', 'w')
77       file.write(text.replace('\e', '<Esc>'))
78       file.close()
79
80    elif fname == 'menu' and os.path.exists(fname):
81       file = open('menu', 'r')
82       text = file.read()
83       file.close()
84       file = open('menu', 'w')
85       text = text.replace('mplay', 'mplayer')
86       text = text.replace('mplayerer', 'mplayer')
87       file.write(text)
88       file.close()
89
90    if not os.path.exists(fname):
91       continue
92
93    os.system("""exec gvim -f -c "set filetype=%s" -c ":source %s/dotfile2html.vim" "%s"
94       """ % (ftype, home_dir, fname))
95
96    if i == 0:
97       start = None
98       prev = None
99    else:
100       start = True
101       prev = file_types[i-1][0]
102    if i >= ft_len - 1:
103       next = None
104    else:
105       next = file_types[i+1][0]
106    add_headers(fname, start, prev, next)
107
108    if os.path.exists(fname + ".tmpl") and filecmp.cmp(fname + ".html", fname + ".tmpl"):
109       os.remove(fname + ".html")
110    else:
111       os.rename(fname + ".html", fname + ".tmpl")
112
113    if fname == 'vimrc' and os.path.exists('.' + fname):
114       shutil.copy2('.' + fname, fname)
115
116    if fname.endswith('.py'):
117        new_name = fname + '.txt'
118        os.rename(fname, new_name)
119        fname = new_name
120
121    if os.path.exists(fname):
122        os.chmod(fname, 0644)