Buckets:
| # GitHub environment detection helper for Hermes Agent skills. | |
| # | |
| # Usage (via terminal tool): | |
| # source skills/github/github-auth/scripts/gh-env.sh | |
| # | |
| # After sourcing, these variables are set: | |
| # GH_AUTH_METHOD - "gh", "curl", or "none" | |
| # GITHUB_TOKEN - personal access token (set if method is "curl") | |
| # GH_USER - GitHub username | |
| # GH_OWNER - repo owner (only if inside a git repo with a github remote) | |
| # GH_REPO - repo name (only if inside a git repo with a github remote) | |
| # GH_OWNER_REPO - owner/repo (only if inside a git repo with a github remote) | |
| # --- Auth detection --- | |
| GH_AUTH_METHOD="none" | |
| GITHUB_TOKEN="${GITHUB_TOKEN:-}" | |
| GH_USER="" | |
| if command -v gh &>/dev/null && gh auth status &>/dev/null 2>&1; then | |
| GH_AUTH_METHOD="gh" | |
| GH_USER=$(gh api user --jq '.login' 2>/dev/null) | |
| elif [ -n "$GITHUB_TOKEN" ]; then | |
| GH_AUTH_METHOD="curl" | |
| elif [ -f "$HOME/.hermes/.env" ] && grep -q "^GITHUB_TOKEN=" "$HOME/.hermes/.env" 2>/dev/null; then | |
| GITHUB_TOKEN=$(grep "^GITHUB_TOKEN=" "$HOME/.hermes/.env" | head -1 | cut -d= -f2 | tr -d '\n\r') | |
| if [ -n "$GITHUB_TOKEN" ]; then | |
| GH_AUTH_METHOD="curl" | |
| fi | |
| elif [ -f "$HOME/.git-credentials" ] && grep -q "github.com" "$HOME/.git-credentials" 2>/dev/null; then | |
| GITHUB_TOKEN=$(grep "github.com" "$HOME/.git-credentials" | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|') | |
| if [ -n "$GITHUB_TOKEN" ]; then | |
| GH_AUTH_METHOD="curl" | |
| fi | |
| fi | |
| # Resolve username for curl method | |
| if [ "$GH_AUTH_METHOD" = "curl" ] && [ -z "$GH_USER" ]; then | |
| GH_USER=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ | |
| https://api.github.com/user 2>/dev/null \ | |
| | python3 -c "import sys,json; print(json.load(sys.stdin).get('login',''))" 2>/dev/null) | |
| fi | |
| # --- Repo detection (if inside a git repo with a GitHub remote) --- | |
| GH_OWNER="" | |
| GH_REPO="" | |
| GH_OWNER_REPO="" | |
| _remote_url=$(git remote get-url origin 2>/dev/null) | |
| if [ -n "$_remote_url" ] && echo "$_remote_url" | grep -q "github.com"; then | |
| GH_OWNER_REPO=$(echo "$_remote_url" | sed -E 's|.*github\.com[:/]||; s|\.git$||') | |
| GH_OWNER=$(echo "$GH_OWNER_REPO" | cut -d/ -f1) | |
| GH_REPO=$(echo "$GH_OWNER_REPO" | cut -d/ -f2) | |
| fi | |
| unset _remote_url | |
| # --- Summary --- | |
| echo "GitHub Auth: $GH_AUTH_METHOD" | |
| [ -n "$GH_USER" ] && echo "User: $GH_USER" | |
| [ -n "$GH_OWNER_REPO" ] && echo "Repo: $GH_OWNER_REPO" | |
| [ "$GH_AUTH_METHOD" = "none" ] && echo "⚠ Not authenticated — see github-auth skill" | |
| export GH_AUTH_METHOD GITHUB_TOKEN GH_USER GH_OWNER GH_REPO GH_OWNER_REPO | |
Xet Storage Details
- Size:
- 2.57 kB
- Xet hash:
- 960e249a645964341aeafd1740eae9df0c8a3ae7efb1bd1ee45b19ed1c83af9c
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.