commit.sh 659 B

1234567891011121314151617181920212223242526272829
  1. #!/bin/bash
  2. get_ticket_number() {
  3. git symbolic-ref --short HEAD | grep -Ei '^ocst-[0-9]{2,5}-' | sed -E 's/^(ocst-[0-9]{2,5}).*$/\1/i' | tr '[:upper:]' '[:lower:]'
  4. }
  5. format_commit_message() {
  6. local message="$1"
  7. local ticket="$2"
  8. if echo "$message" | grep -E '^[^:]+:' >/dev/null; then
  9. local type=$(echo "$message" | cut -d: -f1)
  10. local content=$(echo "$message" | cut -d: -f2- | sed 's/^ //')
  11. echo "$type($ticket): $content"
  12. else
  13. echo "$message"
  14. fi
  15. }
  16. main() {
  17. local ticket=$(get_ticket_number)
  18. if [ -n "$ticket" ]; then
  19. git commit -m "$(format_commit_message "$1" "$ticket")" "${@:2}"
  20. else
  21. git commit -m "$1" "${@:2}"
  22. fi
  23. }
  24. main "$@"