test
This commit is contained in:
commit
9212996247
6 changed files with 370 additions and 0 deletions
94
github/gitlink-github.sh
Executable file
94
github/gitlink-github.sh
Executable file
|
@ -0,0 +1,94 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
GIT_REMOTE_NAME="github"
|
||||
REPO_NAME=$(basename "$(pwd)")
|
||||
|
||||
# ────────────────
|
||||
# Logging Helpers
|
||||
# ────────────────
|
||||
info() { echo -e "\e[1;34m[INFO]\e[0m $*"; }
|
||||
warn() { echo -e "\e[1;33m[WARN]\e[0m $*"; }
|
||||
error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; }
|
||||
|
||||
# ────────────────
|
||||
# Check/install git
|
||||
# ────────────────
|
||||
if ! command -v git &>/dev/null; then
|
||||
info "Installing git..."
|
||||
sudo apt update && sudo apt install git -y || error "Failed to install git"
|
||||
else
|
||||
info "Git already installed: $(git --version)"
|
||||
fi
|
||||
|
||||
# ────────────────
|
||||
# Check/install GitHub CLI
|
||||
# ────────────────
|
||||
if ! command -v gh &>/dev/null; then
|
||||
info "Installing GitHub CLI..."
|
||||
type -p curl >/dev/null || sudo apt install curl -y
|
||||
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | \
|
||||
sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
|
||||
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] \
|
||||
https://cli.github.com/packages stable main" | \
|
||||
sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
|
||||
sudo apt update && sudo apt install gh -y || error "Failed to install GitHub CLI"
|
||||
else
|
||||
info "GitHub CLI already installed: $(gh --version | head -n 1)"
|
||||
fi
|
||||
|
||||
# ────────────────
|
||||
# Authenticate GitHub CLI
|
||||
# ────────────────
|
||||
if ! gh auth status &>/dev/null; then
|
||||
info "Authenticating GitHub CLI..."
|
||||
gh auth login || error "GitHub authentication failed"
|
||||
else
|
||||
info "GitHub CLI authenticated as: $(gh auth status | grep 'Logged in as' | cut -d ':' -f2 | xargs)"
|
||||
fi
|
||||
|
||||
# ────────────────
|
||||
# Initialize Git Repo
|
||||
# ────────────────
|
||||
if [ ! -d ".git" ]; then
|
||||
info "Initializing local Git repo..."
|
||||
git init || error "Git init failed"
|
||||
git add . || warn "No files to add"
|
||||
git commit -m "Initial commit" || warn "Nothing to commit"
|
||||
else
|
||||
info "Git repo already initialized."
|
||||
fi
|
||||
|
||||
# ────────────────
|
||||
# Create GitHub remote if missing
|
||||
# ────────────────
|
||||
if ! git remote get-url "$GIT_REMOTE_NAME" &>/dev/null; then
|
||||
info "Creating GitHub repo '$REPO_NAME' via CLI..."
|
||||
gh repo create "$REPO_NAME" --public --source=. --remote="$GIT_REMOTE_NAME" --push || error "GitHub repo creation failed"
|
||||
else
|
||||
info "Remote '$GIT_REMOTE_NAME' already set to: $(git remote get-url $GIT_REMOTE_NAME)"
|
||||
fi
|
||||
|
||||
# ────────────────
|
||||
# Commit changes if needed
|
||||
# ────────────────
|
||||
if ! git diff --quiet || ! git diff --cached --quiet; then
|
||||
info "Changes detected — committing..."
|
||||
git add . || warn "Nothing staged"
|
||||
git commit -m "Update: $(date '+%Y-%m-%d %H:%M:%S')" || warn "Nothing to commit"
|
||||
else
|
||||
info "No uncommitted changes."
|
||||
fi
|
||||
|
||||
# ────────────────
|
||||
# Push if branch is ahead
|
||||
# ────────────────
|
||||
if git status | grep -q "Your branch is ahead"; then
|
||||
info "Pushing changes to GitHub..."
|
||||
git push "$GIT_REMOTE_NAME" "$(git rev-parse --abbrev-ref HEAD)" || error "Push failed"
|
||||
else
|
||||
info "No push needed. Local and remote are synced."
|
||||
fi
|
Loading…
Add table
Add a link
Reference in a new issue