arduino-deploy/deploy.sh
2024-06-08 01:13:04 +03:00

146 lines
4.1 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
# О программе
AUTHOR='Alexander Popov <iiiypuk {at} fastmail.fm>'
VERSION='1.0.0 beta'
LICENSE='Public Domain'
# Настройки
MAIN_FOLDER=$HOME/.local/share/arduino-deploy # Рабочая директория
ARGV=("$@") # Аргументы программы
ARDUINO_PORT=/dev/ttyACM0
ARDUINO_BOARD=arduino:avr:uno
PROJECT=./RFIDAuth/
# Основная функция
main() {
# Выполняет проверку наличия библиотек
[ ! -d "$MAIN_FOLDER" ] && mkdir -p ${MAIN_FOLDER}
check_colors
check_ini_parser
# Выполняет импорт библиотек
source $HOME/Temp/.arduino-deploy/colors.sh
source $HOME/Temp/.arduino-deploy/ini-file-parser.sh
# Выводит приветствие
clear
echo -e "${BRIGHT_YELLOW_B}Программа для сборки прошивки${NC}"
printf '\u2500%0.s' $(seq 29)
echo ''
echo -e "${GREEN_B}Автор: ${YELLOW}${AUTHOR}${NC}"
echo -e "${GREEN_B}Версия: ${YELLOW}${VERSION}${NC}"
printf '\u2500%0.s' $(seq 29)
echo ''
# Выводит список команд при вызове без параметров
if [ "${ARGV[0]}" = "" ]; then
echo -e "${BLUE_B}Доступные параметры:${NC}"
echo -e " ${RED_B}b${NC} - сборка прошивки"
echo -e " ${RED_B}u${NC} - загрузка прошивки"
echo -e " ${RED_B}m${NC} - запуск монитора порта"
echo -e " ${RED_B}f${NC} - форматирование кода с помощью ${YELLOW}clang-format${NC}"
echo -e " ${RED_B}d${NC} - создать архив с исходниками"
echo ''
exit 0
fi
# b | Сборка прошивки
if [ "${ARGV[0]}" = "b" ]; then
build; exit 0
fi
# u | Загрузка прошивки
if [ "${ARGV[0]}" = "u" ]; then
upload; exit 0
fi
# m | Запуск монитора порта
if [ "${ARGV[0]}" = "m" ]; then
monitor; exit 0
fi
# f | Форматирование кода
if [ "${ARGV[0]}" = "f" ]; then
echo -e "${BRIGHT_RED_B}Форматирование кода прошивки...${NC}"
cd ${PROJECT}
clang-format -i *.hpp *.h *.ino
cd ..
echo -e "${BRIGHT_GREEN_B}Готово ✅${NC}\n"; exit 0
fi
# d | Создание дистрибутива с исходниками
if [ "${ARGV[0]}" = "d" ]; then
dist; exit 0
fi
}
# Запуск монитора порта
monitor() {
echo -e "${BRIGHT_CYAN_B}Запуск монитора порта...${NC}"
printf '\u2500%0.s' $(seq 24)
echo ''
arduino-cli monitor -p $ARDUINO_PORT
}
# Сборка прошивки
build() {
echo -e "${BRIGHT_RED_B}Сборка прошивки...${NC}"
printf '\u2500%0.s' $(seq 18)
echo ''
arduino-cli compile -b $ARDUINO_BOARD $PROJECT
echo -e "\n${BRIGHT_GREEN_B}Готово ✅${NC}\n"
}
# Загрузка прошивки
upload() {
echo -e "${BRIGHT_RED_B}Загрузка прошивки...${NC}"
printf '\u2500%0.s' $(seq 20)
echo ''
arduino-cli upload -b $ARDUINO_BOARD -p $ARDUINO_PORT $PROJECT
echo -e "\n${BRIGHT_GREEN_B}Готово ✅${NC}\n"
}
# Проверяет наличие библиотеки colors.sh
# https://git.a2s.su/iiiypuk/colors.sh
check_colors() {
FILE=${MAIN_FOLDER}/colors.sh
URL="https://git.a2s.su/iiiypuk/colors.sh/raw/branch/main/colors.sh"
SHA256SUM="a598398f8944e247b121d22994dabe5110a4ef2960571db77eab487c4f5e29d9"
# todo: check file sum & change url to release
if [ ! -f "$FILE" ]; then
wget $URL -O $FILE
fi
}
# Проверяет наличие библиотеки ini-file-parser.sh
# https://github.com/DevelopersToolbox/ini-file-parser
check_ini_parser() {
FILE=${MAIN_FOLDER}/ini-file-parser.sh
URL="https://raw.githubusercontent.com/DevelopersToolbox/ini-file-parser/master/src/ini-file-parser.sh"
SHA256SUM="a3c71e07654628b4db0a61328944e5d79e91fd3b9e7307a81f79244ccbbbbf52"
# todo: check file sum & change url to release
if [ ! -f "$FILE" ]; then
wget $URL -O $FILE
fi
}
# Запуск программы
main