#!/usr/bin/env bash

###### script header ######

lib=$(realpath @@BASE_LIB@@) || exit 1
stat "${lib}" >> /dev/null || exit 1

# shellcheck source=../sh/lib.bash
if ! source "${lib}"; then
  echo "Error: could not find import"
  exit 1
fi

shfmt=$(realpath @@SHFMT@@)
stat "${shfmt}" >> /dev/null

cd "${BUILD_WORKSPACE_DIRECTORY}"

###### script body ######

scriptsStr=$(${shfmt} -f "${BUILD_WORKSPACE_DIRECTORY}")
readarray -t <<< "${scriptsStr}"
scripts=("${MAPFILE[@]}")

excludeDirs=(
  "internal/constellation/helm/charts/cilium"
  "build"
  "docs/node_modules"
  "terraform-provider-constellation/examples"
)

echo "The following scripts are excluded and won't be formatted with shfmt:"
for exclude in "${excludeDirs[@]}"; do
  for i in "${!scripts[@]}"; do
    if [[ ${scripts[i]} == "${BUILD_WORKSPACE_DIRECTORY}/${exclude}"* ]]; then
      echo "  ${scripts[i]}"
      unset 'scripts[i]'
    fi
  done
done

echo "Formatting the following scripts with shfmt:"
for script in "${scripts[@]}"; do
  echo "  ${script}"
done

${shfmt} -i 2 -s -w -sr "${scripts[@]}"
