From a2517d5c5d4930ac02938e79b3b303668ec54c83 Mon Sep 17 00:00:00 2001 From: "RingOfStorms (Joshua Bell)" Date: Wed, 12 Nov 2025 10:58:06 -0600 Subject: [PATCH] update branchsetup and li --- .../nix_modules/git/branching_setup.func.sh | 38 ++++++++++++++----- .../nix_modules/git/link_ignored.func.sh | 14 ++++++- hosts/lio/flake.lock | 8 ++-- 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/flakes/common/nix_modules/git/branching_setup.func.sh b/flakes/common/nix_modules/git/branching_setup.func.sh index c0efbb3..ee90974 100644 --- a/flakes/common/nix_modules/git/branching_setup.func.sh +++ b/flakes/common/nix_modules/git/branching_setup.func.sh @@ -14,22 +14,42 @@ branching_setup() { return 1 fi - # Build candidate ignored/untracked file list - local -a candidates=() + # Build candidate ignored/untracked top-level entries + local -a raw=() while IFS= read -r -d '' file; do - candidates+=("$file") + raw+=("$file") done < <(git -C "$repo_root" ls-files --others --ignored --exclude-standard -z || true) - # Include some common dotfiles at root even if tracked (for selection convenience) + # Reduce to top-level names (directories or files) + local -a tops=() + for c in "${raw[@]}"; do + c="${c%/}" + local top="${c%%/*}" + [ -z "$top" ] && continue + local found=0 + for existing in "${tops[@]}"; do + [ "$existing" = "$top" ] && found=1 && break + done + [ "$found" -eq 0 ] && tops+=("$top") + done + + # Include common root items even if tracked (for convenience) for extra in .env .env.development .env.development.local .envrc .direnv flake.nix flake.lock; do if [ -e "$repo_root/$extra" ]; then - candidates+=("$extra") + local exists=0 + for t in "${tops[@]}"; do [ "$t" = "$extra" ] && exists=1 && break; done + [ $exists -eq 0 ] && tops+=("$extra") fi done - # De-duplicate - local unique - unique=$(printf "%s\n" "${candidates[@]}" | awk '!seen[$0]++') + # Hard-coded excludes (noise, build outputs) + local -a EXCLUDES=(build dist) + local -a filtered=() + for t in "${tops[@]}"; do + local skip=0 + for e in "${EXCLUDES[@]}"; do [ "$t" = "$e" ] && skip=1 && break; done + [ $skip -eq 0 ] && filtered+=("$t") + done # Current config values local -a current @@ -39,7 +59,7 @@ branching_setup() { # Preselect current ones in fzf (mark with *) local list - list=$(printf "%s\n" $unique | while read -r x; do + list=$(printf "%s\n" "${filtered[@]}" | while read -r x; do local mark="" for c in "${current[@]}"; do [ "$c" = "$x" ] && mark="*" && break; done printf "%s%s\n" "$mark" "$x" diff --git a/flakes/common/nix_modules/git/link_ignored.func.sh b/flakes/common/nix_modules/git/link_ignored.func.sh index 0e100ec..63d8aa0 100644 --- a/flakes/common/nix_modules/git/link_ignored.func.sh +++ b/flakes/common/nix_modules/git/link_ignored.func.sh @@ -99,6 +99,18 @@ EOF [ "$found" -eq 0 ] && tops+=("$top") done + # Hard-coded top-level excludes to avoid noisy build outputs + local -a EXCLUDES=(build dist) + if [ ${#tops[@]} -gt 0 ]; then + local -a tops_filtered=() + for t in "${tops[@]}"; do + local skip=0 + for e in "${EXCLUDES[@]}"; do [ "$t" = "$e" ] && skip=1 && break; done + [ $skip -eq 0 ] && tops_filtered+=("$t") + done + tops=("${tops_filtered[@]}") + fi + if [ ${#tops[@]} -eq 0 ]; then echo "No top-level ignored/untracked entries found in $repo_root" return 0 @@ -126,7 +138,7 @@ EOF local -a chosen if command -v fzf >/dev/null 2>&1 && [ "$USE_FZF" -eq 1 ]; then local selected - selected=$(printf "%s\n" "${filtered[@]}" | fzf --multi --height=40% --border --prompt="Select files to link: " --preview "if [ -f '$repo_root'/{} ]; then bat --color always --paging=never --style=plain '$repo_root'/{}; else ls -la '$repo_root'/{}; fi") + selected=$(printf "%s\n" "${filtered[@]}" | fzf --multi --height=40% --border --prompt="Select items to link: " --preview "if [ -f '$repo_root'/{} ]; then bat --color always --paging=never --style=plain '$repo_root'/{}; else ls -la '$repo_root'/{}; fi") if [ -z "$selected" ]; then echo "No files selected." && return 0 fi diff --git a/hosts/lio/flake.lock b/hosts/lio/flake.lock index ce26221..8c02507 100644 --- a/hosts/lio/flake.lock +++ b/hosts/lio/flake.lock @@ -1269,11 +1269,11 @@ }, "locked": { "dir": "flakes/secrets", - "lastModified": 1761107519, - "narHash": "sha256-HV+W8peuB0elo/32CgwfITp/ox4dFDXaM22z/HlmZ2c=", + "lastModified": 1762828900, + "narHash": "sha256-0AtMggGG2kUpE3HpWEweLe2jlstMGhEGAHBgqBXA2Ds=", "ref": "refs/heads/master", - "rev": "9de4c7892bdf28735875d43849d67d9b16b6d700", - "revCount": 731, + "rev": "1dd7e442dd99d8f3e3867655ecb0c5f4d666853c", + "revCount": 774, "type": "git", "url": "https://git.joshuabell.xyz/ringofstorms/dotfiles" },