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