#!/bin/bash # detect-platform.sh - Detect git platform (Gitea or GitHub) for current repo # Usage: source detect-platform.sh && detect_platform # or: ./detect-platform.sh (prints platform name) detect_platform() { local remote_url remote_url=$(git remote get-url origin 2>/dev/null) if [[ -z "$remote_url" ]]; then echo "error: not a git repository or no origin remote" >&2 return 1 fi # Check for GitHub if [[ "$remote_url" == *"github.com"* ]]; then PLATFORM="github" export PLATFORM echo "github" return 0 fi # Check for common Gitea indicators # Gitea URLs typically don't contain github.com, gitlab.com, bitbucket.org if [[ "$remote_url" != *"gitlab.com"* ]] && \ [[ "$remote_url" != *"bitbucket.org"* ]]; then # Assume Gitea for self-hosted repos PLATFORM="gitea" export PLATFORM echo "gitea" return 0 fi PLATFORM="unknown" export PLATFORM echo "unknown" return 1 } get_repo_info() { local remote_url remote_url=$(git remote get-url origin 2>/dev/null) if [[ -z "$remote_url" ]]; then echo "error: not a git repository or no origin remote" >&2 return 1 fi # Extract owner/repo from URL # Handles: git@host:owner/repo.git, https://host/owner/repo.git, https://host/owner/repo local repo_path if [[ "$remote_url" == git@* ]]; then repo_path="${remote_url#*:}" else repo_path="${remote_url#*://}" repo_path="${repo_path#*/}" fi # Remove .git suffix if present repo_path="${repo_path%.git}" echo "$repo_path" } get_repo_owner() { local repo_info repo_info=$(get_repo_info) echo "${repo_info%%/*}" } get_repo_name() { local repo_info repo_info=$(get_repo_info) echo "${repo_info##*/}" } # If script is run directly (not sourced), output the platform if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then detect_platform fi