#!/usr/bin/env bash # gstack-slug — output project slug and sanitized branch name # Usage: eval $(gstack-slug) → sets SLUG and BRANCH variables # Or: gstack-slug → prints SLUG=... and BRANCH=... lines set -euo pipefail # tr -cd strips any shell metacharacters (;$`|&! etc) from git-derived values # to prevent injection via eval $(gstack-slug). See: #133 SLUG=$(git remote get-url origin 2>/dev/null | sed 's|.*[:/]\([^/]*/[^/]*\)\.git$|\1|;s|.*[:/]\([^/]*/[^/]*\)$|\1|' | tr '/' '-' | tr -cd 'a-zA-Z0-9._-') BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' | tr -cd 'a-zA-Z0-9._-') echo "SLUG=$SLUG" echo "BRANCH=$BRANCH"