#!/bin/bash

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)

. config/options "${1}"

clean_package() {
  build_msg "CLR_CLEAN" "CLEAN" "${1}" "indent"

  if [ "${CLEAN_SOURCES}" = "true" ]; then
    rm -rf "${SOURCES}/${1}"
    return
  fi

  # Use a wildcard here to remove all versions of the package
  for i in "${BUILD}/build/${1}-"* \
    "${BUILD}/install_pkg/${1}-"* \
    "${BUILD}/install_init/${1}-"*; do
    if [ -d "${i}" -a -f "${i}/.archr-unpack" ]; then
      . "${i}/.archr-unpack"
      if [ "${STAMP_PKG_NAME}" = "${1}" ]; then
        build_msg "CLR_WARNING" "*" "$(print_color "CLR_WARNING_DIM" "Removing ${i} ...")"
        rm -rf "${i}"
      fi
    elif [ -d "${i}" -a -f "${i}/.archr-package" ]; then
      # force clean if no stamp found (previous unpack failed)
      . "${i}/.archr-package"
      if [ "${INFO_PKG_NAME}" = "${1}" ]; then
        build_msg "CLR_WARNING" "*" "$(print_color "CLR_WARNING_DIM" "Removing ${i} ...")"
        rm -rf "${i}"
      fi
    fi
  done

  for i in "${BUILD}/qa_checks/${1}-"*; do
    build_msg "CLR_WARNING" "*" "$(print_color "CLR_WARNING_DIM" "Removing ${i} ...")"
    rm -rf "${i}"
  done

  rm -f "${STAMPS}/${1}/build_"*
}

if [ "${1}" = "--all" -a -n "${2}" ]; then
  for build_dir in $(ls -1d "${BUILD_ROOT}/${BUILD_BASE}."*); do
    load_build_config "${build_dir}" && "${SCRIPTS}/clean" "${2}"
  done
elif [ -n "${1}" ]; then
  clean_package "${1}"
fi
