commit 96181f507570db6bccda0e34b62eeac4882bcaca (tree)
parent 4555d5f1f961dbaed7eb66310511823fcad2df5e
Author: Motiejus Jakštys <motiejus@jakstys.lt>
Date: Sat, 13 Jan 2024 23:07:59 +0200
e11sync-gunicorn is a bit easier to use
Diffstat:
2 files changed, 34 insertions(+), 10 deletions(-)
diff --git a/app/e11sync/settings.py b/app/e11sync/settings.py
@@ -1,13 +1,29 @@
from pathlib import Path
-from os import environ
+from os import environ, path
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
_DEBUG = bool(environ.get('E11SYNC_DEBUG', False))
_COMPRESS_OFFLINE = bool(environ.get('E11SYNC_COMPRESS_OFFLINE', False))
_STATIC_ROOT = environ.get('E11SYNC_STATIC_ROOT', '/tmp/e11sync-static')
_GEOIP_PATH = environ.get('GEOIP_PATH')
-
-# Build paths inside the project like this: BASE_DIR / 'subdir'.
-BASE_DIR = Path(__file__).resolve().parent.parent
+if db := environ.get('E11SYNC_DATABASE_PATH'):
+ _DATABASE_PATH = db
+else:
+ if statedir := environ.get('STATE_DIRECTORY'):
+ _DATABASE_PATH = path.join(statedir, 'db.sqlite3')
+ else:
+ _DATABASE_PATH = BASE_DIR / 'db.sqlite3'
+
+# otherwise it gets printed twice
+if not environ.get("E11SYNC_DEBUG_PRINTED"):
+ print("DEBUG={}".format(_DEBUG))
+ print("COMPRESS_OFFLINE={}".format(_COMPRESS_OFFLINE))
+ print("STATIC_ROOT={}".format(_STATIC_ROOT))
+ print("GEOIP_PATH={}".format(_GEOIP_PATH))
+ print("DATABASE_PATH={}".format(_DATABASE_PATH))
+ environ["E11SYNC_DEBUG_PRINTED"] = "1"
########################################
## No more side effects after this place
@@ -67,7 +83,7 @@ WSGI_APPLICATION = 'e11sync.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': BASE_DIR / 'db.sqlite3',
+ 'NAME': _DATABASE_PATH,
}
}
diff --git a/flake.nix b/flake.nix
@@ -68,8 +68,8 @@
'';
installPhase = ''mv static $out'';
};
- packages.e11sync-gunicorn = pkgs.stdenv.mkDerivation {
- name = "e11sync-gunicorn";
+ packages.e11sync = pkgs.stdenv.mkDerivation {
+ name = "e11sync";
propagatedBuildInputs = [runtimeDeps];
nativeBuildInputs = [pkgs.makeWrapper];
src = self;
@@ -77,7 +77,7 @@
buildPhase = ''
mkdir -p $out;
cp -r ${self}/app $out
- makeWrapper ${pkgs.python3Packages.gunicorn}/bin/gunicorn $out/bin/entrypoint \
+ makeWrapper ${pkgs.python3Packages.gunicorn}/bin/gunicorn $out/bin/e11sync-gunicorn \
--chdir $out/app \
--set-default E11SYNC_HTTP_PORT ${toString gunicornPort} \
--set E11SYNC_DEBUG "" \
@@ -85,6 +85,9 @@
--set GEOIP_PATH "${geoip}" \
--add-flags --bind=127.0.0.1:\$E11SYNC_HTTP_PORT \
--add-flags e11sync.wsgi
+
+ makeWrapper $out/app/manage.py $out/bin/e11sync \
+ --set GEOIP_PATH "${geoip}"
'';
passthru.tests = {
simple =
@@ -100,12 +103,17 @@
};
};
- checks.e11sync = packages.e11sync-gunicorn.passthru.tests.simple;
+ checks.e11sync = packages.e11sync.passthru.tests.simple;
apps.e11sync-gunicorn = {
type = "app";
name = "e11sync-gunicorn";
- program = "${packages.e11sync-gunicorn}/bin/entrypoint";
+ program = let
+ wrapper = pkgs.writeShellScript "wrapper" ''
+ export E11SYNC_DATABASE_PATH=$PWD/db.sqlite3
+ exec ${packages.e11sync}/bin/e11sync-gunicorn
+ '';
+ in "${wrapper}";
};
devShells.default = pkgs.mkShellNoCC {