[%
# vi: ft=tt2

# Sets the Debian release information for the node calling this function.
#
# This sets the global variables:
#   debian.codename
#   debian.version
-%]
[% PERL -%]
  my $version_file = '/etc/debian_version';
  my $debian_codename;
  my $debian_version;
  my $debian_version_major;

  open my $hh, '<', $version_file or die "Error opening $version_file";
  $debian_version = <$hh>;
  close $hh;
  chomp $debian_version;
  die "Fatal error retrieving Debian release version from $version_file"
    unless length $debian_version;

  my %versions = (
    12 => 'bookworm',
    13 => 'trixie',
  );
  my %codenames = map { $versions{$_} => $_ } keys %versions;

  if ($debian_version =~ m/^([0-9]+)\.[0-9]+/) {
    $debian_version_major = $1;
    $debian_codename = $versions{$debian_version_major};
    die "Error: unsupported Debian release $debian_version"
      unless defined $debian_codename;
  } elsif ($debian_version =~ m{^([[:alnum:]]+)/sid}) {
    $debian_codename = $1;
    $debian_version_major = $codenames{$debian_codename};
    die "Error: unsupported Debian codename $debian_codename"
      unless defined $debian_version_major;
  } else {
    die "Fatal error retrieving Debian release codename [$debian_version]";
  }

  $stash->update({
    debian => {
      version => $debian_version_major,
      codename => $debian_codename,
    }
  });
[% END -%]
