arduino-deploy/deploy.sh

146 lines
4.1 KiB
Bash
Raw Permalink Normal View History

2024-06-08 01:13:04 +03:00
#!/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