/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4763.2.4 by John Arbash Meinel
merge bzr.2.1 in preparation for NEWS entry.
1
# Copyright (C) 2006-2010 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
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
16
4927.2.2 by Ian Clatworthy
User Reference as topics
17
"""Generate reStructuredText source for the User Reference Manual.
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
18
Loosely based on the manpage generator autodoc_man.py.
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
19
7192.1.1 by Jelmer Vernooij
Some documentation improvements.
20
Written by the Bazaar/Breezy community.
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
21
"""
22
23
import time
24
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
25
import breezy
26
import breezy.help
27
import breezy.help_topics
28
import breezy.commands
29
import breezy.osutils
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
30
31
32
def get_filename(options):
33
    """Provides name of manual"""
6622.1.35 by Jelmer Vernooij
Fix last tests.
34
    return "%s_man.txt" % (options.brz_name)
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
35
36
37
def infogen(options, outfile):
38
    """Create manual in RSTX format"""
6840.1.1 by Jelmer Vernooij
Revert custom gmtime implementation without tests.
39
    t = time.time()
40
    tt = time.gmtime(t)
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
41
    params = \
7143.15.2 by Jelmer Vernooij
Run autopep8.
42
        {"brzcmd": options.brz_name,
43
         "datestamp": time.strftime("%Y-%m-%d", tt),
44
         "timestamp": time.strftime("%Y-%m-%d %H:%M:%S +0000", tt),
45
         "version": breezy.__version__,
46
         }
3089.3.17 by Ian Clatworthy
Fix case where filename not given
47
    nominated_filename = getattr(options, 'filename', None)
3089.3.16 by Ian Clatworthy
Dump help topics into text files in doc/en/user-reference
48
    if nominated_filename is None:
49
        topic_dir = None
50
    else:
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
51
        topic_dir = breezy.osutils.dirname(nominated_filename)
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
52
    outfile.write(rstx_preamble % params)
53
    outfile.write(rstx_head % params)
3089.3.16 by Ian Clatworthy
Dump help topics into text files in doc/en/user-reference
54
    outfile.write(_get_body(params, topic_dir))
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
55
    outfile.write(rstx_foot % params)
56
57
3089.3.16 by Ian Clatworthy
Dump help topics into text files in doc/en/user-reference
58
def _get_body(params, topic_dir):
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
59
    """Build the manual content."""
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
60
    from breezy.help_topics import SECT_CONCEPT, SECT_LIST, SECT_PLUGIN
61
    registry = breezy.help_topics.topic_registry
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
62
    result = []
3089.3.16 by Ian Clatworthy
Dump help topics into text files in doc/en/user-reference
63
    result.append(_get_section(registry, SECT_CONCEPT, "Concepts",
7143.15.2 by Jelmer Vernooij
Run autopep8.
64
                               output_dir=topic_dir))
3089.3.16 by Ian Clatworthy
Dump help topics into text files in doc/en/user-reference
65
    result.append(_get_section(registry, SECT_LIST, "Lists",
7143.15.2 by Jelmer Vernooij
Run autopep8.
66
                               output_dir=topic_dir))
4927.2.2 by Ian Clatworthy
User Reference as topics
67
    result.append(_get_commands_section(registry, output_dir=topic_dir))
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
68
    return "\n".join(result)
69
70
3089.3.16 by Ian Clatworthy
Dump help topics into text files in doc/en/user-reference
71
def _get_section(registry, section, title, hdg_level1="#", hdg_level2="=",
7143.15.2 by Jelmer Vernooij
Run autopep8.
72
                 output_dir=None):
3089.3.16 by Ian Clatworthy
Dump help topics into text files in doc/en/user-reference
73
    """Build the manual part from topics matching that section.
7143.15.2 by Jelmer Vernooij
Run autopep8.
74
3089.3.16 by Ian Clatworthy
Dump help topics into text files in doc/en/user-reference
75
    If output_dir is not None, topics are dumped into text files there
76
    during processing, as well as being included in the return result.
77
    """
4927.2.10 by Ian Clatworthy
fix test failures
78
    file_per_topic = output_dir is not None
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
79
    lines = [title, hdg_level1 * len(title), ""]
4927.2.10 by Ian Clatworthy
fix test failures
80
    if file_per_topic:
4927.2.2 by Ian Clatworthy
User Reference as topics
81
        lines.extend([".. toctree::", "   :maxdepth: 1", ""])
2677.1.4 by Alexander Belchenko
fixes after John's review
82
4927.2.2 by Ian Clatworthy
User Reference as topics
83
    topics = sorted(registry.get_topics_for_section(section))
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
84
    for topic in topics:
85
        help = registry.get_detail(topic)
4927.2.2 by Ian Clatworthy
User Reference as topics
86
        heading, text = help.split("\n", 1)
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
87
        if not text.startswith(hdg_level2):
4927.2.2 by Ian Clatworthy
User Reference as topics
88
            underline = hdg_level2 * len(heading)
89
            help = "%s\n%s\n\n%s\n\n" % (heading, underline, text)
90
        else:
91
            help = "%s\n%s\n\n" % (heading, text)
4927.2.10 by Ian Clatworthy
fix test failures
92
        if file_per_topic:
4927.2.2 by Ian Clatworthy
User Reference as topics
93
            topic_id = _dump_text(output_dir, topic, help)
94
            lines.append("   %s" % topic_id)
95
        else:
96
            lines.append(help)
97
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
98
    return "\n" + "\n".join(lines) + "\n"
99
100
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
101
def _get_commands_section(registry, title="Commands", hdg_level1="#",
7143.15.2 by Jelmer Vernooij
Run autopep8.
102
                          hdg_level2="=", output_dir=None):
3565.2.1 by Christophe Troestler
(trivial) Corrected typos.
103
    """Build the commands reference section of the manual."""
4927.2.10 by Ian Clatworthy
fix test failures
104
    file_per_topic = output_dir is not None
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
105
    lines = [title, hdg_level1 * len(title), ""]
4927.2.10 by Ian Clatworthy
fix test failures
106
    if file_per_topic:
4927.2.2 by Ian Clatworthy
User Reference as topics
107
        lines.extend([".. toctree::", "   :maxdepth: 1", ""])
108
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
109
    cmds = sorted(breezy.commands.builtin_command_names())
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
110
    for cmd_name in cmds:
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
111
        cmd_object = breezy.commands.get_cmd_object(cmd_name)
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
112
        if cmd_object.hidden:
113
            continue
114
        heading = cmd_name
4927.2.2 by Ian Clatworthy
User Reference as topics
115
        underline = hdg_level2 * len(heading)
2677.1.2 by Alexander Belchenko
bzr_man: see also topics as cross-reference links
116
        text = cmd_object.get_help_text(plain=False, see_also_as_links=True)
4927.2.2 by Ian Clatworthy
User Reference as topics
117
        help = "%s\n%s\n\n%s\n\n" % (heading, underline, text)
4927.2.10 by Ian Clatworthy
fix test failures
118
        if file_per_topic:
4927.2.2 by Ian Clatworthy
User Reference as topics
119
            topic_id = _dump_text(output_dir, cmd_name, help)
120
            lines.append("   %s" % topic_id)
121
        else:
122
            lines.append(help)
123
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
124
    return "\n" + "\n".join(lines) + "\n"
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
125
126
4927.2.2 by Ian Clatworthy
User Reference as topics
127
def _dump_text(output_dir, topic, text):
128
    """Dump text for a topic to a file."""
129
    topic_id = "%s-%s" % (topic, "help")
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
130
    filename = breezy.osutils.pathjoin(output_dir, topic_id + ".txt")
7235.1.1 by Jelmer Vernooij
Fix autodoc_rstx generation on python 3.
131
    with open(filename, "wb") as f:
6855.4.5 by Jelmer Vernooij
Fix more bees, use with rather than try/finally for some files.
132
        f.write(text.encode('utf-8'))
4927.2.2 by Ian Clatworthy
User Reference as topics
133
    return topic_id
134
135
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
136
##
137
# TEMPLATES
138
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
139
rstx_preamble = """.. This file is autogenerated from the output of
6622.1.35 by Jelmer Vernooij
Fix last tests.
140
..     %(brzcmd)s help topics
141
..     %(brzcmd)s help commands
142
..     %(brzcmd)s help <cmd>
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
143
..
144
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
145
"""
146
147
148
rstx_head = """\
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
149
#####################
7192.1.1 by Jelmer Vernooij
Some documentation improvements.
150
Breezy User Reference
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
151
#####################
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
152
153
About This Manual
3089.3.1 by Ian Clatworthy
move reference material out of User Guide into User Reference
154
#################
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
155
7192.1.1 by Jelmer Vernooij
Some documentation improvements.
156
This manual is generated from Breezy's online help. To use
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
157
the online help system, try the following commands.
158
159
    Introduction including a list of commonly used commands::
160
6622.1.35 by Jelmer Vernooij
Fix last tests.
161
        brz help
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
162
163
    List of topics and a summary of each::
164
6622.1.35 by Jelmer Vernooij
Fix last tests.
165
        brz help topics
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
166
167
    List of commands and a summary of each::
168
6622.1.35 by Jelmer Vernooij
Fix last tests.
169
        brz help commands
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
170
171
    More information about a particular topic or command::
172
6622.1.35 by Jelmer Vernooij
Fix last tests.
173
        brz help topic-or-command-name
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
174
7192.1.1 by Jelmer Vernooij
Some documentation improvements.
175
The following web sites provide further information on Breezy:
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
176
6650.1.1 by Jelmer Vernooij
Update homepage URL.
177
:Home page:                     http://www.breezy-vcs.org/
7192.1.1 by Jelmer Vernooij
Some documentation improvements.
178
:Breezy docs:                   http://www.breezy-vcs.org/doc/
6622.1.35 by Jelmer Vernooij
Fix last tests.
179
:Launchpad:                     https://launchpad.net/brz/
1662.1.17 by Martin Pool
[patch] html manual generator (Alexander Belchenko)
180
"""
181
182
183
rstx_foot = """
184
"""