/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
2677.1.4 by Alexander Belchenko
fixes after John's review
20
Written by 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
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
67
def _get_section(registry, section, title, hdg_level1="#", hdg_level2="="):
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
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), ""]
2677.1.4 by Alexander Belchenko
fixes after John's review
71
72
    # docutils treats section heading as implicit link target.
73
    # But in some cases topic and heading are different, e.g.:
74
    #
75
    # `bugs' vs. `Bug Trackers'
76
    # `working-tree' vs. `Working Trees'
77
    #
78
    # So for building proper cross-reference between topic names
79
    # and corresponding sections in document, we need provide
80
    # simple glue in the form:
81
    #
82
    # .. _topic: `heading`_
83
    links_glue = []
84
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
85
    for topic in topics:
86
        help = registry.get_detail(topic)
87
        heading,text = help.split("\n", 1)
88
        lines.append(heading)
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
89
        if not text.startswith(hdg_level2):
90
            lines.append(hdg_level2 * len(heading))
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
91
        lines.append(text)
92
        lines.append('')
2677.1.4 by Alexander Belchenko
fixes after John's review
93
        # check that topic match heading
2677.1.2 by Alexander Belchenko
bzr_man: see also topics as cross-reference links
94
        if topic != heading.lower():
2677.1.4 by Alexander Belchenko
fixes after John's review
95
            links_glue.append((topic, heading))
96
97
    # provide links glue for topics that don't match headings
98
    lines.extend([".. _%s: `%s`_" % i for i in links_glue])
99
    lines.append('')
100
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
101
    return "\n" + "\n".join(lines) + "\n"
102
103
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
104
def _get_commands_section(registry, title="Commands", hdg_level1="#",
105
                          hdg_level2="="):
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
106
    """Build the comands reference section of the manual."""
107
    lines = [title, hdg_level1 * len(title), ""]
108
    cmds = sorted(bzrlib.commands.builtin_command_names())
109
    for cmd_name in cmds:
110
        cmd_object = bzrlib.commands.get_cmd_object(cmd_name)
111
        if cmd_object.hidden:
112
            continue
113
        heading = cmd_name
2677.1.2 by Alexander Belchenko
bzr_man: see also topics as cross-reference links
114
        text = cmd_object.get_help_text(plain=False, see_also_as_links=True)
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
115
        lines.append(heading)
116
        lines.append(hdg_level2 * len(heading))
117
        lines.append(text)
118
        lines.append('')
119
    return "\n" + "\n".join(lines) + "\n"
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
120
121
122
##
123
# TEMPLATES
124
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
125
rstx_preamble = """.. This file is autogenerated from the output of
126
..     %(bzrcmd)s help topics
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
127
..     %(bzrcmd)s help commands
128
..     %(bzrcmd)s help <cmd>
129
..
130
.. Generation time: %(timestamp)s
131
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
132
"""
133
134
135
rstx_head = """\
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
136
#####################
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
137
Bazaar User Reference
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
138
#####################
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
139
140
:Version:   %(version)s
141
:Generated: %(datestamp)s
142
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
143
.. contents:: :depth: 2
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
144
145
-----
146
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
147
About This Manual
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
148
#################
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
149
150
This manual is generated from Bazaar's online help. To use
151
the online help system, try the following commands.
152
153
    Introduction including a list of commonly used commands::
154
155
        bzr help
156
157
    List of topics and a summary of each::
158
159
        bzr help topics
160
161
    List of commands and a summary of each::
162
163
        bzr help commands
164
165
    More information about a particular topic or command::
166
167
        bzr help topic-or-command-name
168
169
The following web sites provide further information on Bazaar:
170
171
:Home page:                     http://www.bazaar-vcs.org/
172
:Official docs:                 http://doc.bazaar-vcs.org/
173
:Launchpad:                     https://launchpad.net/bzr/
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
174
"""
175
176
177
rstx_foot = """
178
"""