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