diff --git a/docs/source/getting-started.rst b/docs/source/getting-started.rst index ff723a0..ce95644 100644 --- a/docs/source/getting-started.rst +++ b/docs/source/getting-started.rst @@ -40,9 +40,7 @@ To run in docker interactively, try something like: The following environment variables are supported by the docker image: * ``CURRENT_USER_PRINCIPAL``: path to current user principal; defaults to "/$USER" - * ``AUTOCREATE``: whether to automatically create missing directories ("yes" or "no") - * ``DEFAULTS``: whether to create a default directory hierarch with one - calendar and one addressbook ("yes" or "no") + * ``AUTOCREATE``: whether to automatically create missing directories ("defaults", "empty") * ``ROUTE_PREFIX``: HTTP prefix under which Xandikos should run Running from kubernetes diff --git a/xandikos/wsgi.py b/xandikos/wsgi.py index 981610e..2c679e7 100644 --- a/xandikos/wsgi.py +++ b/xandikos/wsgi.py @@ -24,19 +24,34 @@ from .web import XandikosApp, XandikosBackend +create_defaults = False + +autocreate_str = os.getenv("AUTOCREATE") +if autocreate_str == "defaults": + logging.warning("Creating default collections.") + create_defaults = True + autocreate = True +elif autocreate_str in ("empty", "yes"): + autocreate = True +elif autocreate_str in (None, "no"): + autocreate = False +else: + logging.warning("Unknown value for AUTOCREATE: %r", autocreate_str) + autocreate = False + backend = XandikosBackend(path=os.environ["XANDIKOSPATH"]) if not os.path.isdir(backend.path): - if os.getenv("AUTOCREATE"): + if autocreate: os.makedirs(os.environ["XANDIKOSPATH"]) else: logging.warning("%r does not exist.", backend.path) current_user_principal = os.environ.get("CURRENT_USER_PRINCIPAL", "/user/") if not backend.get_resource(current_user_principal): - if os.getenv("AUTOCREATE"): + if autocreate: backend.create_principal( current_user_principal, - create_defaults=os.environ["AUTOCREATE"] == "defaults", + create_defaults=create_defaults ) else: logging.warning(