1

e11sync-gunicorn is a bit easier to use

This commit is contained in:
Motiejus Jakštys 2024-01-13 23:07:59 +02:00
parent 4555d5f1f9
commit 96181f5075
2 changed files with 33 additions and 9 deletions

View File

@ -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')
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'
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# 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,
}
}

View File

@ -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 {