From a9008e9b047fe8d98c9f45d38e708f862c886521 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 30 Aug 2014 20:44:11 +0200 Subject: [PATCH] improvements on the dev documentation website - new home page (inspired from the python's one) - add a "How to contribute" page - add logo/favicon - more customizations --- docs/source/_static/favicon.ico | Bin 0 -> 11481 bytes docs/source/_static/logo.png | Bin 0 -> 20669 bytes docs/source/_templates/indexcontent.html | 38 +++++++++ docs/source/_templates/indexsidebar.html | 7 ++ docs/source/conf.py | 28 ++++--- docs/source/contents.rst | 8 ++ docs/source/guides/contribute.rst | 99 +++++++++++++++++++++++ docs/source/guides/index.rst | 1 + docs/source/index.rst | 15 ++-- docs/source/overview.rst | 2 +- 10 files changed, 180 insertions(+), 18 deletions(-) create mode 100644 docs/source/_static/favicon.ico create mode 100644 docs/source/_static/logo.png create mode 100644 docs/source/_templates/indexcontent.html create mode 100644 docs/source/_templates/indexsidebar.html create mode 100644 docs/source/contents.rst create mode 100644 docs/source/guides/contribute.rst diff --git a/docs/source/_static/favicon.ico b/docs/source/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..771947db3ae4f90b20c063173060e3adfeb36bdb GIT binary patch literal 11481 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/logo.png b/docs/source/_static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d6e770a505fea42388d31eb15b7e636aa9332923 GIT binary patch literal 20669 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 literal 0 HcmV?d00001 diff --git a/docs/source/_templates/indexcontent.html b/docs/source/_templates/indexcontent.html new file mode 100644 index 00000000..ee48cb7d --- /dev/null +++ b/docs/source/_templates/indexcontent.html @@ -0,0 +1,38 @@ +{% extends "defindex.html" %} +{% block tables %} + + +

Guides:

+ + +
+ + + + + +
+ +

Indices and tables:

+ + +
+ + + + + +
+ +{% endblock %} diff --git a/docs/source/_templates/indexsidebar.html b/docs/source/_templates/indexsidebar.html new file mode 100644 index 00000000..01d397bd --- /dev/null +++ b/docs/source/_templates/indexsidebar.html @@ -0,0 +1,7 @@ +

Other resources

+ diff --git a/docs/source/conf.py b/docs/source/conf.py index 92a4d905..ad4c052c 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -11,7 +11,7 @@ # All configuration values have a default; values that are commented out # serve to show the default. -import os +import os, time os.system('./genapi.py') @@ -40,7 +40,7 @@ master_doc = 'index' # General information about the project. project = u'Weboob' -copyright = u'2010-2012, Weboob Team' +copyright = '2010-%s, The Weboob Team' % time.strftime('%Y') # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -98,26 +98,26 @@ html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. -#html_theme_options = {} +#html_theme_options = {'collapsiblesidebar': True} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". -#html_title = None +#html_title = 'Weboob development' # 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 +html_logo = '_static/logo.png' # 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 +html_favicon = 'favicon.ico' # 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, @@ -130,14 +130,18 @@ html_static_path = ['_static'] # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. -#html_use_smartypants = True +html_use_smartypants = True # Custom sidebar templates, maps document names to template names. -#html_sidebars = {} +html_sidebars = { + 'index': 'indexsidebar.html' +} # Additional templates that should be rendered to pages, maps page names to # template names. -#html_additional_pages = {} +html_additional_pages = { + 'index': 'indexcontent.html' +} # If false, no module index is generated. #html_use_modindex = True @@ -146,10 +150,10 @@ html_static_path = ['_static'] #html_use_index = True # If true, the index is split into individual pages for each letter. -#html_split_index = False +html_split_index = False # If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True +html_show_sourcelink = False # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the @@ -160,7 +164,7 @@ html_static_path = ['_static'] #html_file_suffix = '' # Output file base name for HTML help builder. -htmlhelp_basename = 'Weboobdoc' +htmlhelp_basename = 'weboob' + release.replace('.', '') # -- Options for LaTeX output -------------------------------------------------- diff --git a/docs/source/contents.rst b/docs/source/contents.rst new file mode 100644 index 00000000..ee189147 --- /dev/null +++ b/docs/source/contents.rst @@ -0,0 +1,8 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + Weboob Documentation contents +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +.. toctree:: + + guides/index + api/index diff --git a/docs/source/guides/contribute.rst b/docs/source/guides/contribute.rst new file mode 100644 index 00000000..adb89646 --- /dev/null +++ b/docs/source/guides/contribute.rst @@ -0,0 +1,99 @@ +How to contribute +================= + +By coding +********* + +Write a patch +------------- + +Help yourself with the `documentation `_. + +Find an opened issue on this website, or write you own bugfix or feature. Then, once it is necessary, commit with:: + + $ git commit -a + +Do not forget to write a helpful commit message. + +Check your patch +---------------- + +You can run these scripts to be sure your patch doesn't break anything:: + + $ tools/pyflakes.sh + $ tools/run_tests.sh yourmodulename # or without yourmodulename to test everything + +Perhaps you should also write or fix tests. + +Send a patch +------------ + +:: + + $ git format-patch -n -s origin + +Then, send them with this command:: + + $ git send-email --to=weboob@weboob.org *.patch + +You can also send the files by yourself if you haven't any configured MTA on your system. + +Ask for a public repository on git.symlink.me +--------------------------------------------- + +If you think you'll contribute to Weboob regularly, you can ask for a public repository. You'll also be able to push your commits in, and they'll be merged into the main repository easily. + +All git branch are listed here: http://git.symlink.me/ + +By hosting a buildbot slave +*************************** + +To be sure weboob works fine on lot of architectures, OS and configurations, but also that websites haven't changed and backends still support them, it's important to have enough buildbot slaves. + +If you are interested by hosting a buildbot slave, follow these instructions: + +Create a slave +-------------- + +Firstly, you have to install ``pyflakes``, ``nose`` and `buildbot `_. + +Run:: + + $ buildslave create-slave buildbot.weboob.org:9080 + +.. note:: + if you use an old version of buildbot, run ``buildbot`` instead of ``buildslave``. + +Parameters are: + +* **dirname** — the path where you want to setup your slave on your host. +* **name** — the name of your slave. It would be for example your name, your nickname, your hostname. Check on http://buildbot.weboob.org the name you want to use isn't already taken. +* **password** — choose a password to login on the master. + +For example:: + + $ buildslave create-slave /home/me/buildbot buildbot.weboob.org:9080 me secret123 + +Then, edit files in ``/home/me/buildbot/info/`` and run the slave:: + + $ buildslave start /home/me/buildbot + +Contact us +---------- + +To connect your slave to our master, you can send us an email on admin@weboob.org with the following information: + +* The name of your slave; +* The IP address of the host; +* The password of your slave; +* Indicate if you want to run tests for every merges (three times a day) or only do a nightly build. + +When your slave will be accepted, you will see it on http://buildbot.weboob.org/waterfall. + +How it works +------------ + +When a build is requested by master, your slave updates its local git repository, and run ``tools/run_tests.sh``. + +To work correctly, we suggest you to add as many as possible backends with the user of the slave. No private information will be sent to master, and it's better to have tests on backends which need authentication, because not every developers have accounts on them. + diff --git a/docs/source/guides/index.rst b/docs/source/guides/index.rst index 9cf357ba..e9b00f9d 100644 --- a/docs/source/guides/index.rst +++ b/docs/source/guides/index.rst @@ -7,6 +7,7 @@ Contents: :maxdepth: 2 setup + contribute module capability application diff --git a/docs/source/index.rst b/docs/source/index.rst index 10c31fcf..40aed08e 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,9 +1,17 @@ Weboob ====== -This is the developer documentation. If you are not a developer and you are looking for information about the project, check the `official website `. +Weboob (Web Outside Of Browsers) provides: -Contents: +* :doc:`applications ` to interact with websites +* :doc:`modules `, each one handles a specific website +* a :doc:`core library ` providing all the features needed by backends +* :doc:`tools ` to help develop backends and applications + +Weboob is written in Python and is distributed under the AGPLv3+ license. + +.. note:: + This is the developer documentation. If you are not a developer and you are looking for information about the project, check the `official website `_. .. toctree:: :maxdepth: 2 @@ -12,9 +20,6 @@ Contents: guides/index api/index -Indices and tables -================== - * :ref:`genindex` * :ref:`modindex` * :ref:`search` diff --git a/docs/source/overview.rst b/docs/source/overview.rst index a5428b4c..099d230c 100644 --- a/docs/source/overview.rst +++ b/docs/source/overview.rst @@ -1,7 +1,7 @@ Overview ======== -Weboob (Web Outside Of Browsers) provides: +Weboob (`Web Outside Of Browsers`) provides: * :doc:`applications ` to interact with websites * :doc:`modules `, each one handles a specific website