Code

Enhance documentation generation.
authorstefan <stefan@57a73879-2fb5-44c3-a270-3262357dd7e2>
Thu, 12 Feb 2009 05:54:26 +0000 (05:54 +0000)
committerstefan <stefan@57a73879-2fb5-44c3-a270-3262357dd7e2>
Thu, 12 Feb 2009 05:54:26 +0000 (05:54 +0000)
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/roundup/trunk@4124 57a73879-2fb5-44c3-a270-3262357dd7e2

12 files changed:
doc/_static/style.css [new file with mode: 0644]
doc/_templates/layout.html [new file with mode: 0644]
doc/acknowledgements.txt [new file with mode: 0644]
doc/conf.py [new file with mode: 0644]
doc/contact.txt [new file with mode: 0644]
doc/customizing.txt
doc/index.txt
doc/license.txt [new file with mode: 0644]
roundup/dist/__init__.py [new file with mode: 0644]
roundup/dist/command/__init__.py [new file with mode: 0644]
roundup/dist/command/build_doc.py [new file with mode: 0644]
setup.py

diff --git a/doc/_static/style.css b/doc/_static/style.css
new file mode 100644 (file)
index 0000000..55c48d9
--- /dev/null
@@ -0,0 +1,109 @@
+/* layout*/
+body 
+{
+  font-family: sans-serif, Arial, Helvetica;
+  background-color: white;
+  color: #333;
+  margin:0;
+  padding: 0 3em 0 14em;
+}
+body > .header { margin: 0 0 0 -14em;}
+body > .footer { margin: 0 0 0 -14em; clear:both;}
+body > .navigation 
+{
+  margin-left: -14em;
+  width: 14em;
+  float: left;
+}
+body > .content 
+{
+  width: 100%;
+  margin: 0;
+}
+body > .header > #searchbox { position: absolute; right: 1em; top: 1em;}
+
+/* style */
+
+:link { color: #bb0000; text-decoration: none;}
+:visited { color: #770000; text-decoration: none;}
+a.toc-backref { color: #000000; }
+
+.header h1 { margin-left: 1em; }
+
+body
+{
+  font-family: sans-serif, Arial, Helvetica;
+  background-color: #f5f5f5;
+  color: #333;
+}
+
+.menu 
+{
+  margin-right: 1em;
+  padding: 2pt;
+  border: solid thin #dadada;
+  background-color:#ffffff;
+}
+.menu ul { list-style-type:none; padding: 0;}
+.menu ul ul { padding-left: 1em;}
+.menu li { border-top: solid thin #dadada;}
+.menu li:first-child { border-top: none;}
+
+/* related */
+
+div.related 
+{
+  width: 100%;
+  font-size: 90%;
+}
+div.related-top { border-bottom: solid thin #dadada;}
+div.related-bottom { border-top: solid thin #dadada;}
+
+div.related ul 
+{
+  margin: 0;
+  padding: 0 0 0 10px;
+  list-style: none;
+}
+
+div.related li { display: inline;}
+
+div.related li.right 
+{
+  float: right;
+  margin-right: 5px;
+}
+
+.footer
+{
+  font-size: small;
+  text-align: center;
+  color: lightgrey;
+}
+
+.content
+{ 
+  padding: 1em;
+  border: solid thin #dadada;
+  background-color: #ffffff;
+}
+
+/* This is a little hack to inject a 'news' block into the title
+   page without having to set up a custom directive. */
+#roundup-issue-tracker .note
+{
+  float: right;
+  width: auto;
+  border: solid thin #dadada;
+  background-color:#f5f5f5;
+  padding: 1em;
+  margin: 1em;
+}
+#roundup-issue-tracker .note .admonition-title { display: none; }
+
+table
+{ 
+  border-collapse: collapse;
+  border-spacing: 1px;
+  background-color: #fafafa;
+}
diff --git a/doc/_templates/layout.html b/doc/_templates/layout.html
new file mode 100644 (file)
index 0000000..61d352a
--- /dev/null
@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+{%- macro relbar(class) %}
+    <div class="related {{ class }}">
+      <ul>
+        {%- for rellink in rellinks %}
+        <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
+          <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags }}"
+             accesskey="{{ rellink[2] }}">{{ rellink[3] }}</a>
+          {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
+        {%- endfor %}
+        {%- block rootrellink %}
+        <li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li>
+        {%- endblock %}
+        {%- for parent in parents %}
+          <li><a href="{{ parent.link|e }}" accesskey="U">{{ parent.title }}</a>{{ reldelim1 }}</li>
+        {%- endfor %}
+        {%- block relbaritems %} {% endblock %}
+      </ul>
+    </div>
+{%- endmacro %}
+{%- macro sidebar() %}
+  {%- block sidebartoc %}
+  {%- if display_toc %}
+    <h3><a href="{{ pathto(master_doc) }}">{{ _('Table Of Contents') }}</a></h3>
+    {{ toc }}
+  {%- endif %}
+  {%- endblock %}
+  {%- block sidebarrel %}
+  {%- if prev %}
+    <h4>{{ _('Previous topic') }}</h4>
+    <p class="topless"><a href="{{ prev.link|e }}"
+                          title="{{ _('previous chapter') }}">{{ prev.title }}</a></p>
+  {%- endif %}
+  {%- if next %}
+    <h4>{{ _('Next topic') }}</h4>
+    <p class="topless"><a href="{{ next.link|e }}"
+                          title="{{ _('next chapter') }}">{{ next.title }}</a></p>
+  {%- endif %}
+  {%- endblock %}
+  {%- block sidebarsourcelink %}
+  {%- if show_source and has_source and sourcename %}
+    <h3>{{ _('This Page') }}</h3>
+    <ul class="this-page-menu">
+      <li><a href="{{ pathto('_sources/' + sourcename, true)|e }}"
+             rel="nofollow">{{ _('Show Source') }}</a></li>
+    </ul>
+  {%- endif %}
+  {%- endblock %}
+  {%- block sidebarsearch %}
+  {%- if pagename != "search" %}
+  <div id="searchbox" style="display: none">
+    <h3>{{ _('Quick search') }}</h3>
+      <form class="search" action="{{ pathto('search') }}" method="get">
+        <input type="text" name="q" size="18" />
+        <input type="submit" value="{{ _('Go') }}" />
+        <input type="hidden" name="check_keywords" value="yes" />
+        <input type="hidden" name="area" value="default" />
+      </form>
+      <p style="font-size: 90%">{{ _('Enter search terms or a module, class or function name.') }}</p>
+  </div>
+  <script type="text/javascript">$('#searchbox').show(0);</script>
+  {%- endif %}
+  {%- endblock %}
+{%- endmacro %}
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    {{ metatags }}
+    {%- if builder != 'htmlhelp' %}
+      {%- set titlesuffix = " &mdash; " + docstitle|e %}
+    {%- endif %}
+    <title>{{ title|striptags }}{{ titlesuffix }}</title>
+    {%- if builder == 'web' %}
+    <link rel="stylesheet" href="{{ pathto('index') }}?do=stylesheet{%
+      if in_admin_panel %}&admin=yes{% endif %}" type="text/css" />
+    {%- for link, type, title in page_links %}
+    <link rel="alternate" type="{{ type|e(true) }}" title="{{ title|e(true) }}" href="{{ link|e(true) }}" />
+    {%- endfor %}
+    {%- else %}
+    <link rel="stylesheet" href="{{ pathto('_static/style.css', 1) }}" type="text/css" />
+    <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
+    {%- endif %}
+    {%- if builder != 'htmlhelp' %}
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+          URL_ROOT:    '{{ pathto("", 1) }}',
+          VERSION:     '{{ release|e }}',
+          COLLAPSE_MODINDEX: false,
+          FILE_SUFFIX: '{{ file_suffix }}'
+      };
+    </script>
+    {%- for scriptfile in script_files %}
+    <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
+    {%- endfor %}
+    {%- if use_opensearch %}
+    <link rel="search" type="application/opensearchdescription+xml"
+          title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
+          href="{{ pathto('_static/opensearch.xml', 1) }}"/>
+    {%- endif %}
+    {%- if favicon %}
+    <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
+    {%- endif %}
+    {%- endif %}
+{%- block linktags %}
+    {%- if hasdoc('about') %}
+    <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
+    {%- endif %}
+    <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
+    <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
+    {%- if hasdoc('copyright') %}
+    <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
+    {%- endif %}
+    <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" />
+    {%- if parents %}
+    <link rel="up" title="{{ parents[-1].title|striptags }}" href="{{ parents[-1].link|e }}" />
+    {%- endif %}
+    {%- if next %}
+    <link rel="next" title="{{ next.title|striptags }}" href="{{ next.link|e }}" />
+    {%- endif %}
+    {%- if prev %}
+    <link rel="prev" title="{{ prev.title|striptags }}" href="{{ prev.link|e }}" />
+    {%- endif %}
+{%- endblock %}
+{%- block extrahead %} {% endblock %}
+  </head>
+  <body>
+    <div class="header"><h1>Roundup</h1>
+      {%- if pagename != "search" %}
+        <div id="searchbox" style="display: none">
+          <form class="search" action="{{ pathto('search') }}" method="get">
+            <input type="text" name="q" size="18" />
+            <input type="submit" value="{{ _('Search') }}" />
+            <input type="hidden" name="check_keywords" value="yes" />
+            <input type="hidden" name="area" value="default" />
+          </form>
+        </div>
+        <script type="text/javascript">$('#searchbox').show(0);</script>
+      {%- endif %}
+    </div>
+    <div class="navigation">
+      <div class="menu">
+       {{ sidebar() }}
+      </div>
+    </div>
+    <div class="content">
+       {{ relbar('related-top') }}
+       {{ body }}
+       {{ relbar('related-bottom') }}
+    </div>
+{%- block footer %}
+    <div class="footer">
+      {%- if hasdoc('copyright') %}
+        {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
+      {%- else %}
+        {% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
+      {%- endif %}
+      {%- if show_source and has_source and sourcename %}
+        <p class="source"><a href="{{ pathto('_sources/' + sourcename, true)|e }}" rel="nofollow">{{ _('source') }}</a></p>
+      {%- endif %}
+    </div>
+{%- endblock %}
+  </body>
+</html>
diff --git a/doc/acknowledgements.txt b/doc/acknowledgements.txt
new file mode 100644 (file)
index 0000000..9d2a2b5
--- /dev/null
@@ -0,0 +1,132 @@
+Acknowledgements
+================
+
+Go Ping, you rock! Also, go Common Ground, ekit.com and Bizar Software for
+letting me implement this system on their time.
+
+Thanks also to the many people on the mailing list, in the sourceforge
+project and those who just report bugs:
+Thomas Arendsen Hein,
+Nerijus Baliunas,
+Anthony Baxter,
+Marlon van den Berg,
+Bo Berglund,
+Stéphane Bidoul,
+Cameron Blackwood,
+Jeff Blaine,
+Duncan Booth,
+Seb Brezel,
+J Alan Brogan,
+Titus Brown,
+Steve Byan,
+Brett Cannon,
+Godefroid Chapelle,
+Roch'e Compaan,
+Wil Cooley,
+Joe Cooper,
+Kelley Dagley,
+Bruno Damour,
+Bradley Dean,
+Toby Dickenson,
+Paul F. Dubois,
+Eric Earnst,
+Peter Eisentraut,
+Andrew Eland,
+Jeff Epler,
+Tom Epperly,
+Tamer Fahmy,
+Vickenty Fesunov,
+Hernan Martinez Foffani,
+Stuart D. Gathman,
+Martin Geisler,
+Ajit George,
+Frank Gibbons,
+Johannes Gijsbers,
+Gus Gollings,
+Philipp Gortan,
+Dan Grassi,
+Robin Green,
+Jason Grout,
+Charles Groves,
+Engelbert Gruber,
+Bruce Guenter,
+Tamás Gulácsi,
+Thomas Arendsen Hein,
+Juergen Hermann,
+Tobias Herp,
+Uwe Hoffmann,
+Alex Holkner,
+Tobias Hunger,
+Simon Hyde,
+Paul Jimenez,
+Christophe Kalt,
+Timo Kankare,
+Brian Kelley,
+James Kew,
+Sheila King,
+Michael Klatt,
+Bastian Kleineidam,
+Axel Kollmorgen,
+Cedric Krier,
+Detlef Lannert,
+Andrey Lebedev,
+Henrik Levkowetz,
+David Linke,
+Martin v. Löwis,
+Fredrik Lundh,
+Will Maier,
+Ksenia Marasanova,
+Georges Martin,
+Gordon McMillan,
+John F Meinel Jr,
+Roland Meister,
+Ulrik Mikaelsson,
+John Mitchell,
+Ramiro Morales,
+Toni Mueller,
+Stefan Niederhauser,
+Truls E. Næss,
+Patrick Ohly,
+Luke Opperman,
+Eddie Parker,
+Will Partain,
+Ewout Prangsma,
+Marcus Priesch,
+Bernhard Reiter,
+Roy Rapoport,
+John P. Rouillard,
+Luke Ross,
+Ollie Rutherfurd,
+Toby Sargeant,
+Giuseppe Scelsi,
+Ralf Schlatterbeck,
+Gregor Schmid,
+Florian Schulze,
+Klamer Schutte,
+Dougal Scott,
+Stefan Seefeld,
+Jouni K Seppänen,
+Jeffrey P Shell,
+Dan Shidlovsky,
+Joel Shprentz,
+Terrel Shumway,
+Emil Sit,
+Alexander Smishlajev,
+Nathaniel Smith,
+Leonardo Soto,
+Maciej Starzyk,
+Mitchell Surface,
+Anatoly T.,
+Jon C. Thomason
+Mike Thompson,
+Michael Twomey,
+Karl Ulbrich,
+Martin Uzak,
+Darryl VanDorp,
+J Vickroy,
+Timothy J. Warren,
+William (Wilk),
+Tue Wennerberg,
+Matt Wilbert,
+Chris Withers,
+Milan Zamazal.
diff --git a/doc/conf.py b/doc/conf.py
new file mode 100644 (file)
index 0000000..9837f89
--- /dev/null
@@ -0,0 +1,191 @@
+# -*- coding: utf-8 -*-
+#
+# Roundup documentation build configuration file, created by
+# sphinx-quickstart on Tue Jan 20 17:33:20 2009.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+#extensions = ['toctree']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.txt'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Roundup'
+copyright = u'2009, Richard Jones'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '1.4'
+# The full version, including alpha/beta/rc tags.
+release = '1.4'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['.build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+html_style = 'default.css'
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+html_collapse_toctree = True
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+html_add_permalinks = False
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+#html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Roundupdoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('docs/index', 'Roundup.tex', ur'Roundup Documentation',
+   ur'Richard Jones', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
diff --git a/doc/contact.txt b/doc/contact.txt
new file mode 100644 (file)
index 0000000..4005b7b
--- /dev/null
@@ -0,0 +1,22 @@
+Contact
+=======
+
+For general support enquiries about usage, a mailing list is available:
+
+    roundup-users@sourceforge.net
+
+If you've got a great idea for roundup, or have found a bug, please
+submit an issue to the tracker at: 
+
+    http://sourceforge.net/tracker/?group_id=31577
+
+For discussions about developing or enhancing roundup:
+
+    roundup-devel@sourceforge.net
+
+The admin for this project is Richard Jones:
+
+    richard@users.sourceforge.net
+
+but he should only be contacted directly when none of the
+above avenues of contact are suitable.
index 5273e80fe048fdb173b5e9c2409ac4fb4297e7a4..dadd5ec181ed4def92d8978eae7f4e6254296303 100644 (file)
@@ -1,3 +1,5 @@
+:tocdepth: 2
+
 ===================
 Customising Roundup
 ===================
index 93609bfe0e2ac78d4a32a632d450e523f2520694..cc8cc605b7146aff89f484b943748a1a23385f53 100644 (file)
@@ -5,192 +5,20 @@ Roundup: an Issue-Tracking System for Knowledge Workers
 Contents
 ========
 
-- Features__
-- Installation__ and Upgrading__ existing installs
-- `Frequently Asked Questions`__
-- `User Guide`__
-- `Configuring and Customising Roundup`__
-- `Administering Roundup Trackers`__
-- `Roundup's Design`__ (original__)
-- `Developing Roundup`__
-- `Roundup Tracker Templates`__
-- Contact_
-- Acknowledgements_
-- License_
-
-__ features.html
-__ installation.html
-__ upgrading.html
-__ FAQ.html
-__ user_guide.html
-__ customizing.html
-__ admin_guide.html
-__ design.html
-__ spec.html
-__ developers.html
-__ tracker_templates.html
-
-Contact
-=======
-
-For general support enquiries about usage, a mailing list is available:
-
-    roundup-users@sourceforge.net
-
-If you've got a great idea for roundup, or have found a bug, please
-submit an issue to the tracker at: 
-
-    http://sourceforge.net/tracker/?group_id=31577
-
-For discussions about developing or enhancing roundup:
-
-    roundup-devel@sourceforge.net
-
-The admin for this project is Richard Jones:
-
-    richard@users.sourceforge.net
-
-but he should only be contacted directly when none of the
-above avenues of contact are suitable.
-
-
-Acknowledgements
-================
-
-Go Ping, you rock! Also, go Common Ground, ekit.com and Bizar Software for
-letting me implement this system on their time.
-
-Thanks also to the many people on the mailing list, in the sourceforge
-project and those who just report bugs:
-Thomas Arendsen Hein,
-Nerijus Baliunas,
-Anthony Baxter,
-Marlon van den Berg,
-Bo Berglund,
-Stéphane Bidoul,
-Cameron Blackwood,
-Jeff Blaine,
-Duncan Booth,
-Seb Brezel,
-J Alan Brogan,
-Titus Brown,
-Steve Byan,
-Brett Cannon,
-Godefroid Chapelle,
-Roch'e Compaan,
-Wil Cooley,
-Joe Cooper,
-Kelley Dagley,
-Bruno Damour,
-Bradley Dean,
-Toby Dickenson,
-Paul F. Dubois,
-Eric Earnst,
-Peter Eisentraut,
-Andrew Eland,
-Jeff Epler,
-Tom Epperly,
-Tamer Fahmy,
-Vickenty Fesunov,
-Hernan Martinez Foffani,
-Stuart D. Gathman,
-Martin Geisler,
-Ajit George,
-Frank Gibbons,
-Johannes Gijsbers,
-Gus Gollings,
-Philipp Gortan,
-Dan Grassi,
-Robin Green,
-Jason Grout,
-Charles Groves,
-Engelbert Gruber,
-Bruce Guenter,
-Tamás Gulácsi,
-Thomas Arendsen Hein,
-Juergen Hermann,
-Tobias Herp,
-Uwe Hoffmann,
-Alex Holkner,
-Tobias Hunger,
-Simon Hyde,
-Paul Jimenez,
-Christophe Kalt,
-Timo Kankare,
-Brian Kelley,
-James Kew,
-Sheila King,
-Michael Klatt,
-Bastian Kleineidam,
-Axel Kollmorgen,
-Cedric Krier,
-Detlef Lannert,
-Andrey Lebedev,
-Henrik Levkowetz,
-David Linke,
-Martin v. Löwis,
-Fredrik Lundh,
-Will Maier,
-Ksenia Marasanova,
-Georges Martin,
-Gordon McMillan,
-John F Meinel Jr,
-Roland Meister,
-Ulrik Mikaelsson,
-John Mitchell,
-Ramiro Morales,
-Toni Mueller,
-Stefan Niederhauser,
-Truls E. Næss,
-Patrick Ohly,
-Luke Opperman,
-Eddie Parker,
-Will Partain,
-Ewout Prangsma,
-Marcus Priesch,
-Bernhard Reiter,
-Roy Rapoport,
-John P. Rouillard,
-Luke Ross,
-Ollie Rutherfurd,
-Toby Sargeant,
-Giuseppe Scelsi,
-Ralf Schlatterbeck,
-Gregor Schmid,
-Florian Schulze,
-Klamer Schutte,
-Dougal Scott,
-Stefan Seefeld,
-Jouni K Seppänen,
-Jeffrey P Shell,
-Dan Shidlovsky,
-Joel Shprentz,
-Terrel Shumway,
-Emil Sit,
-Alexander Smishlajev,
-Nathaniel Smith,
-Leonardo Soto,
-Maciej Starzyk,
-Mitchell Surface,
-Anatoly T.,
-Jon C. Thomason
-Mike Thompson,
-Michael Twomey,
-Karl Ulbrich,
-Martin Uzak,
-Darryl VanDorp,
-J Vickroy,
-Timothy J. Warren,
-William (Wilk),
-Tue Wennerberg,
-Matt Wilbert,
-Chris Withers,
-Milan Zamazal.
-
-
-
-License
-=======
-
-See COPYING.txt in the software distribution for the licensing terms.
-
+.. toctree::
+   :maxdepth: 2
+
+   features
+   installation
+   upgrading
+   FAQ
+   user_guide
+   customizing
+   admin_guide
+   spec
+   original design <design>
+   developers
+   tracker_templates
+   contact
+   acknowledgements
+   license
diff --git a/doc/license.txt b/doc/license.txt
new file mode 100644 (file)
index 0000000..9bd6de4
--- /dev/null
@@ -0,0 +1,5 @@
+License
+=======
+
+See COPYING.txt in the software distribution for the licensing terms.
+
diff --git a/roundup/dist/__init__.py b/roundup/dist/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/roundup/dist/command/__init__.py b/roundup/dist/command/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/roundup/dist/command/build_doc.py b/roundup/dist/command/build_doc.py
new file mode 100644 (file)
index 0000000..72537ce
--- /dev/null
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2009 Stefan Seefeld
+# All rights reserved.
+# For license terms see the file COPYING.txt.
+#
+
+import os, sys
+from stat import *
+import os.path
+from shutil import *
+import glob
+
+from distutils.command import build
+from distutils.spawn import spawn, find_executable
+from distutils.dep_util import newer, newer_group
+from distutils.dir_util import copy_tree, remove_tree, mkpath
+from distutils.file_util import copy_file
+from distutils import sysconfig
+
+class build_doc(build.build):
+    """Defines the specific procedure to build roundup's documentation."""
+
+    description = "build documentation"
+
+    def run(self):
+        """Run this command, i.e. do the actual document generation."""
+
+        sphinx = find_executable('sphinx-build')
+        if not sphinx:
+            self.warn("could not find sphinx-build in PATH")
+            self.warn("cannot build documentation")
+            return
+
+        doc_dir = os.path.join('share', 'doc', 'roundup', 'html')
+        temp_dir = os.path.join(self.build_temp, 'doc')
+        cmd = [sphinx, '-d', temp_dir, 'doc', doc_dir]
+        spawn(cmd)
index fd32103a8b6563e929b1ac7db64b9832eb8f3c70..f9fddac77bbe69279286c1c0f1ed54542e2c1e36 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -18,6 +18,8 @@
 #
 # $Id: setup.py,v 1.105 2008-09-01 01:58:32 richard Exp $
 
+
+from roundup.dist.command.build_doc import build_doc
 from distutils.core import setup, Extension
 from distutils.util import get_platform
 from distutils.file_util import write_file
@@ -37,6 +39,15 @@ if not hasattr(DistributionMetadata, 'classifiers'):
 
 from roundup import msgfmt
 
+def include(d, e):
+    """Generate a pair of (directory, file-list) for installation.
+
+    'd' -- A directory
+
+    'e' -- A glob pattern"""
+    
+    return (d, [f for f in glob('%s/%s'%(d, e)) if os.path.isfile(f)])
+
 #############################################################################
 ### Build script files
 #############################################################################
@@ -340,6 +351,9 @@ def main():
         installdatafiles.append((os.path.dirname(_mo_file),
             [os.path.join("build", _mo_file)]))
 
+    # add docs
+    installdatafiles.append(include(os.path.join('share', 'doc', 'roundup', 'html'), '*'))
+
     # perform the setup action
     from roundup import __version__
     setup_args = {
@@ -422,6 +436,7 @@ mysql and postgresql).
 
         # Override certain command classes with our own ones
         'cmdclass': {
+        'build_doc': build_doc,
             'build_scripts': build_scripts_roundup,
             'build_py': build_py_roundup,
             'build': build_roundup,