#!/bin/bash ############################################################## ende() { exit } ############################################################## menue() { CONF=".config" PROJECTPATH=$(sed -n '1p' $CONF) if [ ! -f "$PROJECTPATH/.config" ]; then touch "$PROJECTPATH/.config" echo -e "PROJECTNAME\nREPOSITORY\nVERSION\nSUBVERSION\nARCH\nPUSH\n" > "$PROJECTPATH/.config" fi PROJECT_CONF="$PROJECTPATH/.config" PROJECTNAME=$(sed -n '1p' "$PROJECT_CONF") VERSION=$(sed -n '3p' "$PROJECT_CONF").$(sed -n '4p' "$PROJECT_CONF") REPO=$(sed -n '2p' "$PROJECT_CONF") ARCH=$(sed -n '5p' "$PROJECT_CONF") PUSH=$(sed -n '6p' "$PROJECT_CONF") INCREASE=$(sed -n '7p' "$PROJECT_CONF") LATEST=$(sed -n '8p' "$PROJECT_CONF") BUILDCACHE=$(sed -n '9p' "$PROJECT_CONF") DF386=$(sed -n '10p' "$PROJECT_CONF") DFAMD64=$(sed -n '11p' "$PROJECT_CONF") DFARM64=$(sed -n '12p' "$PROJECT_CONF") green_checkmark="\033[32m\xE2\x9C\x93\033[0m" red_x="\033[31m\xE2\x9C\x97\033[0m" if [[ $PUSH = "yes" ]]; then PUSHSTAT=$green_checkmark; fi if [[ $PUSH = "no" ]]; then PUSHSTAT=$red_x; fi if [[ $INCREASE = "yes" ]]; then INCREASESTAT=$green_checkmark; fi if [[ $INCREASE = "no" ]]; then INCREASESTAT=$red_x; fi if [[ $LATEST = "yes" ]]; then LATESTSTAT=$green_checkmark; fi if [[ $LATEST = "no" ]]; then LATESTSTAT=$red_x; fi if [[ $BUILDCACHE = "yes" ]]; then BUILDCACHESTAT=$green_checkmark; fi if [[ $BUILDCACHE = "no" ]]; then BUILDCACHESTAT=$red_x; fi clear echo "" echo "------------- CURRENT SETTINGS -------------" echo -e "\033[4mProject-Path:\033[0m \033[3m$PROJECTPATH\033[0m" echo -e "\033[4mProject:\033[0m \033[3m$PROJECTNAME\033[0m" echo -e "\033[4mImage-Name:\033[0m \033[3m$REPO/$PROJECTNAME:$VERSION\033[0m" echo -e "\033[4mArch:\033[0m \033[3m$ARCH\033[0m" echo -e "\033[4mDockerfile 386:\033[0m \033[3m$DF386\033[0m" echo -e "\033[4mDockerfile amd64:\033[0m \033[3m$DFAMD64\033[0m" echo -e "\033[4mDockerfile arm64:\033[0m \033[3m$DFARM64\033[0m" echo -e "\033[4mUpload:\033[0m \033[3m$PUSHSTAT\033[0m" echo -e "\033[4mIncrease Subversion:\033[0m \033[3m$INCREASESTAT\033[0m" echo -e "\033[4mTag as 'latest':\033[0m \033[3m$LATESTSTAT\033[0m" echo -e "\033[4mUse Build-Cache:\033[0m \033[3m$BUILDCACHESTAT\033[0m" echo "--------------------------------------------" echo "" echo "b) Back to Build-Menue" echo "" echo "f) Project-Path" echo "p) Project" echo "r) Docker-Registy" echo "m) Main-Version" echo "s) Start of Sub-Version" echo "a) Arch" echo "d1) Set Dockerfile-name for i386" echo "d2) Set Dockerfile-name for amd64" echo "d3) Set Dockerfile-name for arm64" echo "u) Upload to Registry (yes/no)" echo "i) Automatic Increase Subversion (yes/no)" echo "l) Tag as 'latest' (yes/no)" echo "c) Use Build-Cache (yes/no)" echo "x) Exit Image-Builder" echo "" read -p "Edit: " -n 2 menue_wahl case "$menue_wahl" in d1) clear echo "Current Dockerfile-name: $DF386" echo "Change to: " read NEW_DF sed -i "10s/.*/$NEW_DF/" "$PROJECT_CONF" menue ;; d2) clear echo "Current Dockerfile-name: $DFAMD64" echo "Change to: " read NEW_DF sed -i "11s/.*/$NEW_DF/" "$PROJECT_CONF" menue ;; d3) clear echo "Current Dockerfile-name: $DFARM64" echo "Change to: " read NEW_DF sed -i "12s/.*/$NEW_DF/" "$PROJECT_CONF" menue ;; f) clear echo "Current Project-Path: $PROJECTPATH" echo "Change to: " folder=(projects/*) #ordner=( "${ordner[@]%/}" ) PS3="Please chose the Project-Directory (or 'q' to quit): " select foldername in "${folder[@]}" "quit"; do if [ "$foldername" = "quit" ]; then break fi if [ -n "$foldername" ]; then echo "Change Project-Directory to '$foldername'" sed -i "1s%.*%$foldername%" "$CONF" break else echo "Not valid. Try again..." fi done menue ;; p) clear echo "Current Project: $PROJECTNAME" echo "Change to: " read NEW_PROJECTNAME sed -i "1s/.*/$NEW_PROJECTNAME/" "$PROJECT_CONF" menue ;; ############################################# r) clear echo "Current Repository: $REPO" echo "Change to: (for hub.docker.com, simply set your username)" read NEW_REPO sed -i "2s/.*/$NEW_REPO/" "$PROJECT_CONF" menue ;; ############################################# m) clear echo "Current Main-Version: $VERSION" echo "Change to: " read NEW_VERSION sed -i "3s/.*/$NEW_VERSION/" "$PROJECT_CONF" menue ;; ############################################# s) clear echo "Current Sub-Version: $SUBVERSION" echo "Change to: " read NEW_SUBVERSION sed -i "4s/.*/$NEW_SUBVERSION/" "$PROJECT_CONF" menue ;; ############################################# a) clear options=( 1 "386" off 2 "amd64" off 3 "arm64" off ) selection=$(dialog --checklist "Arch to build:" 10 40 3 "${options[@]}" 2>&1 >/dev/tty) if [ $? -ne 0 ]; then echo "Canceled." exit 1 fi echo "Build Archs:" selected_options="" for choice in $selection; do case $choice in 1) selected_options+="linux/386,";; 2) selected_options+="linux/amd64,";; 3) selected_options+="linux/arm64,";; esac done selected_options=${selected_options%,} sed -i "5s%.*%$selected_options%" "$PROJECT_CONF" menue ;; ############################################# u) clear echo "Current status of Push: ($PUSH)" echo "Change to: " read NEW_PUSH sed -i "6s/.*/$NEW_PUSH/" "$PROJECT_CONF" menue ;; ############################################# i) clear echo "Current status of Automatic Increase Subversion: ($INCREASE)" echo "Change to: " read NEW_INCREASE sed -i "7s/.*/$NEW_INCREASE/" "$PROJECT_CONF" menue ;; ############################################# l) clear echo "Current status of Tag as 'latest': ($LATEST)" echo "Change to: " read NEW_LATEST sed -i "8s/.*/$NEW_LATEST/" "$PROJECT_CONF" menue ;; ############################################# c) clear echo "Current status of User Build-Cache: ($BUILDCACHE)" echo "Change to: " read NEW_BUILDCACHE sed -i "9s/.*/$NEW_BUILDCACHE/" "$PROJECT_CONF" menue ;; ############################################# b) clear bash start.sh ;; ############################################# x|X) clear ende ;; ############################################# *) echo "Key not valid" read -p "Try again... " WEITER clear menue ;; ############################################# esac } ##################################################################### clear menue