/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
1
# Copyright 2006-2007 Canonical Ltd.
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
17
"""Generate ReStructuredText source for the User Reference Manual.
18
Loosely based on the manpage generator autodoc_man.py.
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
19
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
20
Written by Alexander Belchenko and the Bazaar community.
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
21
"""
22
23
import os
24
import sys
25
import textwrap
26
import time
27
28
import bzrlib
29
import bzrlib.help
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
30
import bzrlib.help_topics
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
31
import bzrlib.commands
32
33
34
def get_filename(options):
35
    """Provides name of manual"""
36
    return "%s_man.txt" % (options.bzr_name)
37
38
39
def infogen(options, outfile):
40
    """Create manual in RSTX format"""
41
    t = time.time()
42
    tt = time.gmtime(t)
43
    params = \
44
           { "bzrcmd": options.bzr_name,
45
             "datestamp": time.strftime("%Y-%m-%d",tt),
46
             "timestamp": time.strftime("%Y-%m-%d %H:%M:%S +0000",tt),
47
             "version": bzrlib.__version__,
48
             }
49
    outfile.write(rstx_preamble % params)
50
    outfile.write(rstx_head % params)
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
51
    outfile.write(_get_body(params))
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
52
    outfile.write(rstx_foot % params)
53
54
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
55
def _get_body(params):
56
    """Build the manual content."""
57
    from bzrlib.help_topics import SECT_CONCEPT, SECT_LIST, SECT_PLUGIN
58
    registry = bzrlib.help_topics.topic_registry
59
    result = []
60
    result.append(_get_section(registry, SECT_CONCEPT, "Concepts"))
61
    result.append(_get_section(registry, SECT_LIST, "Lists"))
62
    result.append(_get_commands_section(registry))
63
    #result.append(_get_section(registry, SECT_PLUGIN, "Core Plug-ins"))
64
    return "\n".join(result)
65
66
67
def _get_section(registry, section, title, hdg_level1="=", hdg_level2="-"):
68
    """Build the manual part from topics matching that section."""
69
    topics = sorted(registry.get_topics_for_section(section))
70
    lines = [title, hdg_level1 * len(title), ""]
71
    for topic in topics:
72
        help = registry.get_detail(topic)
73
        heading,text = help.split("\n", 1)
74
        lines.append(heading)
75
        lines.append(hdg_level2 * len(heading))
76
        lines.append(text)
77
        lines.append('')
78
    return "\n" + "\n".join(lines) + "\n"
79
80
81
def _get_commands_section(registry, title="Commands", hdg_level1="=",
82
                          hdg_level2="-"):
83
    """Build the comands reference section of the manual."""
84
    lines = [title, hdg_level1 * len(title), ""]
85
    cmds = sorted(bzrlib.commands.builtin_command_names())
86
    for cmd_name in cmds:
87
        cmd_object = bzrlib.commands.get_cmd_object(cmd_name)
88
        if cmd_object.hidden:
89
            continue
90
        heading = cmd_name
91
        text = cmd_object.get_help_text(plain=False)
92
        lines.append(heading)
93
        lines.append(hdg_level2 * len(heading))
94
        lines.append(text)
95
        lines.append('')
96
    return "\n" + "\n".join(lines) + "\n"
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
97
98
99
##
100
# TEMPLATES
101
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
102
rstx_preamble = """.. This file is autogenerated from the output of
103
..     %(bzrcmd)s help topics
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
104
..     %(bzrcmd)s help commands
105
..     %(bzrcmd)s help <cmd>
106
..
107
.. Generation time: %(timestamp)s
108
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
109
"""
110
111
112
rstx_head = """\
113
=====================
114
Bazaar User Reference
115
=====================
116
117
:Version:   %(version)s
118
:Generated: %(datestamp)s
119
120
.. contents::
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
121
122
-----
123
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
124
About This Manual
125
=================
126
127
This manual is generated from Bazaar's online help. To use
128
the online help system, try the following commands.
129
130
    Introduction including a list of commonly used commands::
131
132
        bzr help
133
134
    List of topics and a summary of each::
135
136
        bzr help topics
137
138
    List of commands and a summary of each::
139
140
        bzr help commands
141
142
    More information about a particular topic or command::
143
144
        bzr help topic-or-command-name
145
146
The following web sites provide further information on Bazaar:
147
148
:Home page:                     http://www.bazaar-vcs.org/
149
:Official docs:                 http://doc.bazaar-vcs.org/
150
:Launchpad:                     https://launchpad.net/bzr/
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
151
"""
152
153
154
rstx_foot = """
155
"""