Функция для коммитов — как вы думаете?

Для упрощения работы с Jira я подготовил для коммита следующую функцию:

commit() {
  BRANCH=$(git branch --show-current)
  REPOSITORY=$(git rev-parse --show-toplevel)
  IFS='-' read -r -A BRANCH_PARTS <<<"$BRANCH"
  NUM_REGEX='^[0-9]+$'
  JIRA_ID_DEFINITION="${REPOSITORY}/.jira"
  PROJECT_PREFIX=$(cat $JIRA_ID_DEFINITION)

  if [[ ${BRANCH_PARTS[1]} == 'dev' ]] && [[ ${PROJECT_PREFIX} != "" ]]; then
    # If branch has a format: dev-{projectId}-{taskId}
    if [ "${#BRANCH_PARTS[@]}" -ge 3 ] && ! [[ ${BRANCH_PARTS[2]} =~ $NUM_REGEX ]] && [[ ${BRANCH_PARTS[3]} =~ $NUM_REGEX ]]; then
    
      COMMIT_MSG="${BRANCH_PARTS[2]:u}-$(printf %03d ${BRANCH_PARTS[3]})"
    
    # If branch has a format: dev-{taskId}
    elif [[ ${BRANCH_PARTS[2]} =~ $NUM_REGEX ]]; then
      COMMIT_MSG=$PROJECT_PREFIX

      for part in "${BRANCH_PARTS[@]}"; do
        if [[ ${part} =~ $NUM_REGEX ]]; then
          COMMIT_MSG+="-$(printf %03d $part)"
        fi
      done
    fi

    COMMIT_MSG+=": $1"

  else
    COMMIT_MSG=$1
  fi

  if ask "[VRS-Env] Skip CI process?" N; then
    COMMIT_MSG+=" [skip-ci]"
  fi

  echo -e "n::> $COMMIT_MSG"
  if ask "Is that correct?" Y; then
    git commit -m "$COMMIT_MSG"
  fi
}

Идея проста:
Если текущий корень проекта (корень Git) содержит файл .jira, получаем его контент (он содержит только Jira ID, т.е. PROJ).
Затем мы проверяем, начинается ли имя ветки с dev — если нет, имя фиксации будет «чистым» (без префикса), но если ветка, например, dev-13, то перед фиксацией будет стоять префикс PROJ-13: [rest of commit message].
Но у нас могут быть ветки для других проектов, например dev-proj2-22, так что мы тоже обработаем его ‘в формат PROJ2-22: [rest of commit message].

Он работает так, как я хочу, но я думаю, что есть код, который может выглядеть лучше.
Что вы думаете? Что я могу сделать лучше?

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *