Add /api/docs to serve up the documentation

This requires that the docs be at /usr/share/doc/lorax-*/html/ or if
running from the source tree, at ./docs/html/

They can be re-created by running 'make docs'
This commit is contained in:
Brian C. Lane 2017-11-16 18:08:51 -08:00
parent 8db5cdd512
commit 5d6c236af6
1 changed files with 21 additions and 1 deletions

View File

@ -14,11 +14,17 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import logging
log = logging.getLogger("lorax-composer")
from collections import namedtuple
from flask import Flask
from flask import Flask, send_from_directory
from glob import glob
import os
from pylorax.api.crossdomain import crossdomain
from pylorax.api.v0 import v0_api
from pylorax.sysutils import joinpaths
GitLock = namedtuple("GitLock", ["repo", "lock", "dir"])
@ -31,4 +37,18 @@ __all__ = ["server", "GitLock"]
def hello_world():
return 'Hello, World!'
@server.route("/api/docs/")
@server.route("/api/docs/<path:path>")
def api_docs(path=None):
# Find the html docs
try:
docs_path = glob("/usr/share/doc/lorax-*/html/")[0]
except IndexError:
# This assumes it is running from the source tree
docs_path = os.path.abspath(joinpaths(os.path.dirname(__file__), "../../../docs/html"))
if not path:
path="index.html"
return send_from_directory(docs_path, path)
v0_api(server)