diff --git a/app/__init__.py b/README.md similarity index 100% rename from app/__init__.py rename to README.md diff --git a/git-pusher.service b/git-pusher.service new file mode 100644 index 0000000..bbfb89e --- /dev/null +++ b/git-pusher.service @@ -0,0 +1,15 @@ +[Unit] +Description=Logs-Preparer for +After=network.target + +[Service] +Type=simple +WorkingDirectory= +ExecStart=poetry run git-pusher -w +CPUSchedulingPolicy=idle +IOSchedulingClass=3 +Restart=always +RestartSec=3 + +[Install] +WantedBy=default.target diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..ba9c2f8 --- /dev/null +++ b/install.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +HELP=$(cat <<'EOF' +Missing required args: + +-i - ID +-w - Watching path +EOF +) + +POETRY=$(which poetry) + +if [ -z $POETRY ]; then + echo "You need Poetry to be installed" + exit 1 +fi + +while getopts ":i:w:" opt; do + case $opt in + i) ID="$OPTARG" + ;; + w) WATCH_DIR="$OPTARG" + ;; + \?) echo "Invalid option -$OPTARG" >&2 + exit 1 + ;; + esac + + case $OPTARG in + -*) echo "Option $opt needs a valid argument" + exit 1 + ;; + esac +done + +if [ -z $WATCH_DIR ]; then + echo "$HELP" + exit -1 +fi + +printf "WATCH_DIR = %s\n" "$WATCH_DIR" + +FNAME="git-pusher-$ID.service" +SERVICEFILE="$HOME/.config/systemd/user/$FNAME" + +echo "FNAME = $FNAME" +echo "SERVICEFILE = $SERVICEFILE" + +if [ -f $SERVICEFILE ]; then + echo "Disabling current service..." + systemctl --user stop $FNAME + systemctl --user disable $FNAME + systemctl --user daemon-reload + sudo rm $SERVICEFILE +fi + +echo "Preparing" + +poetry lock +poetry install + +echo "Creating service file..." + +cat git-pusher.service | sed 's??'`pwd`'?' | sed 's??'$WATCH_DIR'?' | sudo tee -a "$SERVICEFILE" > /dev/null + +echo "Reloading daemons..." + +systemctl --user daemon-reload + +echo "Enabling daemon for user..." + +systemctl --user enable $FNAME + +echo "Starting daemon for user..." + +systemctl --user start $FNAME diff --git a/pyproject.toml b/pyproject.toml index 770639a..15a88bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,11 +4,16 @@ version = "0.1.0" description = "" authors = ["bvn13 "] readme = "README.md" +packages = [ + { include = "src" } +] [tool.poetry.dependencies] python = "^3.12" scheduler = "^0.8.7" +[tool.poetry.scripts] +git-pusher = "src.main:start" [build-system] requires = ["poetry-core"] diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/logger.py b/src/logger.py similarity index 100% rename from app/logger.py rename to src/logger.py diff --git a/main.py b/src/main.py similarity index 91% rename from main.py rename to src/main.py index 979240d..7478182 100644 --- a/main.py +++ b/src/main.py @@ -1,7 +1,7 @@ import argparse import subprocess -from app.logger import logger as l +from src.logger import logger as l import datetime as dt import subprocess as proc from scheduler import Scheduler @@ -12,14 +12,17 @@ delta = dt.timedelta(hours=3) tz_msk = dt.timezone(offset=delta, name="MSK") logger = l.getChild(__name__) -logger.warning("Starting") +logger.info("Starting") parser = argparse.ArgumentParser(__name__) -parser.add_argument("-w", "--watch", help="Directory to watch") +parser.add_argument("-w", "--watch", required=True, help="Directory to watch") args = parser.parse_args() directory = args.watch +if directory is None: + exit(-1) + logger.info(f"Directory to watch: {directory}")