Update translation extractor so ternary expressions are not merged.
[blender.git] / doc / manpage / blender.1.py
1 #!/usr/bin/python
2
3 # ##### BEGIN GPL LICENSE BLOCK #####
4 #
5 #  This program is free software; you can redistribute it and/or
6 #  modify it under the terms of the GNU General Public License
7 #  as published by the Free Software Foundation; either version 2
8 #  of the License, or (at your option) any later version.
9 #
10 #  This program is distributed in the hope that it will be useful,
11 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #  GNU General Public License for more details.
14 #
15 #  You should have received a copy of the GNU General Public License
16 #  along with this program; if not, write to the Free Software Foundation,
17 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 #
19 # ##### END GPL LICENSE BLOCK #####
20
21 # <pep8 compliant>
22
23 import subprocess
24 import os
25 import sys
26
27 import time
28 import datetime
29
30
31 def man_format(data):
32     data = data.replace("-", "\\-")
33     data = data.replace("\t", "    ")
34     # data = data.replace("$", "\\fI")
35
36     data_ls = []
37     for w in data.split():
38         if w.startswith("$"):
39             w = "\\fI" + w[1:] + "\\fR"
40
41         data_ls.append(w)
42
43     data = data[:len(data) - len(data.lstrip())] + " ".join(data_ls)
44
45     return data
46
47 # allow passing blender as argument
48 if sys.argv[-1].endswith(os.sep + "blender"):
49     blender_bin = sys.argv[-1]
50 else:
51     blender_bin = os.path.join(os.path.dirname(__file__), "../../blender.bin")
52
53 cmd = [blender_bin, "--help"]
54 print("  executing:", " ".join(cmd))
55 blender_help = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0].decode(encoding="utf-8")
56
57 blender_version = subprocess.Popen([blender_bin, "--version"], stdout=subprocess.PIPE).communicate()[0].decode(encoding="utf-8").strip()
58 blender_version = blender_version.split("Build")[0]
59
60 date_string = datetime.date.fromtimestamp(time.time()).strftime("%B %d, %Y")
61
62 filepath = os.path.splitext(__file__)[0]
63
64 file = open(filepath, "w")
65
66 fw = file.write
67
68 fw('.TH "BLENDER" "1" "%s" "Blender %s"\n' % (date_string, blender_version.replace(".", "\\&.")))
69
70 fw('''
71 .SH NAME
72 blender \- a 3D modelling and rendering package''')
73
74 fw('''
75 .SH SYNOPSIS
76 .B blender [args ...] [file] [args ...]''')
77
78 fw('''
79 .br
80 .SH DESCRIPTION
81 .PP
82 .B blender
83 is a 3D modelling and rendering package. It is the in-house software of a high quality animation studio, Blender has proven to be an extremely fast and versatile design instrument. The software has a personal touch, offering a unique approach to the world of Three Dimensions.
84
85 Use Blender to create TV commercials, to make technical visualizations, business graphics, to do some morphing, or design user interfaces. You can easy build and manage complex environments. The renderer is versatile and extremely fast. All basic animation principles (curves & keys) are well implemented.
86
87 http://www.blender.org''')
88
89 fw('''
90 .SH OPTIONS''')
91
92 fw("\n\n")
93
94 lines = [line.rstrip() for line in blender_help.split("\n")]
95
96 while lines:
97     l = lines.pop(0)
98     if l.startswith("Environment Variables:"):
99         fw('.SH "ENVIRONMENT VARIABLES"\n')
100     elif l.endswith(":"):  # one line
101         fw('.SS "%s"\n\n' % l)
102     elif l.startswith("-") or l.startswith("/"):  # can be multi line
103
104         fw('.TP\n')
105         fw('.B %s\n' % man_format(l))
106
107         while lines:
108             # line with no
109             if lines[0].strip() and len(lines[0].lstrip()) == len(lines[0]):  # no white space
110                 break
111
112             if not l:  # second blank line
113                 fw('.IP\n')
114             else:
115                 fw('.br\n')
116
117             l = lines.pop(0)
118             l = l[1:]  # remove first whitespace (tab)
119
120             fw('%s\n' % man_format(l))
121
122     else:
123         if not l.strip():
124             fw('.br\n')
125         else:
126             fw('%s\n' % man_format(l))
127
128 # footer
129
130 fw('''
131 .br
132 .SH SEE ALSO
133 .B yafaray(1)
134
135 .br
136 .SH AUTHORS
137 This manpage was written for a Debian GNU/Linux system by Daniel Mester
138 <mester@uni-bremen.de> and updated by Cyril Brulebois
139 <cyril.brulebois@enst-bretagne.fr> and Dan Eicher <dan@trollwerks.org>.
140 ''')
141
142 print("written:", filepath)