Files
fish-config/functions/bd-pull.fish
T
rootiest 4c1e7a7eb9 feat: initial fish shell configuration
- Core config layered on CachyOS base with Catppuccin Mocha theming
- Fisher plugins: fzf.fish, catppuccin, autopair, replay, puffer-fish, magic-enter, spark
- Smart CLI wrappers with fallbacks (bat, lsd, btop, dust, prettyping)
- Custom functions: git, docker, network, kitty, AI session management
- Extensive abbreviation system for keyboard-driven workflows
- Secrets/local sourcing pattern for private and machine-specific config
- README with full documentation and personalization guide
- AGPLv3+ license with copyright headers on all source files
2026-04-26 01:37:38 -04:00

60 lines
2.5 KiB
Fish
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Copyright (C) 2026 Rootiest
# SPDX-License-Identifier: AGPL-3.0-or-later
function bd-pull -d "Pull new Gitea issues into local Beads and link them"
if not set -q argv[1]; echo "Need repo owner/name"; return 1; end
if not set -q GITEA_TOKEN; echo "\$GITEA_TOKEN not set"; return 1; end
set -l REPO $argv[1]
set -l GITEA_URL "https://git.rootiest.dev"
set -l IMPORT_COUNT 0
echo (set_color blue)"📡 Checking Gitea: $REPO..."(set_color normal)
# 1. Fetch issues (using jq to get BOTH title and number)
set -l gitea_json (curl -s -H "Authorization: token $GITEA_TOKEN" "$GITEA_URL/api/v1/repos/$REPO/issues?state=all")
# 2. Iterate through issues using their index/number
for row in (echo $gitea_json | jq -r '.[] | @base64')
set -l _decode (echo $row | base64 --decode)
set -l title (echo $_decode | jq -r '.title')
set -l number (echo $_decode | jq -r '.number')
# If it doesn't have [ID] brackets, it's a "Web-Original" issue
if not string match -qr "^\[.*\]" "$title"
echo (set_color yellow)" Linking Web Issue #$number: $title"(set_color normal)
# A. Create local Bead and capture the new ID
# This captures the output of bd create to find the ID it generated
set -l bd_output (bd create --title "$title")
set -l bid (echo $bd_output | string match -r "bd-[a-z0-9]+" | head -n 1)
if test -z "$bid"
# Fallback: find the latest ID in the jsonl if regex fails
set bid (tail -n 1 .beads/issues.jsonl | jq -r '.id')
end
# B. Update the Gitea Issue Title IMMEDIATELY via API
# This prevents the Gitea Action from creating a duplicate
set -l new_title "[$bid] $title"
curl -s -X PATCH -H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"title\":\"$new_title\"}" \
"$GITEA_URL/api/v1/repos/$REPO/issues/$number" > /dev/null
set IMPORT_COUNT (math $IMPORT_COUNT + 1)
end
end
if test "$IMPORT_COUNT" -gt 0
echo (set_color green)"✅ Linked $IMPORT_COUNT issues."(set_color normal)
bd sync
# We don't even necessarily need to push now, because the titles match!
git add .beads/issues.jsonl
git commit -m "chore: sync local IDs for web issues"
git push
else
echo "⠿ No unlinked issues found."
end
end