#!/usr/bin/env bash

cd src

if [ -f debian/changelog ] || [ ! -d .git ]; then
    tamarin_info "Not a Git repository or Debian changelog already exists !"
    exit
fi

# Get commits log as changelog

BUILD_TAG=$(tamarin_db get build_tag "last")

tamarin_debug "BUILD TAG IS ${BUILD_TAG}"

if [[ ${BUILD_TAG} == "last" ]]
then
  tags=$(git tag master -l "release/*" | tr '_' '-' | sort -rV)
else
  tagbranch="build-tag-${BUILD_TAG}"
  git checkout -b ${tagbranch}
  tamarin_db set "tag_branch" "${tag_branch}"
  local tags="${BUILD_TAG}"
fi

if [[ -z ${tags} ]]
then
  tamarin_warn "No release tag found, you repo must have a tag like 'release/X.X'"
  exit
fi

touch debian/changelog

for tag in ${tags}
do
  logs=$(git log --pretty=format:"%an - %h : %s" ${tag} | sed 's/"/\\"/g')

  # Set the top commiter as the maintainer of the project if not defined
  top_contributor=$(git log --pretty=short | git shortlog -s -n -e | sed 's/^\s*[0-9]*\s*//g' | head -n 1)
  maintainer=$(tamarin_db get maintainer "${top_contributor}")

  project_name=$(tamarin_db get project_name)
  version=${tag#*/} #$(get_opt version 0.0.0)
  version=${version/_/-} #$(get_opt version 0.0.0)

  distribution=$(tamarin_db get distribution UNRELEASED)
  urgency=$(tamarin_db get urgency low)

  package_version=${version}

  # Define project_version if not defined
  if [ -z "$(tamarin_db get project_version)" ]; then
      # Share computed project version
      tamarin_db set project_version "${version}"
  fi

  echo "${project_name} (${version}) ${distribution}; urgency=${urgency}" >> debian/changelog

  echo >> debian/changelog

  while read -r entry; do
    echo "  * ${entry}" >> debian/changelog
  done <<< "$(echo -e "${logs}" | sed 's/^"//')"

  echo >> debian/changelog

  echo " -- ${maintainer}  $(date -R)" >> debian/changelog
  echo >> debian/changelog
done