feat: initial commit - Jhonny Editor
- Adicionado estrutura completa do projeto - Configurado MCP server para Premiere Pro - Adicionado documentação e skills - Configurado Gitignore para o projeto
This commit is contained in:
Executable
+127
@@ -0,0 +1,127 @@
|
||||
#!/bin/zsh
|
||||
# ============================================================
|
||||
# OpenCut Ronald - admin/commit.command
|
||||
#
|
||||
# COMMIT: monta a mensagem, commita e envia para o Gitea.
|
||||
# 1. Le a secao 'NOVO NESTE LOTE' do admin/DEV-NOTES.md
|
||||
# 2. Junta o resumo automatico dos arquivos alterados
|
||||
# 3. git add -A + commit + push
|
||||
#
|
||||
# O push e a unica etapa que sai desta maquina, entao ele pede
|
||||
# confirmacao. Use AUTO=1 para rodar sem perguntar (ex.: dentro do
|
||||
# OpenCut.command em modo automatico).
|
||||
#
|
||||
# Uso:
|
||||
# admin/commit.command commita e pergunta antes do push
|
||||
# DRY=1 admin/commit.command so mostra o plano, nao commita
|
||||
# AUTO=1 admin/commit.command commita e faz push sem perguntar
|
||||
# ============================================================
|
||||
set -u
|
||||
umask 077
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
||||
ADMIN="$ROOT/admin"
|
||||
NOTES="$ADMIN/DEV-NOTES.md"
|
||||
REMOTE="origin"
|
||||
|
||||
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)"
|
||||
say() { echo "${BLU}== ${NC}$*"; }
|
||||
ok() { echo "${GRN}-> OK ${NC}$*"; }
|
||||
warn() { echo "${YLW}-> Aviso: ${NC}$*"; }
|
||||
die() { echo "${RD}-> Erro: ${NC}$*" >&2; exit 1; }
|
||||
|
||||
cd "$ROOT" || die "nao consegui entrar em $ROOT"
|
||||
[[ -d .git ]] || die "nao e um repositorio git em $ROOT"
|
||||
git remote get-url "$REMOTE" >/dev/null 2>&1 || die "remote '$REMOTE' nao configurado"
|
||||
|
||||
echo "${BLU}============================================================${NC}"
|
||||
say "commit.command - commit + push"
|
||||
say "repositorio: $(git remote get-url "$REMOTE")"
|
||||
say "branch: $(git branch --show-current)"
|
||||
echo "${BLU}============================================================${NC}"
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# 1) Ha o que commitar?
|
||||
# ------------------------------------------------------------
|
||||
CHANGES="$(git status --porcelain)"
|
||||
if [[ -z "$CHANGES" ]]; then
|
||||
ok "Nenhuma alteracao para commitar."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
say "Alteracoes detectadas:"
|
||||
echo "$CHANGES" | sed 's/^/ /' | head -60
|
||||
echo " ... ($(echo "$CHANGES" | grep -c .) itens)"
|
||||
echo
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# 2) Mensagem do commit
|
||||
# ------------------------------------------------------------
|
||||
MSG_NOTA=""
|
||||
if [[ -f "$NOTES" && -s "$NOTES" ]]; then
|
||||
MSG_NOTA="$(awk '
|
||||
/^## NOVO NESTE LOTE/ {f=1; next}
|
||||
/^## / && f {exit}
|
||||
f
|
||||
' "$NOTES" 2>/dev/null \
|
||||
| sed 's/^[[:space:]]*//; s/[[:space:]]*$//' \
|
||||
| grep -v '^$' \
|
||||
| awk '/^<!--/{c=1;next} /-->/&&c{c=0;next} c{next} {print}' \
|
||||
| sed 's/^[-*] //' \
|
||||
| grep -v '(_vazio' || true)"
|
||||
fi
|
||||
|
||||
FILES="$(git status --porcelain | sed 's/^.../ - /' | head -80)"
|
||||
STAT="$(git diff --stat HEAD | tail -1)"
|
||||
|
||||
if [[ -n "$MSG_NOTA" ]]; then
|
||||
BODY="$MSG_NOTA"
|
||||
else
|
||||
BODY="(sem nota em DEV-NOTES.md; veja os arquivos alterados abaixo)"
|
||||
fi
|
||||
|
||||
COMMIT_MSG="update automatizado: alteracoes no projeto
|
||||
$(printf '%s\n' "$BODY")
|
||||
|
||||
$STAT
|
||||
|
||||
Arquivos alterados:
|
||||
$FILES"
|
||||
|
||||
say "Mensagem do commit a ser usada:"
|
||||
echo "----------------------------------------------"
|
||||
echo "$COMMIT_MSG"
|
||||
echo "----------------------------------------------"
|
||||
echo
|
||||
|
||||
if [[ "${DRY:-0}" = "1" ]]; then
|
||||
say "DRY=1 - nao vou commitar/push."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# 3) Commit
|
||||
# ------------------------------------------------------------
|
||||
say "Adicionando arquivos e commitando..."
|
||||
git add -A
|
||||
git commit -m "$COMMIT_MSG" || die "commit falhou"
|
||||
ok "commit criado: $(git rev-parse --short HEAD)"
|
||||
echo
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# 4) Push (confirmado - e o passo que publica)
|
||||
# ------------------------------------------------------------
|
||||
if [[ "${AUTO:-0}" != "1" ]]; then
|
||||
printf "Enviar para '%s' agora? [s/N] " "$REMOTE"
|
||||
read -r RESP
|
||||
case "$RESP" in
|
||||
[sS]|[sS][iI][mM]|[yY]|[yY][eE][sS]) ;;
|
||||
*) warn "push cancelado - o commit ficou local (envie depois com: git push $REMOTE HEAD)"; exit 0 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
say "Fazendo push para '$REMOTE'..."
|
||||
git push "$REMOTE" HEAD || die "push falhou"
|
||||
ok "push concluido"
|
||||
Reference in New Issue
Block a user