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