From 5e1396f124b0c2201436b58d85f9427bd27798a1 Mon Sep 17 00:00:00 2001 From: Flo Date: Sat, 24 Aug 2024 18:07:06 +0000 Subject: [PATCH] initial changes for rehaul --- .idea/.gitignore | 8 ---- .idea/dev.iml | 16 -------- .idea/modules.xml | 8 ---- .idea/php.xml | 22 ---------- .idea/vcs.xml | 8 ---- bin/denv | 10 +++-- bin/dexec | 64 ++++++++++++++++++++++++++++++ bin/drun | 24 ++++++++++- bin/script/exec | 19 --------- bin/script/foreachSystem | 29 +++++++------- bin/script/prune | 10 ----- bin/script/pull | 6 +-- bin/script/setup | 54 ------------------------- bin/script/upgrade | 14 ------- bin/source | 7 ---- docker/docker-compose-mac.yml | 27 +++++++++++++ docker/install | 13 ++++++ python/capture-thermometer-data.py | 37 ----------------- setup | 30 ++++++++++++++ up | 8 +++- 20 files changed, 186 insertions(+), 228 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/dev.iml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/php.xml delete mode 100644 .idea/vcs.xml create mode 100755 bin/dexec delete mode 100755 bin/script/exec delete mode 100755 bin/script/prune delete mode 100755 bin/script/setup delete mode 100755 bin/script/upgrade delete mode 100755 bin/source create mode 100644 docker/docker-compose-mac.yml create mode 100755 docker/install delete mode 100644 python/capture-thermometer-data.py create mode 100755 setup diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/dev.iml b/.idea/dev.iml deleted file mode 100644 index 3a10ba3..0000000 --- a/.idea/dev.iml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 8cc3e82..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml deleted file mode 100644 index 9ef07eb..0000000 --- a/.idea/php.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 7f13aa8..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/bin/denv b/bin/denv index 978286c..8486d4e 100755 --- a/bin/denv +++ b/bin/denv @@ -1,12 +1,16 @@ #!/bin/bash -ENVIRONMENT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )/../../ +ENV_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/../../" &> /dev/null && pwd ) denv() { if [ ! -z $1 ] then - $ENVIRONMENT_DIR/$1 + if [[ "$1" == "setup" ]]; then + echo "SETUP IS ONLY ALLOWED ONCE AFTER CLOING THE ENVIRONMENT!!!" + exit 1 + fi + $ENV_DIR/$1 else - cd $ENVIRONMENT_DIR + cd $ENV_DIR fi } \ No newline at end of file diff --git a/bin/dexec b/bin/dexec new file mode 100755 index 0000000..977c417 --- /dev/null +++ b/bin/dexec @@ -0,0 +1,64 @@ +#!/bin/bash + +denvexec() { + # Überprüfen, ob die richtige Anzahl Argumente übergeben wurden + if [ $# -lt 2 ]; then + echo "Verwendung: denvexec " + return 1 + fi + + local DOCKER_COMMAND="$@" + local ENV_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/.." &> /dev/null && pwd ) + + echo "$SYSTEM_DIR" + echo "$ENV_DIR" + echo "$DOCKER_COMMAND" + + #MAC + if [[ "$OSTYPE" == "darwin"* ]]; then + docker compose -f "${ENV_DIR}/docker/docker-compose-mac.yml" $COMMAND + + #LINUX + elif [[ "$OSTYPE" == "linux-gnu" ]]; then + docker compose -f "${ENV_DIR}/docker/docker-compose.yml" $COMMAND + + else + echo "Dieses Skript wird auf deinem Gerät nicht unterstützt" + exit 1 + fi +} + +dexec() { + # Überprüfen, ob die richtige Anzahl Argumente übergeben wurden + if [ $# -lt 2 ]; then + echo "Verwendung: dexec " + return 1 + fi + + # convert first parameter to system-direcotry, concat the rest + # Teile den String in zwei Teile auf, getrennt durch "-" + local part1="${$1%-*}" # before "-" e.g. auth / bee / etc + local part2="${$1##*-}" # after "-" e.g. backend / frontend + local SYSTEM_DIR="$part2/$part1" + shift # removes first argument + local DOCKER_COMMAND="$@" + + local ENV_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/../.." &> /dev/null && pwd ) + + echo "$SYSTEM_DIR" + echo "$ENV_DIR" + echo "$DOCKER_COMMAND" + + #MAC + if [[ "$OSTYPE" == "darwin"* ]]; then + docker compose -f "${ENV_DIR}/systems/{$SYSTEM_DIR}/docker/docker-compose-mac.yml" $COMMAND + + #LINUX + elif [[ "$OSTYPE" == "linux-gnu" ]]; then + docker compose -f "${ENV_DIR}/systems/{$SYSTEM_DIR}/docker/docker-compose.yml" $COMMAND + + else + echo "Dieses Skript wird auf deinem Gerät nicht unterstützt" + exit 1 + fi +} \ No newline at end of file diff --git a/bin/drun b/bin/drun index bf43fef..bb5351d 100755 --- a/bin/drun +++ b/bin/drun @@ -3,7 +3,7 @@ drun() { # Überprüfen, ob die richtige Anzahl Argumente übergeben wurden if [ $# -lt 2 ]; then - echo "Verwendung: drun " + echo "Verwendung: drun " return 1 fi @@ -26,3 +26,25 @@ drun() { # Befehl im Container ausführen docker exec -it "$CONTAINER_ID" $COMMAND } + +_drun_completion() { + local cur prev opts + COMPREPLY=() # Array, das die Vorschläge enthalten wird + cur="${COMP_WORDS[COMP_CWORD]}" # Das aktuelle Wort, das vervollständigt werden soll + prev="${COMP_WORDS[COMP_CWORD-1]}" # Das vorherige Wort + + # Hier definierst du die Optionen oder Argumente, die `drun` akzeptiert + opts="start stop restart status" + + # Wenn die Optionen abhängig vom vorherigen Wort sind, kannst du hier Bedingungen hinzufügen + # Beispiel: + # if [[ ${prev} == "start" ]]; then + # opts="service1 service2 service3" + # fi + + # Die verfügbaren Optionen auf das aktuelle Eingabewort filtern + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 +} + +complete -F _drun_completion drun \ No newline at end of file diff --git a/bin/script/exec b/bin/script/exec deleted file mode 100755 index f12a32e..0000000 --- a/bin/script/exec +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -COMMAND="$@" -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -echo "Execute ${COMMAND} in denv" - -#MAC -if [[ "$OSTYPE" == "darwin"* ]]; then - docker compose -f "${SCRIPT_DIR}/../../docker/docker-compose-mac.yml" $COMMAND - -#LINUX -elif [[ "$OSTYPE" == "linux-gnu" ]]; then - docker compose -f "${SCRIPT_DIR}/../../docker/docker-compose.yml" $COMMAND - -else - echo "Dieses Skript wird auf deinem Gerät nicht unterstützt" - exit 1 -fi diff --git a/bin/script/foreachSystem b/bin/script/foreachSystem index 96b9f45..67ef187 100755 --- a/bin/script/foreachSystem +++ b/bin/script/foreachSystem @@ -1,20 +1,21 @@ #!/bin/bash +source ../dexec -EXEC_DIR=$(pwd) -FILE_TO_EXECUTE=$1 - -if [ ! -z $1 ] -then - echo "Execute " $1 " in each system" -else - echo "Execute foreachSystem failed, because no parameter was provided" - exit +# Überprüfen, ob die richtige Anzahl Argumente übergeben wurden +if [ $# -lt 1 ]; then + echo "Verwendung: foreachSystem up -d" + return 1 fi +local COMMAND="$@" +local ENV_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/../.." &> /dev/null && pwd ) -for SYSTEM in systems/*/*/ ; do - echo "executing ${FILE_TO_EXECUTE} in ${SYSTEM}" - cd $SYSTEM - ./bin/script/$FILE_TO_EXECUTE - cd $EXEC_DIR +for SYSTEM in $ENV_DIR/systems/*/*/ ; do + local part1="${$1%/*}" # before "/" eg. backend / frontend + local part2="${$1##*/}" # after "/" eg. bee / auth / etc + local SYSTEM_CODE="$part2-$part1" + local DENV_COMMAND="dexec" + + echo "$DENV_COMMAND $SYSTEM_CODE $COMMAND" + $DENV_COMMAND $SYSTEM_CODE $COMMAND done diff --git a/bin/script/prune b/bin/script/prune deleted file mode 100755 index 4118be6..0000000 --- a/bin/script/prune +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -docker stop $(docker ps -aq) - -docker system prune -f - -docker network create homepage - -./pull -./bin/script/init diff --git a/bin/script/pull b/bin/script/pull index 8b6c798..884fda5 100755 --- a/bin/script/pull +++ b/bin/script/pull @@ -2,13 +2,9 @@ EXEC_DIR=$(pwd) -echo "Execute git pull in each system" - -#echo "denv" -#git pull +echo "Execute git pull in each system" for SYSTEM in $EXEC_DIR/systems/*/*/ ; do - echo $SYSTEM cd $SYSTEM git pull cd $EXEC_DIR diff --git a/bin/script/setup b/bin/script/setup deleted file mode 100755 index 239688b..0000000 --- a/bin/script/setup +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -echo $OSTYPE - -#MAC -if [[ "$OSTYPE" == "darwin"* ]]; then - home="$HOME" - -#LINUX -elif [[ "$OSTYPE" == "linux-gnu" ]]; then - home="$HOME" -else - echo "Dieses Skript wird nicht unter macOS oder Linux unterstützt." - exit 1 -fi - -script_path=$(pwd) -environment=$(basename $script_path) - -echo "source ~/$environment/bin/script/denv" >> ~/.profile -echo "source ~/$environment/bin/script/drun" >> ~/.profile -echo "source ~/$environment/bin/script/git" >> ~/.profile - -echo Running in $script_path -echo environment = $environment - -# $1 = frontend/backend -# $2 = repo name -fetch_repository() { - if [ ! -d "$1" ]; - then - echo "Create $1" - mkdir -p "$1" - fi - - cd $1 - - if [ ! -d "$2" ]; - then - gh repo clone TheFlawww/$2-$1 $2 - fi - - cd $script_path -} - - -#fetch all backends -fetch_repository backend weedkeeper - -#fetch all frontends -fetch_repository frontend weedkeeper - -# initialize -./bin/script/init diff --git a/bin/script/upgrade b/bin/script/upgrade deleted file mode 100755 index d58e39a..0000000 --- a/bin/script/upgrade +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -$SCRIPT_DIR/pull -source $SCRIPT_DIR/../source - -drun weedkeeper-backend composer da -drun weedkeeper-backend composer install -drun weedkeeper-backend composer dmm -drun weedkeeper-backend composer console rbac:update - -drun weedkeeper-frontend npm i -drun weedkeeper-frontend npm run build diff --git a/bin/source b/bin/source deleted file mode 100755 index fee2747..0000000 --- a/bin/source +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -source $SCRIPT_DIR/denv -source $SCRIPT_DIR/drun -source $SCRIPT_DIR/git diff --git a/docker/docker-compose-mac.yml b/docker/docker-compose-mac.yml new file mode 100644 index 0000000..b34894d --- /dev/null +++ b/docker/docker-compose-mac.yml @@ -0,0 +1,27 @@ +networks: + weedkeeper: + name: weedkeeper + +services: + traefik: + image: traefik:v3.0 + networks: + - weedkeeper + command: + - "--providers.docker=true" + - "--entrypoints.web.address=:80" + - "--entrypoints.web.http.redirections.entrypoint.to=websecure" + - "--entrypoints.web.http.redirections.entrypoint.scheme=https" + - "--entrypoints.websecure.address=:443" + - "--certificatesresolvers.le.acme.tlschallenge=true" + - "--certificatesresolvers.le.acme.email=florian_feistel@outlook.de" + - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" + ports: + - "80:80" + - "443:443" + - "8080:8080" + volumes: + - "./letsencrypt:/letsencrypt" + - "/var/run/docker.sock:/var/run/docker.sock" + labels: + - "traefik.http.routers.traefik.rule=Host(`traefik.weedkeeper.de`)" diff --git a/docker/install b/docker/install new file mode 100755 index 0000000..e7877af --- /dev/null +++ b/docker/install @@ -0,0 +1,13 @@ +sudo apt-get update +sudo apt-get install ca-certificates curl gnupg +sudo install -m 0755 -d /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +sudo chmod a+r /etc/apt/keyrings/docker.gpg +echo \ + "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y +sudo apt install docker-compose -y +sudo usermod -aG docker $USER diff --git a/python/capture-thermometer-data.py b/python/capture-thermometer-data.py deleted file mode 100644 index bca7d2c..0000000 --- a/python/capture-thermometer-data.py +++ /dev/null @@ -1,37 +0,0 @@ -import asyncio -import json -from datetime import datetime -from bleak import BleakScanner - -async def handle_discovery(device, advertisement_data): - if device.address == "DB:17:6C:7D:81:F6": - keys = list(advertisement_data.manufacturer_data.keys()) - humKey = keys[len(keys)-1] - battery = humKey & 0xFF - temperature = (humKey >> 8)/10.0 - if humKey < 32767: #If Key is bigger than a smallint, temperature is lower than one byte (256) - temperature = temperature + 25.6 - - data = {} - data['temp'] = temperature - data['battery'] = battery / 256.0; - data['humid'] = advertisement_data.manufacturer_data[humKey][1] - data['timestamp'] = datetime.now().strftime("%d.%m.%Y %H:%M:%S") - - jsonString = json.dumps(data) - with open("/home/flo/local-weedkeeper/systems/backend/weedkeeper/var/temperature.data", "a") as dataFile: - dataFile.write(jsonString+",\n") - #print(jsonString) - await scanner.stop() - -async def scan(): - global scanner - scanner = BleakScanner(handle_discovery) - await scanner.start() - await asyncio.sleep(10) - await scanner.stop() - -async def main(): - await scan() - -asyncio.run(main()) diff --git a/setup b/setup new file mode 100755 index 0000000..33a718e --- /dev/null +++ b/setup @@ -0,0 +1,30 @@ +#!/bin/bash + +# THIS SCRIPT NEEDS TO BE EXECUTED FIRST AFTER CLONING THE ENVIRONMENT AND SHALL NEVER BE EXECUTED AGAIN +# IT SETS UP THE ENVIRONMENT IN THE PROFILE TO ENABLE CORE COMMANDS LIKE denv drun dexec + +# MAC +if [[ "$OSTYPE" == "darwin"* ]]; then + home="$HOME" + +# LINUX +elif [[ "$OSTYPE" == "linux-gnu" ]]; then + home="$HOME" + +else + echo "Dieses Skript wird auf deinem Gerät nicht unterstützt" + exit 1 +fi + +ENV_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +echo "Setup dev-env..." +echo "Adding sourcing of environment commands to .profile" +echo "" >> ~/.profile +echo "# denv setup" >> ~/.profile +echo "source $ENV_DIR/bin/denv" >> ~/.profile +echo "source $ENV_DIR/bin/drun" >> ~/.profile +echo "source $ENV_DIR/bin/dexec" >> ~/.profile +echo "source $ENV_DIR/bin/git" >> ~/.profile + +source ~/.profile \ No newline at end of file diff --git a/up b/up index 7f3abc8..088a747 100755 --- a/up +++ b/up @@ -1,4 +1,8 @@ #!/bin/bash -./bin/script/exec up -d -./bin/script/foreachSystem up +source bin/denv +source bin/dexec +source bin/drun + +denvexec up -d +./bin/script/foreachSystem up -d