#!/bin/zsh # ============================================================ # OpenCut Ronald - admin/OpenCut.command # # PONTO DE ENTRADA UNICO. Rode este arquivo a cada atualizacao que # desenvolvermos: ele executa os tres scripts da pasta admin em ordem. # # 1. update.command dependencias + build dos paineis + testes # 2. deploy.command backend no ar + ponte de live-updates # 3. commit.command commit + push (pergunta antes de publicar) # # Se o update encontrar pendencias (teste quebrado, build falhando), # ele PARA antes do commit - nada de publicar arvore quebrada. Para # seguir mesmo assim, use FORCE=1. # # Uso: # admin/OpenCut.command ciclo completo # AUTO=1 admin/OpenCut.command nao pergunta antes do push # SKIP_TESTS=1 admin/OpenCut.command pula os testes do passo 1 # FORCE=1 admin/OpenCut.command commita mesmo com pendencias # ONLY=deploy admin/OpenCut.command roda so uma etapa # (update | deploy | commit) # ============================================================ set -u ADMIN="$(cd "$(dirname "$0")" && pwd -P)" GRN="$(tput setaf 2 2>/dev/null)"; YLW="$(tput setaf 3 2>/dev/null)" RD="$(tput setaf 1 2>/dev/null)"; BLU="$(tput setaf 4 2>/dev/null)" NC="$(tput sgr0 2>/dev/null)" step() { echo; echo "${BLU}============================================================${NC}" echo "${BLU} $*${NC}" echo "${BLU}============================================================${NC}"; } ok() { echo "${GRN}-> OK ${NC}$*"; } warn() { echo "${YLW}-> Aviso: ${NC}$*"; } die() { echo "${RD}-> Erro: ${NC}$*" >&2; exit 1; } ONLY="${ONLY:-all}" run_step() { [ "$ONLY" = "all" ] || [ "$ONLY" = "$1" ]; } for s in update deploy commit; do [ -x "$ADMIN/$s.command" ] || die "$ADMIN/$s.command ausente ou sem permissao de execucao" done UPDATE_RC=0 # ------------------------------------------------------------ # 1) Atualizacoes # ------------------------------------------------------------ if run_step update; then step "1/3 ATUALIZACOES (dependencias, build, testes)" "$ADMIN/update.command" || UPDATE_RC=$? if [ "$UPDATE_RC" != "0" ]; then warn "o update terminou com pendencias (codigo $UPDATE_RC)" fi fi # ------------------------------------------------------------ # 2) Deploy # ------------------------------------------------------------ if run_step deploy; then step "2/3 DEPLOY (backend + ponte de live-updates)" "$ADMIN/deploy.command" || warn "o deploy nao confirmou o backend no ar" fi # ------------------------------------------------------------ # 3) Commit # ------------------------------------------------------------ if run_step commit; then if [ "$UPDATE_RC" != "0" ] && [ "${FORCE:-0}" != "1" ]; then step "3/3 COMMIT - PULADO" warn "o passo 1 acusou pendencias; nao vou commitar uma arvore quebrada." warn "corrija os avisos acima, ou rode de novo com FORCE=1 para commitar assim mesmo." exit "$UPDATE_RC" fi step "3/3 COMMIT (commit + push)" "$ADMIN/commit.command" || die "o commit falhou" fi echo ok "Ciclo concluido."