#!/bin/bash # Обертка для Makefile для поддержки подкоманд с пробелами # Использование: ./make-wrapper.sh docker build # ./make-wrapper.sh git push origin main # ./make-wrapper.sh k8s apply CONTEXT=prod set -e # Цвета для вывода COLOR_RESET='\033[0m' COLOR_BOLD='\033[1m' COLOR_CYAN='\033[36m' COLOR_YELLOW='\033[33m' # Функция для вывода помощи show_help() { echo -e "${COLOR_BOLD}${COLOR_CYAN}Makefile Wrapper - Поддержка подкоманд${COLOR_RESET}" echo "" echo "Использование:" echo " ./make-wrapper.sh docker build" echo " ./make-wrapper.sh docker tag" echo " ./make-wrapper.sh docker push" echo " ./make-wrapper.sh git status" echo " ./make-wrapper.sh git pull" echo " ./make-wrapper.sh git push origin main" echo " ./make-wrapper.sh git add file1 file2" echo " ./make-wrapper.sh git commit \"message\"" echo " ./make-wrapper.sh k8s contexts" echo " ./make-wrapper.sh k8s apply CONTEXT=prod" echo " ./make-wrapper.sh env check" echo " ./make-wrapper.sh env create" echo "" echo "Или используйте напрямую:" echo " make docker CMD=build" echo " make git CMD=push ARGS=origin main" echo " make k8s CMD=apply CONTEXT=prod" echo " make env CMD=check" } # Проверка аргументов if [ $# -eq 0 ]; then show_help exit 0 fi # Получаем команду (docker, git, k8s, env) CMD_TYPE=$1 shift # Обработка команд case "$CMD_TYPE" in docker) if [ $# -eq 0 ]; then make docker else SUB_CMD=$1 shift make docker CMD="$SUB_CMD" "$@" fi ;; git) if [ $# -eq 0 ]; then make git else SUB_CMD=$1 shift # Для git commit и git add нужны аргументы if [ "$SUB_CMD" = "commit" ] || [ "$SUB_CMD" = "add" ]; then ARGS="$@" make git CMD="$SUB_CMD" ARGS="$ARGS" else # Для остальных команд аргументы передаются как есть make git CMD="$SUB_CMD" ARGS="$@" fi fi ;; k8s) if [ $# -eq 0 ]; then make k8s else SUB_CMD=$1 shift # Обработка CONTEXT=value CONTEXT_ARG="" ARGS="" for arg in "$@"; do if [[ "$arg" == CONTEXT=* ]]; then CONTEXT_ARG="$arg" else ARGS="$ARGS $arg" fi done if [ -n "$CONTEXT_ARG" ]; then make k8s CMD="$SUB_CMD" $CONTEXT_ARG "$ARGS" else make k8s CMD="$SUB_CMD" "$ARGS" fi fi ;; env) if [ $# -eq 0 ]; then make env else SUB_CMD=$1 shift # Для create-force нужно обработать if [ "$SUB_CMD" = "create-force" ]; then make env-create-force else make env CMD="$SUB_CMD" "$@" fi fi ;; help|--help|-h) show_help exit 0 ;; *) # Если это не подкоманда, передаем в make напрямую make "$CMD_TYPE" "$@" ;; esac