From 4ef493064365f7a4bfc84edc4c69f9c91b390a66 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Sat, 8 Feb 2025 20:32:41 +0100 Subject: [PATCH] Adapt to packaging/installation pattern established with ytplom. --- .gitmodules | 2 +- install.sh | 13 +++++++++++++ scripts/pre-commit | 5 +---- .pylintrc => src/.pylintrc | 0 {migrations => src/migrations}/0_init.sql | 0 .../migrations}/1_add_Todo_comment.sql | 0 .../migrations}/2_add_Todo_effort.sql | 0 .../3_add_Todo_and_Process_calendarize.sql | 0 ...4_create_Process_blockers_Todo_blockers.sql | 0 .../5_create_process_step_suppressions.sql | 0 .../6_add_Day_days_since_millennium.sql | 0 .../migrations}/7_redo_Day_id.sql | 0 {migrations => src/migrations}/init_7.sql | 0 plomlib => src/plomlib | 0 {plomtask => src/plomtask}/__init__.py | 0 {plomtask => src/plomtask}/conditions.py | 0 {plomtask => src/plomtask}/dating.py | 0 {plomtask => src/plomtask}/days.py | 0 {plomtask => src/plomtask}/db.py | 0 {plomtask => src/plomtask}/exceptions.py | 0 {plomtask => src/plomtask}/http.py | 0 {plomtask => src/plomtask}/misc.py | 0 {plomtask => src/plomtask}/processes.py | 0 {plomtask => src/plomtask}/todos.py | 0 .../plomtask}/versioned_attributes.py | 0 requirements.txt => src/requirements.txt | 0 run.py => src/run.py | 16 ++++++++++++---- {templates => src/templates}/_base.html | 0 {templates => src/templates}/_macros.html | 0 {templates => src/templates}/calendar.html | 0 {templates => src/templates}/calendar_txt.html | 0 {templates => src/templates}/condition.html | 0 .../templates}/condition_descriptions.html | 0 .../templates}/condition_titles.html | 0 {templates => src/templates}/conditions.html | 0 {templates => src/templates}/day.html | 0 {templates => src/templates}/msg.html | 0 {templates => src/templates}/process.html | 0 .../templates}/process_descriptions.html | 0 .../templates}/process_efforts.html | 0 .../templates}/process_titles.html | 0 {templates => src/templates}/processes.html | 0 {templates => src/templates}/todo.html | 0 {templates => src/templates}/todos.html | 0 {tests => src/tests}/__init__.py | 0 {tests => src/tests}/conditions.py | 0 {tests => src/tests}/days.py | 0 {tests => src/tests}/misc.py | 0 {tests => src/tests}/processes.py | 0 {tests => src/tests}/todos.py | 0 {tests => src/tests}/utils.py | 0 taskplom | 18 ++++++++++++++++++ 52 files changed, 45 insertions(+), 9 deletions(-) create mode 100755 install.sh rename .pylintrc => src/.pylintrc (100%) rename {migrations => src/migrations}/0_init.sql (100%) rename {migrations => src/migrations}/1_add_Todo_comment.sql (100%) rename {migrations => src/migrations}/2_add_Todo_effort.sql (100%) rename {migrations => src/migrations}/3_add_Todo_and_Process_calendarize.sql (100%) rename {migrations => src/migrations}/4_create_Process_blockers_Todo_blockers.sql (100%) rename {migrations => src/migrations}/5_create_process_step_suppressions.sql (100%) rename {migrations => src/migrations}/6_add_Day_days_since_millennium.sql (100%) rename {migrations => src/migrations}/7_redo_Day_id.sql (100%) rename {migrations => src/migrations}/init_7.sql (100%) rename plomlib => src/plomlib (100%) rename {plomtask => src/plomtask}/__init__.py (100%) rename {plomtask => src/plomtask}/conditions.py (100%) rename {plomtask => src/plomtask}/dating.py (100%) rename {plomtask => src/plomtask}/days.py (100%) rename {plomtask => src/plomtask}/db.py (100%) rename {plomtask => src/plomtask}/exceptions.py (100%) rename {plomtask => src/plomtask}/http.py (100%) rename {plomtask => src/plomtask}/misc.py (100%) rename {plomtask => src/plomtask}/processes.py (100%) rename {plomtask => src/plomtask}/todos.py (100%) rename {plomtask => src/plomtask}/versioned_attributes.py (100%) rename requirements.txt => src/requirements.txt (100%) rename run.py => src/run.py (81%) rename {templates => src/templates}/_base.html (100%) rename {templates => src/templates}/_macros.html (100%) rename {templates => src/templates}/calendar.html (100%) rename {templates => src/templates}/calendar_txt.html (100%) rename {templates => src/templates}/condition.html (100%) rename {templates => src/templates}/condition_descriptions.html (100%) rename {templates => src/templates}/condition_titles.html (100%) rename {templates => src/templates}/conditions.html (100%) rename {templates => src/templates}/day.html (100%) rename {templates => src/templates}/msg.html (100%) rename {templates => src/templates}/process.html (100%) rename {templates => src/templates}/process_descriptions.html (100%) rename {templates => src/templates}/process_efforts.html (100%) rename {templates => src/templates}/process_titles.html (100%) rename {templates => src/templates}/processes.html (100%) rename {templates => src/templates}/todo.html (100%) rename {templates => src/templates}/todos.html (100%) rename {tests => src/tests}/__init__.py (100%) rename {tests => src/tests}/conditions.py (100%) rename {tests => src/tests}/days.py (100%) rename {tests => src/tests}/misc.py (100%) rename {tests => src/tests}/processes.py (100%) rename {tests => src/tests}/todos.py (100%) rename {tests => src/tests}/utils.py (100%) create mode 100755 taskplom diff --git a/.gitmodules b/.gitmodules index 42cf7f3..4c97e95 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "plomlib"] - path = plomlib + path = src/plomlib url = https://plomlompom.com/repos/clone/plomlib diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..a28e15f --- /dev/null +++ b/install.sh @@ -0,0 +1,13 @@ +#!/usr/bin/sh +set -e + +PATH_APP_SHARE=~/.local/share/taskplom +PATH_LOCAL_BIN=~/.local/bin +NAME_EXECUTABLE=taskplom + +mkdir -p "${PATH_APP_SHARE}" "${PATH_LOCAL_BIN}" + +cp -r ./src/* "${PATH_APP_SHARE}/" +cp "${NAME_EXECUTABLE}" "${PATH_LOCAL_BIN}/" + +echo "Installed executable to ${PATH_LOCAL_BIN}/${NAME_EXECUTABLE}, app files to ${PATH_APP_SHARE}." diff --git a/scripts/pre-commit b/scripts/pre-commit index 0dd4d45..21ad816 100755 --- a/scripts/pre-commit +++ b/scripts/pre-commit @@ -1,5 +1,5 @@ #!/bin/sh -set -e +cd src for dir in $(echo '.' 'plomtask' 'tests'); do echo "Running mypy on ${dir}/ …." python3 -m mypy ${dir}/*.py @@ -10,7 +10,4 @@ for dir in $(echo '.' 'plomtask' 'tests'); do done echo "Running unittest-parallel on tests/." unittest-parallel -t . -s tests/ -p '*.py' -set +e rm test_db:* -set -e -exit 0 diff --git a/.pylintrc b/src/.pylintrc similarity index 100% rename from .pylintrc rename to src/.pylintrc diff --git a/migrations/0_init.sql b/src/migrations/0_init.sql similarity index 100% rename from migrations/0_init.sql rename to src/migrations/0_init.sql diff --git a/migrations/1_add_Todo_comment.sql b/src/migrations/1_add_Todo_comment.sql similarity index 100% rename from migrations/1_add_Todo_comment.sql rename to src/migrations/1_add_Todo_comment.sql diff --git a/migrations/2_add_Todo_effort.sql b/src/migrations/2_add_Todo_effort.sql similarity index 100% rename from migrations/2_add_Todo_effort.sql rename to src/migrations/2_add_Todo_effort.sql diff --git a/migrations/3_add_Todo_and_Process_calendarize.sql b/src/migrations/3_add_Todo_and_Process_calendarize.sql similarity index 100% rename from migrations/3_add_Todo_and_Process_calendarize.sql rename to src/migrations/3_add_Todo_and_Process_calendarize.sql diff --git a/migrations/4_create_Process_blockers_Todo_blockers.sql b/src/migrations/4_create_Process_blockers_Todo_blockers.sql similarity index 100% rename from migrations/4_create_Process_blockers_Todo_blockers.sql rename to src/migrations/4_create_Process_blockers_Todo_blockers.sql diff --git a/migrations/5_create_process_step_suppressions.sql b/src/migrations/5_create_process_step_suppressions.sql similarity index 100% rename from migrations/5_create_process_step_suppressions.sql rename to src/migrations/5_create_process_step_suppressions.sql diff --git a/migrations/6_add_Day_days_since_millennium.sql b/src/migrations/6_add_Day_days_since_millennium.sql similarity index 100% rename from migrations/6_add_Day_days_since_millennium.sql rename to src/migrations/6_add_Day_days_since_millennium.sql diff --git a/migrations/7_redo_Day_id.sql b/src/migrations/7_redo_Day_id.sql similarity index 100% rename from migrations/7_redo_Day_id.sql rename to src/migrations/7_redo_Day_id.sql diff --git a/migrations/init_7.sql b/src/migrations/init_7.sql similarity index 100% rename from migrations/init_7.sql rename to src/migrations/init_7.sql diff --git a/plomlib b/src/plomlib similarity index 100% rename from plomlib rename to src/plomlib diff --git a/plomtask/__init__.py b/src/plomtask/__init__.py similarity index 100% rename from plomtask/__init__.py rename to src/plomtask/__init__.py diff --git a/plomtask/conditions.py b/src/plomtask/conditions.py similarity index 100% rename from plomtask/conditions.py rename to src/plomtask/conditions.py diff --git a/plomtask/dating.py b/src/plomtask/dating.py similarity index 100% rename from plomtask/dating.py rename to src/plomtask/dating.py diff --git a/plomtask/days.py b/src/plomtask/days.py similarity index 100% rename from plomtask/days.py rename to src/plomtask/days.py diff --git a/plomtask/db.py b/src/plomtask/db.py similarity index 100% rename from plomtask/db.py rename to src/plomtask/db.py diff --git a/plomtask/exceptions.py b/src/plomtask/exceptions.py similarity index 100% rename from plomtask/exceptions.py rename to src/plomtask/exceptions.py diff --git a/plomtask/http.py b/src/plomtask/http.py similarity index 100% rename from plomtask/http.py rename to src/plomtask/http.py diff --git a/plomtask/misc.py b/src/plomtask/misc.py similarity index 100% rename from plomtask/misc.py rename to src/plomtask/misc.py diff --git a/plomtask/processes.py b/src/plomtask/processes.py similarity index 100% rename from plomtask/processes.py rename to src/plomtask/processes.py diff --git a/plomtask/todos.py b/src/plomtask/todos.py similarity index 100% rename from plomtask/todos.py rename to src/plomtask/todos.py diff --git a/plomtask/versioned_attributes.py b/src/plomtask/versioned_attributes.py similarity index 100% rename from plomtask/versioned_attributes.py rename to src/plomtask/versioned_attributes.py diff --git a/requirements.txt b/src/requirements.txt similarity index 100% rename from requirements.txt rename to src/requirements.txt diff --git a/run.py b/src/run.py similarity index 81% rename from run.py rename to src/run.py index 0d50d25..3e45ad8 100755 --- a/run.py +++ b/src/run.py @@ -1,12 +1,20 @@ #!/usr/bin/env python3 """Call this to start the application.""" + +# included libs from sys import exit as sys_exit from os import environ from pathlib import Path -from plomtask.exceptions import HandledException -from plomtask.http import TaskHandler, TaskServer -from plomtask.db import DatabaseFile -from plomlib.db import PlomDbException +# might need module installation(s) +try: + from plomtask.exceptions import HandledException + from plomtask.http import TaskHandler, TaskServer + from plomtask.db import DatabaseFile + from plomlib.db import PlomDbException +except ModuleNotFoundError as e: + print('FAIL: Missing module(s), please run with "install_deps" argument.') + print(e) + sys_exit(1) PLOMTASK_DB_PATH = environ.get('PLOMTASK_DB_PATH') HTTP_PORT = 8082 diff --git a/templates/_base.html b/src/templates/_base.html similarity index 100% rename from templates/_base.html rename to src/templates/_base.html diff --git a/templates/_macros.html b/src/templates/_macros.html similarity index 100% rename from templates/_macros.html rename to src/templates/_macros.html diff --git a/templates/calendar.html b/src/templates/calendar.html similarity index 100% rename from templates/calendar.html rename to src/templates/calendar.html diff --git a/templates/calendar_txt.html b/src/templates/calendar_txt.html similarity index 100% rename from templates/calendar_txt.html rename to src/templates/calendar_txt.html diff --git a/templates/condition.html b/src/templates/condition.html similarity index 100% rename from templates/condition.html rename to src/templates/condition.html diff --git a/templates/condition_descriptions.html b/src/templates/condition_descriptions.html similarity index 100% rename from templates/condition_descriptions.html rename to src/templates/condition_descriptions.html diff --git a/templates/condition_titles.html b/src/templates/condition_titles.html similarity index 100% rename from templates/condition_titles.html rename to src/templates/condition_titles.html diff --git a/templates/conditions.html b/src/templates/conditions.html similarity index 100% rename from templates/conditions.html rename to src/templates/conditions.html diff --git a/templates/day.html b/src/templates/day.html similarity index 100% rename from templates/day.html rename to src/templates/day.html diff --git a/templates/msg.html b/src/templates/msg.html similarity index 100% rename from templates/msg.html rename to src/templates/msg.html diff --git a/templates/process.html b/src/templates/process.html similarity index 100% rename from templates/process.html rename to src/templates/process.html diff --git a/templates/process_descriptions.html b/src/templates/process_descriptions.html similarity index 100% rename from templates/process_descriptions.html rename to src/templates/process_descriptions.html diff --git a/templates/process_efforts.html b/src/templates/process_efforts.html similarity index 100% rename from templates/process_efforts.html rename to src/templates/process_efforts.html diff --git a/templates/process_titles.html b/src/templates/process_titles.html similarity index 100% rename from templates/process_titles.html rename to src/templates/process_titles.html diff --git a/templates/processes.html b/src/templates/processes.html similarity index 100% rename from templates/processes.html rename to src/templates/processes.html diff --git a/templates/todo.html b/src/templates/todo.html similarity index 100% rename from templates/todo.html rename to src/templates/todo.html diff --git a/templates/todos.html b/src/templates/todos.html similarity index 100% rename from templates/todos.html rename to src/templates/todos.html diff --git a/tests/__init__.py b/src/tests/__init__.py similarity index 100% rename from tests/__init__.py rename to src/tests/__init__.py diff --git a/tests/conditions.py b/src/tests/conditions.py similarity index 100% rename from tests/conditions.py rename to src/tests/conditions.py diff --git a/tests/days.py b/src/tests/days.py similarity index 100% rename from tests/days.py rename to src/tests/days.py diff --git a/tests/misc.py b/src/tests/misc.py similarity index 100% rename from tests/misc.py rename to src/tests/misc.py diff --git a/tests/processes.py b/src/tests/processes.py similarity index 100% rename from tests/processes.py rename to src/tests/processes.py diff --git a/tests/todos.py b/src/tests/todos.py similarity index 100% rename from tests/todos.py rename to src/tests/todos.py diff --git a/tests/utils.py b/src/tests/utils.py similarity index 100% rename from tests/utils.py rename to src/tests/utils.py diff --git a/taskplom b/taskplom new file mode 100755 index 0000000..4bc1be6 --- /dev/null +++ b/taskplom @@ -0,0 +1,18 @@ +#!/usr/bin/sh +set -e + +PATH_APP_SHARE=~/.local/share/taskplom +PATH_VENV="${PATH_APP_SHARE}/venv" + +python3 -m venv "${PATH_VENV}" +. "${PATH_VENV}/bin/activate" + +if [ "$1" = "install_deps" ]; then + echo "Checking dependencies." + pip3 install -r "${PATH_APP_SHARE}/requirements.txt" + exit 0 +fi + +export PYTHONPATH="${PATH_APP_SHARE}:${PYTHONPATH}" +cd "${PATH_APP_SHARE}" +./run.py $@ -- 2.30.2