add deploy and md5 flags

parent 60fff9e5
......@@ -5,10 +5,10 @@ BUILDERDIR=$(realpath "$(dirname "$0")"/..)
#DEBUG=false
ALLDISTROS=false
NVIDIA=false
VM=false
CLEAN=false
DESKTOP_ENVS=() # Список выбранных рабочих окружений (например, gnome, hyprland)
NETWORK=false
MD5=false
# базовые функции
# shellcheck disable=SC1091
......@@ -22,6 +22,11 @@ if [ -z "$PROFILESDIR" ]; then
PROFILESDIR="$BUILDERDIR/mkimage-profiles"
fi
if [ -z "$FTPDIR" ]; then
FTPDIR="/var/ftp/pub/Etersoft/XimperLinux/Devel/ISO"
fi
create_tmp() {
mktemp -d -t ximper-builder.XXXXXXX
}
......@@ -42,23 +47,16 @@ print_build_info() {
print_green "VERSION: $VER"
fi
print_green "REPOSITORIES: $REPOS"
if [ -n "$DEPLOY_DIR" ]; then
print_green "DEPLOY: $DEPLOY_DIR"
fi
}
check_repos () {
if [ "$VER" == "devel" ]; then
return
check () {
if [ "$MD5" == "true" ] && [ "$DEPLOY_DIR" != "ftp" ]; then
print_error "--md5 можно использовать только при --deploy=ftp"
exit 1
fi
local list_repos
list_repos="${1//,/ }"
for repo in $list_repos; do
case "$repo" in
ximper-devel|hasher)
print_error "Использовать репозитории ximper-devel и hasher можно только в devel сборках."
exit 1
;;
esac
done
}
cleartmp() {
......@@ -71,12 +69,6 @@ cleartmp() {
[ "$VER" == "devel" ] && ls -t "$VMDIR"/ximper-"$desktop_env""$iso_suffix"-devel-*-x86_64.iso | tail -n +2 | xargs -I {} rm -v -- {}
}
vm() {
find "$TMP"/out/ -type l -exec rm {} +
[ "$VM" == true ] || return
mv -vf "$TMP"/out/ximper-*.iso "$VMDIR"/"$DFILENAME"
}
handle_uncommitted_changes() {
# Проверка наличия незакоммиченных изменений
if git diff-index --quiet HEAD --; then
......@@ -140,7 +132,7 @@ makebuild() {
# Генерация имени файла
DFILENAME="ximper-${desktop_env}${iso_suffix}-${VER}-$(date +"%Y_%m_%d_%H%M")"
# Добавление хэша коммита или примечания о временном коммите
if [ "$VER" == "devel" ]; then
if [ "$TEMP_COMMIT" == true ]; then
......@@ -152,13 +144,35 @@ makebuild() {
DFILENAME+="-x86_64.iso"
vm
deploy
# Отмена временного коммита после завершения сборки
revert_temp_commit
}
OPTS=$(getopt -o h --long help,nvidia,debug,clean,all,vm,gnome,hyprland,net,network,repos: -- "$@") || {
create_md5() {
[ "$MD5" == true ] || return
print_green "Создание md5sum для $2"
md5sum "$1"/"$2" > "$1"/"$2".md5
}
deploy() {
find "$TMP"/out/ -type l -exec rm {} +
case "$DEPLOY_DIR" in
ftp)
mv -vf "$TMP"/out/ximper-*.iso "$FTPDIR"/"$DFILENAME"
create_md5 "$FTPDIR" "$DFILENAME"
;;
vm)
mv -vf "$TMP"/out/ximper-*.iso "$VMDIR"/"$DFILENAME"
;;
*)
return
;;
esac
}
OPTS=$(getopt -o h --long help,nvidia,debug,clean,all,deploy::,md5,gnome,hyprland,net,network,repos: -- "$@") || {
print_error "Ошибка обработки опций."
exit 1
}
......@@ -171,16 +185,16 @@ while true; do
case "$1" in
-h|--help)
printf "\n"
printf "Использование: %s [опции] [версия дистрибутива]\n\n" "$0"
printf "Использование: %s [версия дистрибутива] [опции]\n\n" "$0"
printf "Опции:\n"
printf " -h | --help Вывод этой справки\n"
printf " Окружения:\n"
printf " --gnome Собрать дистрибутив с GNOME (по умолчанию)\n"
printf " --hyprland Собрать дистрибутив с Hyprland\n"
printf " --all Собрать все дистрибутивы\n"
printf "\n"
printf " Настройки образа:\n"
printf " --nvidia Собрать дистрибутив с драйверами NVIDIA\n"
printf " --all Собрать все дистрибутивы (default + nvidia)\n"
printf " -r | --repos Установить используемые репозитории\n"
printf " (По умолчанию: sisyphus,ximper)\n"
printf " (репозитории используются тольок во время сборки)\n"
......@@ -192,6 +206,11 @@ while true; do
printf " - hasher\n"
printf "\n"
printf " Прочее:\n"
printf " --deploy Задеплоить образ\n"
printf " Параметры:\n"
printf " - vm (по умолчанию) -> %s\n" "$VMDIR"
printf " - ftp -> %s\n" "$FTPDIR"
printf " --md5 Создать файл md5 суммы образа (только при --deploy=ftp)\n"
printf " --debug Включить режим отладки\n"
printf " --clean Очистить TMP перед сборкой\n"
printf " --vm Собрать дистрибутив для виртуальной машины\n"
......@@ -215,10 +234,19 @@ while true; do
ALLDISTROS=true
shift
;;
--vm)
VM=true
--md5)
MD5=true
shift
;;
--deploy)
if [ -n "$2" ] && [[ "$2" != "--"* ]]; then
DEPLOY_DIR="$2"
shift 2
else
DEPLOY_DIR="vm"
shift
fi
;;
--gnome)
DESKTOP_ENVS+=("gnome")
shift
......@@ -233,12 +261,15 @@ while true; do
;;
--repos)
REPOS="$2"
shift
shift 2
;;
--)
shift
break
;;
"")
shift
;;
*)
if [ -n "$REPOS" ] && [ "$1" = "$REPOS" ]; then
shift
......@@ -273,7 +304,7 @@ else
exit 1
fi
check_repos "$REPOS"
check
print_build_info
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment