Adaption to new Makefile concept
This commit is contained in:
parent
6913de74df
commit
1ab6bfc460
0
.venv_required
Normal file
0
.venv_required
Normal file
143
Makefile
143
Makefile
@ -1,14 +1,133 @@
|
||||
UID=1000
|
||||
GID=1000
|
||||
SERVICE_PATH="/etc/systemd/system"
|
||||
# git helper Makefile: Version 2.5 (2025-08-11)
|
||||
default: help
|
||||
|
||||
.ONESHELL:
|
||||
SHELL = /usr/bin/bash
|
||||
MAKEFLAGS += --no-print-directory
|
||||
.SILENT:
|
||||
|
||||
-include __make.d__/*.mk
|
||||
|
||||
GIT_FLAG = ./.git
|
||||
VENV_FLAG = ./.venv_required
|
||||
VENV_FOLDER = ./venv
|
||||
|
||||
localhelp:
|
||||
|
||||
help:
|
||||
@echo "make install (with root priviliges) - to install service"
|
||||
@echo "make start (with root priviliges) - to start service"
|
||||
@echo "make enable (with root priviliges) - to enable service on boot"
|
||||
install:
|
||||
python __install__.py $(UID) $(GID) $(SERVICE_PATH)
|
||||
start:
|
||||
systemctl start powerplug.service
|
||||
enable:
|
||||
systemctl enable powerplug.service
|
||||
echo "Possible common options are:"
|
||||
echo " - init - Initialise the repository and all folders below with a Makefile"
|
||||
echo " - giti - Get the git status of all submodules including their submodules"
|
||||
echo " - update_submodules - Set all submodules to remote master"
|
||||
echo " - venv_flag - Set the venev flag for the base folder. A venv will be generated"
|
||||
echo " - clean - clean up"
|
||||
echo " - deepclean - clean up this and all Makefiles below"
|
||||
$(MAKE) localhelp
|
||||
echo "You are able to create files make.d/*.mk and add local rules there. "
|
||||
echo " - localinit: print_head - Will be executed as last step in the init process."
|
||||
echo " - localhelp: print_head - Will be executed in th middle of the help text generation"
|
||||
echo " - localclean:print_head - Will be executed before the clean rule"
|
||||
|
||||
localinit:
|
||||
|
||||
init: print_head
|
||||
# Init git repo
|
||||
if [[ -e $(GIT_FLAG) ]]; then
|
||||
echo -e "\033[1;33mInitialising git submodules...\e[0m"
|
||||
git submodule init
|
||||
git submodule update
|
||||
echo
|
||||
fi
|
||||
# Init submodules
|
||||
SUBDIRS=$$(find . -maxdepth 2 -mindepth 2 -name Makefile | sort)
|
||||
for subdir in $$SUBDIRS; do
|
||||
$(MAKE) --no-print-directory -C $$(dirname $$subdir) init
|
||||
done
|
||||
if [[ $$SUBDIRS = *[![:space:]]* ]]; then
|
||||
$(MAKE) print_head
|
||||
fi
|
||||
# Create venv if needed
|
||||
if [[ -e $(VENV_FLAG) ]]; then
|
||||
BASEPATH=$$(pwd -P)
|
||||
#
|
||||
# Create venv
|
||||
#
|
||||
if [ ! -e venv ];then
|
||||
echo -e "\033[1;33mCreating venv in $$BASEPATH...\e[0m"
|
||||
python3 -m venv $$BASEPATH/venv > /dev/null 2>&1
|
||||
else
|
||||
echo -e "\033[1;33mVirtualenv already exists in $$BASEPATH...\e[0m"
|
||||
fi
|
||||
echo
|
||||
|
||||
#
|
||||
# Install modules
|
||||
#
|
||||
echo -e "\033[1;33mInstalling modules to venv in $$BASEPATH...\e[0m"
|
||||
for req_file in $$(find -L $$BASEPATH -name requirements.txt 2> /dev/null); do
|
||||
# echo " $$req_file"
|
||||
while read req_mod; do
|
||||
if [[ $$req_mod = *[![:space:]]* ]]; then
|
||||
# req_mod is not empty
|
||||
OUT=$$($$BASEPATH/venv/bin/pip install -U $$req_mod 2>&1 )
|
||||
if [[ $$OUT =~ "Successfully installed" ]]; then
|
||||
echo -e " * \033[1;32m$$req_mod installed.\e[0m"
|
||||
elif [[ $$OUT =~ "already satisfied" ]]; then
|
||||
echo -e " * \033[1;36m$$req_mod already installed.\e[0m"
|
||||
else
|
||||
echo -e " * \033[1;31m$$req_mod installation FAILED!\e[0m"
|
||||
#echo $$OUT
|
||||
fi
|
||||
fi
|
||||
done < $$req_file
|
||||
done
|
||||
echo
|
||||
fi
|
||||
# Start local init
|
||||
echo -e "\033[1;33mDoing localinit...\e[0m"
|
||||
$(MAKE) localinit
|
||||
|
||||
update_submodules:
|
||||
git submodule foreach "git fetch && git checkout master && git pull && git submodule init && git submodule update"
|
||||
|
||||
giti_this: print_head
|
||||
giti
|
||||
echo " Submodules:"
|
||||
git submodule --quiet foreach "echo -n ' ' && giti"
|
||||
|
||||
giti:
|
||||
git submodule --quiet foreach "[ -e Makefile ] && make --no-print-directory giti_this || :"
|
||||
|
||||
localclean:
|
||||
|
||||
clean: localclean
|
||||
if [[ ! -e $(VENV_FLAG) ]]; then
|
||||
if [[ -d $(VENV_FOLDER) ]]; then
|
||||
rm -rf $(VENV_FOLDER)
|
||||
fi
|
||||
fi
|
||||
|
||||
cleanall: clean
|
||||
for subdir in $$(find . -maxdepth 2 -mindepth 2 -name Makefile | sort); do
|
||||
$(MAKE) --no-print-directory -C $$(dirname $$subdir) cleanall
|
||||
done
|
||||
|
||||
|
||||
venv_flag:
|
||||
if [[ ! -e $(VENV_FLAG) ]]; then
|
||||
touch $(VENV_FLAG)
|
||||
if [[ -e $(GIT_FLAG) ]]; then
|
||||
git add $(VENV_FLAG)
|
||||
fi
|
||||
fi
|
||||
|
||||
print_head:
|
||||
DIRNAME=$$(basename $$(pwd))
|
||||
DIRLENGTH=$${#DIRNAME}
|
||||
echo -ne "\n\n\033[1;34m╔═"
|
||||
for i in $$(seq 1 $$DIRLENGTH); do echo -n "═"; done
|
||||
echo -e "═╗"
|
||||
echo -e "║ $$DIRNAME ║"
|
||||
echo -ne "╚═"
|
||||
for i in $$(seq 1 $$DIRLENGTH); do echo -n "═"; done
|
||||
echo -e "═╝\033[00m"
|
||||
|
@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
BASEPATH=`realpath $(dirname $0)`
|
||||
|
||||
python3 -m venv $BASEPATH/venv
|
||||
$BASEPATH/venv/bin/pip install --upgrade pip
|
||||
find $BASEPATH -name requirements.txt | xargs -L 1 $BASEPATH/venv/bin/pip install -r
|
||||
$BASEPATH/venv/bin/pip list --outdated --format=json | jq -r '.[] | .name'|xargs -n1 $BASEPATH/venv/bin/pip install -U
|
@ -1 +0,0 @@
|
||||
paho-mqtt
|
Loading…
x
Reference in New Issue
Block a user