#!/bin/bash

while [[ $1 ]]; do
  case "$1" in
    '-d'|'--directory')
      metrics_directory="$2"
      ;;
    '-r'|'--retention-days')
      retention_days="$2"
  esac
  shift 2
done

# Arguments and defaults.

metrics_directory="${metrics_directory:-/opt/puppetlabs/puppet-metrics-collector}"
retention_days="${retention_days:-30}"
timestamp="$(date +%Y.%m.%d.%H.%M.%S)"
output_file="puppet-metrics-${timestamp}.tar.gz"

find "$metrics_directory" -type f -mtime -"$retention_days" -and \( -name "*json" -or -name "*gz" \) | \
  tar --create --gzip --file "$output_file" --files-from - --transform "s,^${metrics_directory#/},puppet-metrics-${timestamp}," || {
    echo "Error: could not create metrics archive: $output_file from $metrics_directory"
    exit 1
}

echo "Created metrics archive: $output_file"
