{ "info": { "author": "Hong Minhee", "author_email": "dahlia@crosspop.in", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 2 :: Only", "Topic :: Documentation", "Topic :: Software Development :: Documentation" ], "description": "Okydoky\r\n=======\r\n\r\nOkydoky is an automated documentation builder using Sphinx_, GitHub_ and\r\nDistribute_ (which was setuptools_). It makes your closed Python project\r\nto continuously build documentations, with the following assumptions:\r\n\r\n1. Documentation is done using Sphinx.\r\n2. Project is packaged through setuptools_ (not pip_ nor any others).\r\n3. Source code is managed under GitHub.\r\n\r\n**To say shortly, it's simply a ReadTheDocs.org for private use.**\r\n\r\n.. _Sphinx: http://sphinx.pocoo.org/\r\n.. _GitHub: https://github.com/\r\n.. _Distribute: http://pypi.python.org/pypi/distribute\r\n.. _setuptools: http://pypi.python.org/pypi/setuptools\r\n.. _pip: http://www.pip-installer.org/\r\n\r\n\r\nHow it works\r\n------------\r\n\r\nIt works in the following instructions:\r\n\r\n1. When new commits are pushed, GitHub triggers Okydoky `post-receive hook`__.\r\n2. Okydoky downloads `tarball archives`__ of pushed commits from GitHub.\r\n3. Tarball archive gets extracted into a temporary directory.\r\n4. Sphinx builds the documentation.\r\n5. When users request the docs using their web browser,\r\n Okydoky asks the user to authenticate using GitHub OAuth.\r\n6. If they has the authorization, Okydoky serves a built docs.\r\n\r\n__ https://help.github.com/articles/post-receive-hooks\r\n__ http://developer.github.com/v3/repos/contents/#get-archive-link\r\n\r\n\r\nHow to use\r\n----------\r\n\r\nIt's an ordinary Python package. You can install it using ``easy_install``:\r\n\r\n.. code-block:: console\r\n\r\n $ easy_install Okydoky\r\n\r\nThis package provides a command line script called ``okydoky``.\r\nIt's a web application and also a small web server for itself.\r\nIt takes a `config file `.\r\n\r\nConfig files have to contain some required values like GitHub application\r\nkey and secret key.\r\n\r\nYou have to `create a GitHub application`__ to use Okydoky. Its **Callback\r\nURL** is very important. Fill it with::\r\n\r\n http:///auth/finalize\r\n\r\nand replaces ```` with the domain name what you'll use. And then,\r\n`add a post-receive hook`__ into your GitHub repository::\r\n\r\n http:///\r\n\r\nIf you make a config file, then run an Okydoky server using ``okydoky`` script:\r\n\r\n.. code-block:: console\r\n\r\n $ okydoky -H 0.0.0.0 -p 8080 yourconfig.py\r\n\r\nLastly, you have to make an initial auth to finish installation.\r\nOpen ``http:///`` in your web browser and login with GitHub from there.\r\n\r\n__ https://github.com/settings/applications/new\r\n__ https://help.github.com/articles/post-receive-hooks\r\n\r\n\r\n.. _config:\r\n\r\nConfiguration\r\n-------------\r\n\r\nThe config file is a normal Python script. It uses Flask's config system.\r\nRead `Flask's docs about config files`__.\r\n\r\n``REPOSITORY``\r\n The user and repository name e.g. ``'crosspop/okydoky'``.\r\n\r\n``CLIENT_ID``\r\n The GitHub application's client key.\r\n\r\n``CLIENT_SECRET``\r\n The GitHub application's secret key.\r\n\r\n``SAVE_DIRECTORY``\r\n The path of the directory to store data. This directory will store\r\n some configured data, tarballs, and built documentations.\r\n\r\n``SECRET_KEY``\r\n The secret key to sign sessions. See `Flask's docs about sessions`__ also.\r\n\r\n``RECREATE_VIRTUALENV``\r\n Creates the new virtualenv for every build. It's a lot slower than\r\n not using this, but instead makes free from side effects related\r\n ``site-packages``.\r\n\r\n Set any nonzero value e.g. ``1``, ``True`` if you want to\r\n recreate the virtualenv everytime.\r\n\r\n``COMPLETE_HOOK``\r\n The callback function (any callable object) which is called when\r\n the build has complete. It's called for each commit, even if it\r\n failed.\r\n\r\n It takes three positional parameters:\r\n\r\n 1. (``basestring``) Commit hash\r\n 2. (``basestring``) Permalink of the docs. It might be 404\r\n if the build failed.\r\n 3. (``tuple``) Triple ``sys.exc_info()`` function returns\r\n if the build failed. ``None`` if the build succeeded.\r\n\r\n You can utilize the last argument for printing the error traceback\r\n e.g.:\r\n\r\n .. code-block:: python\r\n\r\n import traceback\r\n\r\n def COMPLETE_HOOK(commit_id, permalink, exc_info):\r\n if exc_info is not None:\r\n traceback.print_exception(*exc_info)\r\n\r\n.. workaround a bug of vim syntax highlight*\r\n\r\n__ http://flask.readthedocs.org/en/latest/config/#configuring-from-files\r\n__ http://flask.readthedocs.org/en/latest/quickstart/#sessions\r\n\r\n\r\nSpecial environment variable: ``OKYDOKY``\r\n-----------------------------------------\r\n\r\nOkydoky sets the special environment variable named ``OKYDOKY`` during\r\nits build process. You can determine whether it's built by Okydoky or not.\r\n\r\nFor example, you can add some additional requirements only for Okydoky build\r\nin ``setup.py`` script:\r\n\r\n.. code-block:: python\r\n\r\n import os\r\n from setuptools import setup\r\n\r\n install_requires = ['Flask', 'SQLAlchemy']\r\n\r\n if os.environ.get('OKYDOKY'):\r\n install_requires.extend(['Sphinx', 'sphinxcontrib-httpdomain'])\r\n\r\n setup(\r\n name='YourProject',\r\n install_requires=install_requires\r\n )\r\n\r\nOr ``conf.py`` for Sphinx:\r\n\r\n.. code-block:: python\r\n\r\n import os\r\n\r\n if os.environ.get('OKYDOKY'):\r\n html_theme = 'nature'\r\n else:\r\n html_theme = 'default'\r\n\r\n\r\nOpen source\r\n-----------\r\n\r\nOkydoky is written by `Hong Minhee`__ for Crosspop. It's distributed under\r\n`MIT license`__, and the source code can be found in the `GitHub repository`__.\r\nCheck out:\r\n\r\n.. code-block:: console\r\n\r\n $ git clone git://github.com/crosspop/okydoky.git\r\n\r\n__ http://dahlia.kr/\r\n__ http://minhee.mit-license.org/\r\n__ https://github.com/crosspop/okydoky\r\n\r\n\r\nChangelog\r\n---------\r\n\r\nVersion 0.9.6\r\n'''''''''''''\r\n\r\nReleased on February 12, 2013.\r\n\r\n- Added ``RECREATE_VIRTUALENV`` option which makes it to create\r\n the virtualenv for each build.\r\n- Added ``COMPLETE_HOOK`` option.\r\n- Try recreating the virtualenv if the build has failed first.\r\n- Added ``--proxy-fix`` option for HTTP reverse proxies.\r\n- Added ``--force-https`` option.\r\n- Don't use github-distutils_ anymore to prevent several headaches related\r\n packaging and distribution.\r\n\r\n.. _github-distutils: https://github.com/dahlia/github-distutils\r\n\r\n\r\nVersion 0.9.5\r\n'''''''''''''\r\n\r\nReleased on September 16, 2012.\r\n\r\n- GitHub forced ``state`` for OAuth. Follow that.\r\n\r\n\r\nVersion 0.9.4\r\n'''''''''''''\r\n\r\nReleased on September 3, 2012.\r\n\r\n- Use ``--upgrade`` option for ``setup.py develop`` command.\r\n This prevents version conflicts of dependencies.\r\n- Build logs are left in the ``build.txt`` file.\r\n\r\n\r\nVersion 0.9.3\r\n'''''''''''''\r\n\r\nReleased on July 18, 2012.\r\n\r\n- Now the index page shows the list of refs.\r\n- Now Okydoky sets ``OKYDOKY=1`` environment variable during its build\r\n process. [`#5`_]\r\n- Add ``/head`` special ref url.\r\n- Fixed a bug that the head is not set to the latest commit.\r\n\r\n.. _#5: https://github.com/crosspop/okydoky/issues/5\r\n\r\n\r\nVersion 0.9.2\r\n'''''''''''''\r\n\r\nReleased on July 17, 2012. Hotfix of 0.9.1.\r\n\r\n- Fixed a security bug: now users must have an authorization for the repository.\r\n [`#4`_]\r\n\r\n.. _#4: https://github.com/crosspop/okydoky/issues/4\r\n\r\n\r\nVersion 0.9.1\r\n'''''''''''''\r\n\r\nReleased on July 17, 2012. Hotfix of 0.9.0.\r\n\r\n- Made ``okydoky`` package empty and moved things to ``okydoky.app`` module.\r\n\r\n\r\nVersion 0.9.0\r\n'''''''''''''\r\n\r\nReleased on July 17, 2012.\r\n\r\n- Initial version.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/crosspop/okydoky", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "Okydoky", "package_url": "https://pypi.org/project/Okydoky/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Okydoky/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/crosspop/okydoky" }, "release_url": "https://pypi.org/project/Okydoky/0.9.6/", "requires_dist": null, "requires_python": null, "summary": "Automated docs builder using Sphinx/GitHub/Distribute for private use", "version": "0.9.6" }, "last_serial": 702415, "releases": { "0.9.0": [], "0.9.1": [], "0.9.2": [], "0.9.3": [], "0.9.4": [], "0.9.5": [], "0.9.6": [ { "comment_text": "", "digests": { "md5": "d9db7775ea6593194bde20e54a165c08", "sha256": "373d0c40773697214b4b973b3cb72410683341e7147d26be5b27864b58324650" }, "downloads": -1, "filename": "Okydoky-0.9.6.tar.gz", "has_sig": true, "md5_digest": "d9db7775ea6593194bde20e54a165c08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15668, "upload_time": "2013-02-11T17:40:56", "url": "https://files.pythonhosted.org/packages/72/e4/24690d831a8d944d7a54ebe79c89c4a5346c245b05e42bcad16a37f46b4b/Okydoky-0.9.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d9db7775ea6593194bde20e54a165c08", "sha256": "373d0c40773697214b4b973b3cb72410683341e7147d26be5b27864b58324650" }, "downloads": -1, "filename": "Okydoky-0.9.6.tar.gz", "has_sig": true, "md5_digest": "d9db7775ea6593194bde20e54a165c08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15668, "upload_time": "2013-02-11T17:40:56", "url": "https://files.pythonhosted.org/packages/72/e4/24690d831a8d944d7a54ebe79c89c4a5346c245b05e42bcad16a37f46b4b/Okydoky-0.9.6.tar.gz" } ] }