~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzr-man.py

  • Committer: Lalo Martins
  • Date: 2005-09-14 05:22:13 UTC
  • mfrom: (1185.1.10)
  • mto: (1185.1.22)
  • mto: This revision was merged to the branch mainline in revision 1390.
  • Revision ID: lalo@exoweb.net-20050914052213-2aa5c1005959abdf
merging from Robert's integration branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 
22
22
import os, sys
23
23
 
 
24
try:
 
25
    version_info = sys.version_info
 
26
except AttributeError:
 
27
    version_info = 1, 5 # 1.5 or older
 
28
 
 
29
 
 
30
REINVOKE = "__BZR_REINVOKE"    
 
31
NEED_VERS = (2, 3)
 
32
 
 
33
if version_info < NEED_VERS:
 
34
    if not os.environ.has_key(REINVOKE):
 
35
        # mutating os.environ doesn't work in old Pythons
 
36
        os.putenv(REINVOKE, "1")
 
37
        for python in 'python2.4', 'python2.3':
 
38
            try:
 
39
                os.execvp(python, [python] + sys.argv)
 
40
            except OSError:
 
41
                pass
 
42
    print >>sys.stderr, "bzr-man.py: error: cannot find a suitable python interpreter"
 
43
    print >>sys.stderr, "  (need %d.%d or later)" % NEED_VERS
 
44
    sys.exit(1)
 
45
if hasattr(os, "unsetenv"):
 
46
    os.unsetenv(REINVOKE)
 
47
 
24
48
import bzrlib, bzrlib.help
25
49
 
26
50
#>>> code taken from bzr (C) Canonical
67
91
 
68
92
    def parse_line(self, line):
69
93
        m = self.usage_exp.match(line)
70
 
        if line == '':
71
 
                return
72
94
        if m:
73
95
            if self.state == 0:
74
96
                if self.usage:
75
97
                    self.command_usage.append((self.command,self.usage,self.descr))
76
98
                    self.all_commands.append(self.command)
77
 
                self.usage = " ".join(line.split(" ")[1:])
 
99
                self.usage = line
78
100
                self.command = m.groups()[0]
79
101
            else:
80
 
                raise RuntimeError, "matching usage line in state %d" % state
 
102
                raise Error, "matching usage line in state %d" % state
81
103
            self.state = 1
82
104
            return
83
105
        m = self.descr_exp.match(line)
85
107
            if self.state == 1:
86
108
                self.descr = m.groups()[0]
87
109
            else:
88
 
                raise RuntimeError, "matching descr line in state %d" % state
 
110
                raise Error, "matching descr line in state %d" % state
89
111
            self.state = 0
90
112
            return
91
 
        raise RuntimeError, "Cannot parse this line ('%s')." % line
 
113
        raise Error, "Cannot parse this line"
92
114
 
93
115
    def end_parse(self):
94
116
        if self.state == 0:
96
118
                self.command_usage.append((self.command,self.usage,self.descr))
97
119
                self.all_commands.append(self.command)
98
120
        else:
99
 
            raise RuntimeError, "ending parse in state %d" % state
 
121
            raise Error, "ending parse in state %d" % state
100
122
 
101
123
    def write_to_manpage(self, outfile):
102
124
        bzrcmd = self.params["bzrcmd"]
103
125
        outfile.write('.SH "COMMAND OVERVIEW"\n')
104
126
        for (command,usage,descr) in self.command_usage:
105
 
            outfile.write('.TP\n.B "%s %s"\n%s\n' % (bzrcmd, usage, descr))
 
127
            outfile.write('.TP\n.B "%s %s"\n%s\n\n' % (bzrcmd, usage, descr))
106
128
 
107
129
 
108
130
class HelpReader:
172
194
Path where
173
195
.B "%(bzrcmd)s"
174
196
is to look for external command.
 
197
 
175
198
.TP
176
199
.I "BZREMAIL"
177
200
E-Mail address of the user. Overrides
179
202
.IR "EMAIL" .
180
203
Example content:
181
204
.I "John Doe <john@example.com>"
 
205
 
182
206
.TP
183
207
.I "EMAIL"
184
208
E-Mail address of the user. Overridden by the content of the file
185
209
.I "~/.bzr.conf/email"
186
210
and of the environment variable
187
211
.IR "BZREMAIL" .
 
212
 
188
213
.SH "FILES"
189
214
.TP
190
215
.I "~/.bzr.conf/"
195
220
.I "EMAIL"
196
221
environment variable. Example content:
197
222
.I "John Doe <john@example.com>"
 
223
 
198
224
.SH "SEE ALSO"
199
225
.UR http://www.bazaar-ng.org/
200
226
.BR http://www.bazaar-ng.org/,
202
228
.BR http://www.bazaar-ng.org/doc/
203
229
"""
204
230
 
205
 
def main(args=[]):
206
 
    """ main function
207
 
    :param  args:   command-line arguments (sys.argv[1:])
208
 
    :type   args:   list
209
 
    """
 
231
def main():
210
232
    t = time.time()
211
233
    tt = time.gmtime(t)
212
234
    params = \
221
243
    clp.end_parse()
222
244
 
223
245
    filename = "bzr.1"
224
 
    if len(args) == 1:
225
 
        filename = args[0]
 
246
    if len(sys.argv) == 2:
 
247
        filename = sys.argv[1]
226
248
    if filename == "-":
227
249
        outfile = sys.stdout
228
250
    else:
242
264
 
243
265
 
244
266
if __name__ == '__main__':
245
 
    main(sys.argv[1:])
 
267
    main()
246
268
 
247
269
 
248
270
#>>> code by HUN