My dotfiles. Period.

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