docker-Tasmota-platformio-e.../le_compile.sh2
Lukas Endigo 3a1224ff29
Some checks are pending
Tasmota Docker test / build (ubuntu-20.04, 3.10) (push) Waiting to run
Tasmota Docker test / build (ubuntu-20.04, 3.11) (push) Waiting to run
Tasmota Docker test / build (ubuntu-22.04, 3.10) (push) Waiting to run
Tasmota Docker test / build (ubuntu-22.04, 3.11) (push) Waiting to run
Publish Docker / build (push) Waiting to run
first commit
2024-10-29 09:28:22 +05:00

140 lines
6.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Начальные переменные
CHECK_MARK="\033[0;32m\xE2\x9C\x94\033[0m"
rundir=$(dirname $(readlink -f $0))
DOCKER_IMAGE=${DOCKER_IMAGE:="blakadder/docker-tasmota"}
USE_STABLE=0 # По умолчанию development
TASMOTA_BRANCH="development" # По умолчанию ветка разработки
USE_VOLUME=${USE_VOLUME:="`pwd`/Tasmota"}
# Парсинг аргументов командной строки
for arg in "$@"
do
case $arg in
-stable=*)
USE_STABLE="${arg#*=}"
shift
;;
-tasmota=*)
TASMOTA_BRANCH="${arg#*=}"
shift
;;
-bins=*)
BIN_FILES="${arg#*=}"
shift
;;
*)
echo "Неизвестный параметр: $arg"
exit 1
;;
esac
done
## Проверка наличия каталога Tasmota и обновление
if test -d "`pwd`/Tasmota"; then
cd Tasmota
git fetch https://github.com/arendst/Tasmota.git development
git fetch --all --tags
# Проверка на стабильную версию или ветку разработки
if [ "$USE_STABLE" = "1" ]; then
if [ -z "${TASMOTA_BRANCH}" ]; then
echo -e "Проверка последней стабильной версии на GitHub"
TASMOTA_BRANCH=$(wget -qO - https://api.github.com/repos/arendst/Tasmota/releases/latest | grep -oP 'tag_name"\s*:\s*"\K[^"]+')
else
echo -e "Используется версия \"${TASMOTA_BRANCH}\""
fi
git checkout --force $TASMOTA_BRANCH >/dev/null 2>&1
else
echo -e "Используется версия разработки"
TASMOTA_BRANCH="development"
git reset --hard origin/$TASMOTA_BRANCH > /dev/null 2>&1
git pull origin $TASMOTA_BRANCH > /dev/null 2>&1
fi
if [ -z "$TASMOTA_BRANCH" ]; then
echo -e "Ошибка при получении ветки Tasmota. Проверьте подключение к интернету и повторите попытку."
exit 1
fi
cd $rundir
echo -e "\nЗапуск Docker Tasmota на версии $TASMOTA_BRANCH\n"
# Проверка наличия Docker
if [[ "$(type -t docker)" == "file" ]] ; then
## Компиляция указанных сборок
if [ -n "$BIN_FILES" ]; then
IFS=',' read -r -a builds <<< "$BIN_FILES"
echo -e "Компиляция следующих сборок:"
for build in "${builds[@]}"
do
echo -e "$build"
sleep 1
done
echo -e "\n"
else
# Если сборки не указаны, по умолчанию компилируем все
echo -e "\e[31mКомпиляция ВСЕХ СБОРОК!!!!\n\n\e[7mДля выхода используйте ctrl+C\e[0m"
sleep 4
fi
## Запуск контейнера Docker с компиляцией
echo -n "Компиляция..."
test -t 1 && DOCKER_TTY="-it"
if [ -n "$BIN_FILES" ]; then
if [[ "${builds[0]}" == "tasmota"* ]]; then
if [ "${USE_TEE}" = "1" ]; then
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE $(printf ' -e %s' "${builds[@]}") 2>&1 | tee ${TEE_PARAMETER} docker-tasmota.log
else
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE $(printf ' -e %s' "${builds[@]}") 2>&1 > docker-tasmota.log
fi
echo -e "\\r${CHECK_MARK} Готово! Лог компиляции записан в docker-tasmota.log\n"
else
echo -e "\\r\e[31mНедействительная сборочная среда."
exit 1
fi
else
if [ "${USE_TEE}" = "1" ]; then
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE 2>&1 | tee ${TEE_PARAMETER} docker-tasmota.log
else
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE 2>&1 > docker-tasmota.log
fi
echo -e "\\r${CHECK_MARK} Готово! Лог компиляции записан в docker-tasmota.log\n"
echo -e "Сборки находятся в $rundir/Tasmota/build_output/firmware\n"
fi
## Копирование прошивки после завершения Docker
for build in "${builds[@]}"
do
cp "$rundir"/Tasmota/build_output/firmware/"$build"* "$rundir"/
if test -e "$build".bin; then
echo -e "Завершено! Прошивка доступна в $rundir/$build.bin\n"
else
echo -e "\e[31m\e[5mПРЕДУПРЕЖДЕНИЕ:\e[0m"
echo -e "Произошла ошибка при компиляции $build. Проверьте лог компиляции\n"
fi
done
else
echo -e "\nDocker не найден. Установите его с помощью:\n\n\tcurl -fsSL https://get.docker.com -o get-docker.sh\n\tsh get-docker.sh\n"
fi
else
# Клонирование репозитория Tasmota, если каталог отсутствует
if [[ "$(type -t git)" == "file" ]] ; then
echo -e "\nРепозиторий Tasmota не найден в текущем каталоге.\nКлонировать его с GitHub в текущий каталог?"
read -p "Нажмите Enter для выхода или \"yes\" для продолжения: " answer
case ${answer:0:1} in
y|Y )
git clone https://github.com/arendst/Tasmota.git --branch development
bash $(basename $0) && exit
;;
* )
exit 1
;;
esac
else
echo -e "\nУстановите \"git\" для продолжения:\n\n\tDebian/Ubuntu/Mint:\tsudo apt-get install git\n\tFedora:\t\t\tsu -c 'yum install git'\n\topenSUSE:\t\tsudo zypper in git\n"
exit 1
fi
fi