My dotfiles. Period.

remote-edit 973B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. #
  3. # Edit URL of remote $1 using vipe(1)
  4. #
  5. die() {
  6. echo "$@" 1>&2
  7. exit 1
  8. }
  9. usage() {
  10. echo "usage: git $(basename "$0") [-v|--verbose] REMOTE"
  11. exit 0
  12. }
  13. think() {
  14. $verbose && echo "$@"
  15. }
  16. main() {
  17. local remote
  18. local oldurl
  19. local newurl
  20. local verbose=false
  21. while true; do case $1 in
  22. -v|--verbose) verbose=true; shift ;;
  23. -*) usage ;;
  24. *) break ;;
  25. esac done
  26. remote="$1"
  27. test -n "$remote" || usage
  28. command -v vipe >/dev/null \
  29. || die "need vipe(1) from moreutils"
  30. think "remote='$remote'"
  31. oldurl=$(git remote get-url "$remote") \
  32. || die "failed to get old URL"
  33. think "oldurl='$oldurl'"
  34. think "EDITOR='$EDITOR'"
  35. think "VISUAL='$VISUAL'"
  36. newurl=$(vipe <<<"$oldurl") \
  37. || die "failed to edit URL (is vipe installed?)"
  38. think "newurl='$newurl'"
  39. git remote set-url "$remote" "$newurl" \
  40. || die "failed to set new remote URL"
  41. }
  42. main "$@"