From cbc238ccf6fdd4d323eac1f641cb46581ec52fd7 Mon Sep 17 00:00:00 2001 From: Core Master Date: Sun, 7 Jun 2026 07:11:53 +0300 Subject: [PATCH 1/3] Trigger CI From 99bc2b8417febde734cfac8ea0e6ed8f3ae76101 Mon Sep 17 00:00:00 2001 From: Core Master Date: Sun, 7 Jun 2026 07:38:53 +0300 Subject: [PATCH 2/3] Adding Some Features to core-master --- src/mod/github/prs.sh | 92 ++++++++++--------------------------------- 1 file changed, 21 insertions(+), 71 deletions(-) diff --git a/src/mod/github/prs.sh b/src/mod/github/prs.sh index e65a0e0..08ab3d3 100644 --- a/src/mod/github/prs.sh +++ b/src/mod/github/prs.sh @@ -14,6 +14,7 @@ pr-list () { fi name="$(repo "${name}")" || return + gh pr list --repo "${name}" --state "${state}" "$@" return @@ -38,6 +39,7 @@ prs () { fi name="$(repo "${name}")" || return + gh pr list --repo "${name}" --state "${state}" --json number -q 'length' "$@" return @@ -47,35 +49,33 @@ prs () { gh pr list --json number -q 'length' "$@" } + pr-open () { need gh || return - local id="${1:-}" - shift >/dev/null 2>&1 || true - - [[ -n "${id}" ]] || { err "Missing PR number/url/branch"; return; } - - gh pr view "${id}" --web "$@" || { err "Failed to open PR: ${id}"; return; } + gh pr view "$@" --web || { err "Failed to open PR"; return; } } pr-view () { need gh || return - local id="${1:-}" - shift >/dev/null 2>&1 || true + gh pr view "$@" || { err "Failed to view PR"; return; } - [[ -n "${id}" ]] || { err "Missing PR number/url/branch"; return; } +} +pr-diff () { + + need gh || return - gh pr view "${id}" "$@" || { err "Failed to view PR: ${id}"; return; } + gh pr diff "$@" || { err "Failed to diff PR"; return; } } -pr-new () { +pr-checkout () { need gh || return - gh pr create "$@" || { err "Failed to create PR"; return; } + gh pr checkout "$@" || { err "Failed to checkout PR"; return; } } @@ -83,92 +83,42 @@ pr-checks () { need gh || return - gh pr checks "$@" + gh pr checks "$@" || { err "Failed to check PR"; return; } } pr-ready () { need gh || return - local id="${1:-}" - shift >/dev/null 2>&1 || true - - if [[ -n "${id}" && "${id}" != --* ]]; then - gh pr ready "${id}" "$@" || { err "Failed to mark PR ready: ${id}"; return; } - else - gh pr ready "$@" || { err "Failed to mark PR ready"; return; } - fi - - succ "PR ready" + gh pr ready "$@" || { err "Failed to mark PR ready"; return; } } pr-merge () { need gh || return - local id="${1:-}" - shift >/dev/null 2>&1 || true - - if [[ -n "${id}" && "${id}" != --* ]]; then - gh pr merge "${id}" "$@" || { err "Failed to merge PR: ${id}"; return; } - else - gh pr merge "$@" || { err "Failed to merge PR"; return; } - fi - - succ "PR merged" + gh pr merge --squash "$@" || { err "Failed to merge PR"; return; } } -pr-close () { - - need gh || return - local id="${1:-}" - shift >/dev/null 2>&1 || true - - [[ -n "${id}" ]] || { err "Missing PR number/url/branch"; return; } - - gh pr close "${id}" "$@" || { err "Failed to close PR: ${id}"; return; } - - succ "PR closed: ${id}" - -} - -pr-reopen () { +pr-new () { need gh || return - local id="${1:-}" - shift >/dev/null 2>&1 || true - - [[ -n "${id}" ]] || { err "Missing PR number/url/branch"; return; } - - gh pr reopen "${id}" "$@" || { err "Failed to reopen PR: ${id}"; return; } - - succ "PR reopened: ${id}" + gh pr create "$@" || { err "Failed to create PR"; return; } } -pr-diff () { +pr-close () { need gh || return - local id="${1:-}" - shift >/dev/null 2>&1 || true - - [[ -n "${id}" ]] || { err "Missing PR number/url/branch"; return; } - gh pr diff "${id}" "$@" || { err "Failed to diff PR: ${id}"; return; } + gh pr close "$@" || { err "Failed to close PR"; return; } } -pr-checkout () { +pr-reopen () { need gh || return - local id="${1:-}" - shift >/dev/null 2>&1 || true - - [[ -n "${id}" ]] || { err "Missing PR number/url/branch"; return; } - - gh pr checkout "${id}" "$@" || { err "Failed to checkout PR: ${id}"; return; } - - succ "PR checked out: ${id}" + gh pr reopen "$@" || { err "Failed to reopen PR"; return; } } From 5777fef22dc51c01071fb1e6d0598ac6c305cfcd Mon Sep 17 00:00:00 2001 From: Core Master Date: Sun, 7 Jun 2026 08:23:38 +0300 Subject: [PATCH 3/3] Adding Some Features --- src/mod/github/branch.sh | 64 +++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 7 deletions(-) diff --git a/src/mod/github/branch.sh b/src/mod/github/branch.sh index 668ce2a..cdcbcad 100644 --- a/src/mod/github/branch.sh +++ b/src/mod/github/branch.sh @@ -1,4 +1,20 @@ +branch-list () { + + need git || return + git branch --no-color --all "$@" + +} +branches () { + + need git || return + isrepo || { err "Not a git repository"; return; } + + git fetch --prune origin >/dev/null 2>&1 || true + git branch -r | grep -v 'origin/HEAD' | sed '/^[[:space:]]*$/d' | wc -l | tr -d ' ' + +} + branch-exists () { need git || return @@ -105,6 +121,47 @@ default-branch () { gh repo view "${name}" --json defaultBranchRef -q '.defaultBranchRef.name' "$@" 2>/dev/null \ || { err "Failed to detect default branch: ${name}"; return; } +} +sync-branch () { + + need git || return + + local branch="" main="" + + isrepo || { err "Not a git repository"; return; } + + git diff --quiet || { err "Working tree has unstaged changes"; return; } + git diff --cached --quiet || { err "Working tree has staged changes"; return; } + + branch="$(current-branch)" || return + main="$(default-branch 2>/dev/null)" + + [[ -n "${branch}" ]] || { err "Detached HEAD"; return; } + [[ -n "${main}" ]] || main="main" + + git fetch --prune origin || { err "Failed to fetch origin"; return; } + + if [[ "${branch}" == "${main}" ]]; then + + git pull --ff-only origin "${main}" \ + || { err "Failed to sync ${main}"; return; } + + else + + if git rev-parse --abbrev-ref --symbolic-full-name "@{u}" >/dev/null 2>&1; then + + git merge --ff-only "@{u}" >/dev/null 2>&1 \ + || { err "Branch diverged from remote: ${branch}"; return; } + + fi + + git rebase "origin/${main}" \ + || { err "Failed to rebase ${branch} on ${main}"; return; } + + fi + + succ "Branch synced -> ${branch}" + } set-branch () { @@ -140,10 +197,3 @@ set-default-branch () { succ "Default branch set -> ${name}" } - -branch-list () { - - need git || return - git branch --no-color --all "$@" - -}