=========== PyCommunity =========== `PyCommunity` is a script that generates a static html website by browsing a subversion repository, looking for reSTructuredText documents. The idea is to provide a way to automate a project website update everytime developers change the documents founded throughout the subversion tree. Subversion Layout ================= To work, `PyCommunity` browses : - a list of packages and extract their documents. - a directory that holds recipes, to build a cookbook - a directory that holds tutorials - a file that contains a glossary - a file, that is the main README - a file that is used as the content of the package list page A typical layout would be:: project | | |-- src | | | |-- package1 | | | | | module1.py | |-- doc | | | |--- packages.txt | | | |-- README.txt | | | |--- glossary.txt | | | |--- recipes | | | | | |-- recipe1.txt | | | |--- tutorials | | | | | |-- tutorial1.txt packages.txt ------------ This file is used as a introduction text in the packages index page. README.txt ---------- Used in the main page The glossary file ----------------- The glossary file contains all project common words. The idea is to collect all words and unify terms, in order to avoid speaking about the same thing, using two different words. The glossary is a text file. Each line is composed of a word a `:` character, and a short definition:: glossary: A file that contains definitions doctest: A document with runnable examples The recipe folder ----------------- The recipe folder contains reSTructuredText files. They can use an extended tag to mark words that are in the glossary:: My super restfile ----------------- is about {{doctest}} This allows PyCommunity to generate links and hints in the tutorials when it founds such tags. The filename without it suffix, is the id of the recipe. The Tutorial folder ------------------- The tutorial folder contains reSTructuredText files. They can use an extended tag to mark words that are in the glossary, like recipes. It can also link to a recipe, by using a recipe prefix and a tag like glossary:: look at {{recipe:recipe_1}} for details `PyCommunity` will replace it with the recipe title and a link to the recipe. The filename without it suffix, is the id of the tutorial. The code packages ----------------- `PyCommunity` lists all packages, and scans each one of them, to look for all files with the `.txt` extension. `README.txt` is mandatory. The files can also use glossary, recipe and tutorial tags:: look at {{tutorial:tutorial_1}} for details Website Layout ============== `PyCommunity` generates a web structure that looks like this:: index.html == main README glossary.html packages index.html (packages list + package.txt content) package1 index.html (==README.txt) epydoc (epydoc) module1.html tutorials.html (tutorials list) tutorials tutorial1.html cookbook.html (recipe lists) cookbook recipe1.html Configuration ============= `PyCommunity` uses `pycommunity.conf` file to know where to get its data. Each type of document described in the previous section can be located in several places. Target is the folder where the website will be generated. Example:: [packages] Package1 = /home/repository/project/src/package1 Package2 = /home/repository/project/src/package2 [templates] index=templates/index.pt tutorial=templates/tutorial.pt recipe=templates/recipe.pt glossary=templates/glossary.pt recipelist=templates/recipelist.pt tutoriallist=templates/tutoriallist.pt packageindex=templates/packageindex.pt packagedoc=templates/packagedoc.pt packagestats=templates/packagestats.pt packagesindex=templates/packagesindex.pt css=templates/pycommunity.css [options] projectname=PyCommunity media=templates/media glossary=/home/repository/project/doc/glossary.txt index=/home/repository/project/doc/README.txt packages=/home/repository/project/doc/packages.txt [recipes] recipes = /home/repository/project/doc/recipes more_recipes = /home/repository/project/doc/recipes2 [tutorials] tutos = /home/repository/project/doc/tutorials [target] target1=/home/www Usage ===== `PyCommunity` is launched directly, with an optional parameter that points to the configuration file. It tries to find it in the current directory if none is provided. A log file is aslo filled, describing all tasks ran by the tool.