Skip to content

Commit

Permalink
docgen: Don't use stdin and stdout
Browse files Browse the repository at this point in the history
The encoding on stdin and stdout are usually ascii and may cause problems
with writing unicode to it. Instead of this we open the file directly
and avoid dealing with annoying unicode encode/decode errors.
  • Loading branch information
infirit committed Jul 17, 2014
1 parent 68a6fc1 commit 3bd6fc7
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
2 changes: 1 addition & 1 deletion Makefile.am
Expand Up @@ -10,7 +10,7 @@ caja-dropbox: caja-dropbox.in serializeimages.py
chmod +x caja-dropbox

caja-dropbox.1: caja-dropbox.txt.in caja-dropbox docgen.py
python docgen.py $(PACKAGE_VERSION) < caja-dropbox.txt.in > caja-dropbox.txt
python docgen.py $(PACKAGE_VERSION) caja-dropbox.txt.in caja-dropbox.txt
$(RST2MAN) caja-dropbox.txt > caja-dropbox.1

SUBDIRS = data src
Expand Down
31 changes: 20 additions & 11 deletions docgen.py
@@ -1,25 +1,34 @@
from __future__ import unicode_literals
import sys
import datetime
import codecs

# heeeheee
env = {"__name__":"__notmain__"}
execfile("caja-dropbox", env)
commands = env["commands"]

f = open("AUTHORS", "r")
authors = '| ' + f.read().replace('\n', '\n| ')
f.close()
with codecs.open("AUTHORS", "r", "utf-8") as afile:
authors = '| ' + afile.read().replace('\n', '\n| ')

with codecs.open(sys.argv[2], "r", encoding="utf-8") as infile:
instr = infile.read()

formatted_commands = ""
for cmd in commands:
split = commands[cmd].__doc__.split('\n', 2)
formatted_commands += split[1].decode('ascii').replace(cmd, "`%s`" % cmd).replace("dropbox", "``dropbox``")
formatted_commands += split[2].decode('ascii').replace('\n', '\n | ')
formatted_commands += split[1].replace(cmd, "`%s`" % cmd).replace("dropbox", "``dropbox``")
formatted_commands += split[2].replace('\n', '\n | ')
formatted_commands += '\n\n'

sys.stdout.write(sys.stdin.read().replace\
('@AUTHORS@', authors).replace\
('@DATE@', datetime.date.today().isoformat()).replace\
('@PACKAGE_VERSION@', sys.argv[1]).replace\
('@SYNOPSIS@', '| '+'\n| '.join(commands[cmd].__doc__.split('\n', 2)[1].decode('ascii').replace(cmd, "`%s`" % cmd).replace("dropbox", "``dropbox``") for cmd in commands)).replace\
('@COMMANDS@', formatted_commands))
replace = {'@AUTHORS@': authors,
'@DATE@': datetime.date.today().isoformat(),
'@PACKAGE_VERSION@': sys.argv[1],
'@SYNOPSIS@': '| '+'\n| '.join(commands[cmd].__doc__.split('\n', 2)[1].replace(cmd, "`%s`" % cmd).replace("dropbox", "``dropbox``") for cmd in commands),
'@COMMANDS@': formatted_commands}

for r in replace.keys():
instr = instr.replace(r, replace[r])

with codecs.open(sys.argv[3], "w", encoding="utf-8") as outfile:
outfile.write(instr)

0 comments on commit 3bd6fc7

Please sign in to comment.