146 lines
4.1 KiB
Bash
146 lines
4.1 KiB
Bash
|
#!/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
|