2026-08-17 22:30:18 -04:00
|
|
|
#!/bin/sh
|
|
|
|
|
# thefuck bridge: only fires if thefuck is installed. Note that thefuck
|
|
|
|
|
# --yes decides *and executes* its own suggestion, so by the time this
|
|
|
|
|
# candidate is shown it may have already run once via thefuck -- treat
|
|
|
|
|
# it as informational, not a dry-run.
|
2026-08-18 01:10:40 -04:00
|
|
|
#
|
|
|
|
|
# Wrapped in `timeout`: thefuck has no fast-fail path when no rule
|
|
|
|
|
# matches -- fuzz-testing this source found it hanging past 3s on a
|
|
|
|
|
# majority of unmatched inputs (well beyond its own ~325ms best-case
|
|
|
|
|
# startup cost measured earlier). Every other source in this directory
|
|
|
|
|
# either runs in single-digit milliseconds or is itself already
|
|
|
|
|
# timeout-wrapped (70/80's HTTP calls); this one wasn't, so a single
|
|
|
|
|
# bad input could block the whole fx() pipeline indefinitely. Capped
|
|
|
|
|
# at 5s -- generous enough for a real correction (~2.8s measured
|
|
|
|
|
# earlier for the git-push case) without being unbounded.
|
2026-08-17 22:30:18 -04:00
|
|
|
command -v thefuck >/dev/null 2>&1 || exit 0
|
2026-08-18 01:10:40 -04:00
|
|
|
command -v timeout >/dev/null 2>&1 || exit 0
|
2026-08-17 22:30:18 -04:00
|
|
|
cmd="$1"
|
|
|
|
|
[ -n "$cmd" ] || exit 0
|
2026-08-18 01:10:40 -04:00
|
|
|
timeout 5 thefuck --yes "$cmd" 2>/dev/null | tr -d '\342\200\213' | tail -1
|