Skip to content

Commit

Permalink
tools: New tool install_plugin_from_develop; Documentation updates
Browse files Browse the repository at this point in the history
  • Loading branch information
msinn committed Sep 14, 2023
1 parent fc4922a commit 3955452
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 12 deletions.
42 changes: 33 additions & 9 deletions doc/user/source/beispiele/plugins/plugin_aus_develop.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,25 @@ Falls in Probleme mit einem Plugin auftreten, kann es hilfreich sein eine neuere
Branch auf GitHub zu installieren, ohne deshalb die eigene Installation vollständig auf die (nicht notwendigerweise
stabile) develop Version von SmartHomeNG zu wechseln.

Im folgenden wird ein mögliches Vorgehen beschrieben, um ein Plugin aus dem develop Branch in eine Release Installation
zu installieren. Dazu sind folgende Schritte durchzuführen:
Im tools Verzeichnis gibt es ein Skript, welches ein gewähltes Plugin aus dem develop branch zusätzlich in die
aktuelle Installation von SmartHomeNG kopiert. Damit kein Namenskonflikt mit einem bestehenden Plugin entsteht,
wird an den Plugin Namen der String '_dev' angehängt. Ein Plugin mit dem Namen **xyz** wird also mit dem Namen
**xyz_dev** in die bestehende SmartHomeNG Installation kopiert.

Das Skript für Installation wird folgendermaßen gestartet:

.. code-block:: bash
install_plugin_from_develop xyz
|
Plugin manuell installieren
===========================

Alternativ kann das Plugin manuell installiert werden. Im folgenden wird ein mögliches Vorgehen beschrieben,
um ein Plugin aus dem develop Branch in eine Release Installation zu installieren. Dazu sind folgende Schritte
durchzuführen:

Plugins Repository aufrufen
---------------------------
Expand Down Expand Up @@ -45,15 +62,22 @@ Falls der Browser das ZIP Archiv nicht bereits entpackt hat, das Archiv ``plugin
Gewünschtes Plugin installieren
-------------------------------

Um zub Beispiel ein Plugin mit dem Namen **xyz** durch die Version aus dem develop Branch zu ersetzen, sollte
zuerst das Verzeichnis der bestehenen Version im ``plugins`` Verzeichnis von **xyz** in **xyz.mstr** umbenannt werden,
damit man später bei Bedarf darauf zurück wechseln kann.
Um zum Beispiel ein Plugin mit dem Namen **xyz** aus dem develop Branch zu installieren, sollte (falls es existiert)
zuerst das Verzeichnis **xyz_dev** im ``plugins`` Verzeichnis gelöscht werden, damit keine Seiteneffekte durch
bestehende Dateien auftreten.

Anschließend kann das Verzeichnis **xyz** (mit allen Bestandteilen/Unterordnern) aus dem beim Entpacken entstandenen
Verzeichnis ``plugins-develop`` in das ``plugins`` Verzeichnis der SmartHomeNG Installation kopiert werden.
Verzeichnis ``plugins-develop`` in das ``plugins`` Verzeichnis der SmartHomeNG Installation unter dem Namen **xyz_dev**
kopiert werden.

Nun kann das Archiv ``develop.zip`` und das Verzeichnis ``plugins-develop`` gelöscht werden.

Um das neue Plugin zu aktivieren, muss noch die Plugin Konfiguration in der Datei ``etc/plugin.yaml`` angepasst werden.
Dazu muss im Abschnitt in dem das Plugin konfiguriert ist, der Eintrag ``plugin_name: xyz`` durch
``plugin_name: xyz_dev`` ersetzt werden.

Um das neue Plugin zu aktivieren, muss SmartHomeNG nun neu gestartet werden. Falls die neue Version
Konfigurationsänderungen benötigen sollte, sind diese vor dem Neustart durchzuführen.
Falls ein Logger für das ursprüngliche Plugin **xyz** konfiguriert ist, muss auch noch in ``etc/logging.yaml`` ein
Logger für das Plugin **xyz_dev** konfiguriert werden. Dazu einfach den Abschnitt mit dem Logger ``plugins.xyz``
kopieren und in der Kopie den Namen in ``plugins.xyz_dev`` ändern.

Nun kann das Verzeichnis ``plugins-develop`` gelöscht werden.

Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ Zunächst müssen einige zusätzlichen Pakete installiert werden:

.. code-block:: bash
sudo apt-get -y install dialog python3 python3-dev python3-setuptools python3-venv unzip git-core build-essential python3-pip
sudo apt-get -y install dialog python3 python3-dev python3-setuptools python3-venv build-essential python3-pip
sudo apt-get -y install git-core install wget unzip
SmartHomeNG Quellcode laden
Expand Down
6 changes: 4 additions & 2 deletions lib/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -706,13 +706,15 @@ def _task(self, name, obj, by, source, dest, value):
if value is None:
obj()
else:
logger.debug(f"_task: name={name}, value={value}, by={by}, source={source} - args of task-obj={inspect.getfullargspec(obj).args}")
if 'caller' in inspect.getfullargspec(obj).args:
logger.debug(f"_task: name={name}, value={value}, by={by}, source={source} - args of task-obj={inspect.getfullargspec(obj).args}")
if isinstance(value, dict):
caller = value.get('caller', None)
if caller is None:
value['caller'] = by
obj(**value)
obj(**value)
else:
obj()
except Exception as e:
tasks_logger.exception(f"Method {name} exception: {e}")

Expand Down
64 changes: 64 additions & 0 deletions tools/install_plugin_from_develop
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/bin/bash

#########################################################################
# Copyright 2023- Martin Sinn [email protected]
#########################################################################
# This file is part of SmartHomeNG
#
# SmartHomeNG is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
#########################################################################

# test if the right number of parameters is given
if [ $# -eq 0 ]; then
echo
echo "ERROR: Parameter is missing. The script MUST be called like this:"
echo " install_plugin_from_develop <plugin name>"
echo
exit 1
fi
PLUGIN_NAME=$1
DEVELOP_PLUGIN=$PLUGIN_NAME"_dev"

# get directory where this script is stored
SOURCE=${BASH_SOURCE[0]}
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )

# get BASE directory of SmartHomeNG
cd $DIR
cd ..
SHNG_BASEDIR=`pwd`

echo "SmartHomeNG base directory: $SHNG_BASEDIR"
echo

cd $SHNG_BASEDIR
cd var
mkdir downloads 2>/dev/null
cd downloads

echo "Downloading plugins from develop branch"

wget https://github.com/smarthomeNG/plugins/archive/refs/heads/develop.zip 2>/dev/null
unzip -o develop.zip >/dev/null
rm develop.zip

echo
if test -d plugins-develop/$PLUGIN_NAME; then
echo "Installing plugin '$PLUGIN_NAME' from develop branch as plugin '$DEVELOP_PLUGIN'"
echo
rm $SHNG_BASEDIR/plugins/$DEVELOP_PLUGIN 2>/dev/null

cp -r plugins-develop/$PLUGIN_NAME $SHNG_BASEDIR/plugins/$DEVELOP_PLUGIN
chmod -R 775 $SHNG_BASEDIR/plugins/$DEVELOP_PLUGIN
rm -r plugins-develop

else
echo "No plugin with name '$PLUGIN_NAME' found in develop branch"
echo
rm -r plugins-develop
exit 1
fi
1 change: 1 addition & 0 deletions tools/setpermissions
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ chmod +x tools/getshngpid
chmod +x tools/measure_cpu_speed.py
chmod +x tools/plugin_metadata_checker.py
chmod +x tools/test_running
chmod +x tools/install_plugin_from_develop

#echo `pwd`
#find . -type d -exec chmod g+rwsx {} +
Expand Down

0 comments on commit 3955452

Please sign in to comment.