#!/bin/sh -euf

editions_dir="/usr/share/alterator/editions"
backends_dir="/etc/alterator/backends"
prefix="autogenerated-edition-"
exec="/usr/lib/alterator/backends/edition"

[ -d "$backends_dir" ] || exit 0
[ -w "$backends_dir" ] || exit 0

find "$backends_dir" -name "${prefix}*.backend" -type f -delete

[ -d "$editions_dir" ] || exit 0

find "$editions_dir" -name '*.edition' | while read -r file; do
	filename=$(basename "$file")
	edition_name="${filename%.*}"
	backend_name="$(echo "$edition_name" | tr "-" "_")"
	backend_path="$backends_dir/$prefix$backend_name.backend"

	cat >"$backend_path" <<EOF
type = "Backend"
module = "executor"
name = "$backend_name"
interface = "edition1"

[methods.Info]
execute = "$exec info $edition_name"
stdout_bytes = true
exit_status  = true

[methods.Description]
execute = "$exec description $edition_name"
stdout_bytes = true
exit_status  = true
environment.LC_ALL = {}

[methods.License]
execute = "$exec license $edition_name"
stdout_bytes = true
exit_status  = true
environment.LC_ALL = {}

[methods.ReleaseNotes]
execute = "$exec release-notes $edition_name"
stdout_bytes = true
exit_status  = true
environment.LC_ALL = {}

[methods.FinalNotes]
execute = "$exec final-notes $edition_name"
stdout_bytes = true
exit_status  = true
environment.LC_ALL = {}
EOF

done
