mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 14:13:21 +00:00
documentation: add autoreload and build for documentation server
This commit is contained in:
parent
77dddbc581
commit
1256744f1b
@ -25,13 +25,12 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import signal
|
||||||
|
|
||||||
from http.server import test, CGIHTTPRequestHandler
|
from http.server import test, CGIHTTPRequestHandler
|
||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
from django.utils import autoreload
|
||||||
# TODO Django 2.2 : implement autoreload following
|
|
||||||
# https://stackoverflow.com/questions/42907285/django-autoreload-add-watched-file
|
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
@ -45,15 +44,15 @@ class Command(BaseCommand):
|
|||||||
"addrport", nargs="?", help="Optional port number, or ipaddr:port"
|
"addrport", nargs="?", help="Optional port number, or ipaddr:port"
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle(self, *args, **kwargs):
|
def build_documentation(self):
|
||||||
os.chdir("doc")
|
os.chdir(os.path.join(self.project_dir, "doc"))
|
||||||
err = os.system("make html")
|
err = os.system("make html")
|
||||||
|
|
||||||
if err != 0:
|
if err != 0:
|
||||||
self.stdout.write("A build error occured, exiting")
|
self.stdout.write("A build error occured")
|
||||||
sys.exit(err)
|
|
||||||
|
|
||||||
os.chdir("_build/html")
|
def start_server(self, **kwargs):
|
||||||
|
os.chdir(os.path.join(self.project_dir, "doc", "_build/html"))
|
||||||
addr = self.default_addr
|
addr = self.default_addr
|
||||||
port = self.default_port
|
port = self.default_port
|
||||||
if kwargs["addrport"]:
|
if kwargs["addrport"]:
|
||||||
@ -69,3 +68,25 @@ class Command(BaseCommand):
|
|||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
test(HandlerClass=CGIHTTPRequestHandler, port=int(port), bind=addr)
|
test(HandlerClass=CGIHTTPRequestHandler, port=int(port), bind=addr)
|
||||||
|
|
||||||
|
def build_and_start_server(self, **kwargs):
|
||||||
|
self.build_documentation()
|
||||||
|
self.start_server(**kwargs)
|
||||||
|
|
||||||
|
def handle(self, *args, **kwargs):
|
||||||
|
self.project_dir = os.getcwd()
|
||||||
|
|
||||||
|
signal.signal(signal.SIGTERM, lambda *args: sys.exit(0))
|
||||||
|
try:
|
||||||
|
if os.environ.get(autoreload.DJANGO_AUTORELOAD_ENV) == "true":
|
||||||
|
reloader = autoreload.get_reloader()
|
||||||
|
reloader.watch_dir(os.path.join(self.project_dir, "doc"), "**/*.rst")
|
||||||
|
autoreload.logger.info(
|
||||||
|
"Watching for file changes with %s", reloader.__class__.__name__
|
||||||
|
)
|
||||||
|
autoreload.start_django(reloader, self.build_and_start_server, **kwargs)
|
||||||
|
else:
|
||||||
|
exit_code = autoreload.restart_with_reloader()
|
||||||
|
sys.exit(exit_code)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
pass
|
||||||
|
@ -106,10 +106,15 @@ La documentation est automatiquement mise en ligne sur readthedocs à chaque env
|
|||||||
|
|
||||||
Pour l'utiliser en local ou globalement pour la modifier, il existe une commande du site qui génère la documentation et lance un serveur la rendant accessible à l'adresse http://localhost:8080.
|
Pour l'utiliser en local ou globalement pour la modifier, il existe une commande du site qui génère la documentation et lance un serveur la rendant accessible à l'adresse http://localhost:8080.
|
||||||
|
|
||||||
|
Cette commande génère la documentation à chacune de ses modifications, inutile de relancer le serveur à chaque fois.
|
||||||
|
|
||||||
.. sourcecode:: bash
|
.. sourcecode:: bash
|
||||||
|
|
||||||
./manage.py documentation
|
./manage.py documentation
|
||||||
|
|
||||||
|
# Il est possible de spécifier un port et une adresse d'écoute différente
|
||||||
|
./manage.py documentation adresse:port
|
||||||
|
|
||||||
Lancer les tests
|
Lancer les tests
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user