diff --git a/seqs/paperless.cfg.example b/seqs/paperless.cfg.example new file mode 100644 index 0000000..de9f8e8 --- /dev/null +++ b/seqs/paperless.cfg.example @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +sc_paperlessHome="/opt/paperless" +sc_paperlessDir="${sc_paperlessHome}/paperless-ngx" +sc_paperlessBackupDir="${HOME}/backup" diff --git a/seqs/paperless.sh b/seqs/paperless.sh index b59d764..a41de43 100755 --- a/seqs/paperless.sh +++ b/seqs/paperless.sh @@ -13,24 +13,14 @@ downUrl= sq_paperlessDownLoc="/tmp/paperless_latest.tar.xz" sq_aptOpt= -sc_paperlessHome="/opt/paperless" -sc_paperlessDir="${sc_paperlessHome}/paperless-ngx" - seq_config() { - ## Called once before executing steps. - ## e.g. to source a config file manually: - #. "${seq_origin:?}/${seq_configName:?}" - - ## or to use sequencer api with profile config file support: - #if initSeqConfig -p "${seq_fileName:?}" "${seq_configTemplate:?}" ; then - ## or to use sequencer api with global config file: - #if initSeqConfig "${seq_configName:?}" "${seq_configTemplate:?}" ; then - # sq_config=1 - #else - # # End if no configuration file exists - # dry || return 1 - #fi + if initSeqConfig "${seq_configName:?}" "${seq_configTemplate:?}" ; then + sq_config=1 + else + # End if no configuration file exists + dry || return 1 + fi ## Apt cmdline option to suppress user interaction interactive || sq_aptOpt="-y" @@ -45,14 +35,13 @@ seq_config() { getVersions() { versionNew="${versionNew:-$(curl --silent "$versionUrl" | grep -Po '"tag_name": "v\K.*?(?=")')}" - versionNow=1.7.1 #${versionNow:-$(grep -Po 'Changelog.*Paperless-ngx \K.*?(?= )' 2>/dev/null < "${sc_paperlessDir}/docs/changelog.html")} + versionNow=${versionNow:-$(grep -Po 'Changelog.*Paperless-ngx \K.*?(?= )' 2>/dev/null < "${sc_paperlessDir}/docs/changelog.html")} downUrl="${downUrl:-"https://github.com/paperless-ngx/paperless-ngx/releases/download/v${versionNew:?}/paperless-ngx-v${versionNew:?}.tar.xz"}" } step_1_info() { echo "Status of ${toolName}"; } step_1_alias() { echo "status"; } step_1() { - die "Testende" getVersions info -n "${toolName} " if [[ -n "${versionNow}" ]] ; then @@ -74,26 +63,30 @@ step_3_info() { echoinfoArgs "[status|start|stop]"; echo "Manage ${toolName} ser step_3_alias() { echo "service"; } step_3() { shift - local serviceCommand="status" - local serviceOpt="-n 0" - case "${1:-}" in + local serviceCommand="is-active" + case "${1:-"status"}" in start) - serviceOpt= serviceCommand="${1}" ;; stop) - serviceOpt= serviceCommand="${1}" ;; status) - serviceCommand="${1}" ;; + serviceCommand="is-active" + info -n "paperless-webserver: " + exe systemctl "${serviceCommand:?}" paperless-webserver + info -na "paperless-scheduler: " + exe systemctl "${serviceCommand:?}" paperless-scheduler + info -na "paperless-consumer : " + exe systemctl "${serviceCommand:?}" paperless-consumer + return 0 ;; "") ;; *) error "Unknown command ${1:-"-"}" return 1 ;; esac - exe systemctl ${serviceOpt:-} "${serviceCommand:?}" paperless-webserver - exe systemctl ${serviceOpt:-} "${serviceCommand:?}" paperless-scheduler - exe systemctl ${serviceOpt:-} "${serviceCommand:?}" paperless-consumer + exe systemctl "${serviceCommand:?}" paperless-webserver + exe systemctl "${serviceCommand:?}" paperless-scheduler + exe systemctl "${serviceCommand:?}" paperless-consumer } step_10_info() { echo "Install python3"; } @@ -141,7 +134,6 @@ step_12() { exe tar -xf "${sq_paperlessDownLoc}" -C "${sc_paperlessHome}" exe chown -R "${toolUser}": "${sc_paperlessDir}" - exe install --owner="${toolUser}" --group="${toolUser}" -d "${sc_paperlessHome}/"{consume,data,media} if ((toolUpgrade)) ; then info "Moving over ${toolName} and gunicorn configuration" @@ -170,6 +162,7 @@ step_13() { step_14_info() { echo "Initialization"; } step_14() { + exe install --owner="${toolUser}" --group="${toolUser}" -d "${sc_paperlessHome}/"{consume,data,media} exe cd "${sc_paperlessDir}/src" exe sudo -Hu paperless python3 manage.py migrate exe sudo -Hu paperless python3 manage.py createsuperuser @@ -183,9 +176,42 @@ step_16() { exe sudo -Hu paperless python3 manage.py migrate } -step_20_info() { echo "Notes"; } -step_20_alias() { echo "notes"; } -step_20() { +step_18_info() { + echoinfoArgs "[OPTIONS]"; echo "Retag existing documents" + echoinfo "OPTIONS" + echoinfo " -c, --correspondent" + echoinfo " -T, --tags" + echoinfo " -t, --document_type" + echoinfo " -i, --inbox-only" + echoinfo " --use-first" + echoinfo " -f, --overwrite" +} +step_18_alias() { echo "retag"; } +step_18() { + shift + exe cd "${sc_paperlessDir}/src" + exe sudo -Hu paperless python3 manage.py document_retagger "$@" +} + + +step_30_info() { echoinfoArgs "[--nostart]"; echo "Backup ${toolName}"; } +step_30_alias() { echo "backup"; } +step_30() { + shift + info "Doing backup..." + step service stop + exe cd "$(dirname -- "${sc_paperlessHome}")" + exe tar czf "${sc_paperlessBackupDir:-"${HOME}/backup"}/paperless_backup_$(date +%Y%m%d-%H%M%S).tar.gz" "$(basename -- "${sc_paperlessHome}")" + if [[ ${1:-} == "--nostart" ]] ; then + info "Not starting ${toolName} services after backup" + else + step service start + fi +} + +step_100_info() { echo "Notes"; } +step_100_alias() { echo "notes"; } +step_100() { color green cat <