From 0ae12f2440a785815e248c066857fd624530f586 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Torbj=C3=B6rn=20L=C3=B6nnemark?= <tobbez@ryara.net>
Date: Tue, 17 Dec 2024 01:01:43 +0100
Subject: [PATCH] Automatically create repositories for new Fedora releases

---
 files/create_fedora_repos   | 14 ++++++++++++++
 manifests/yum_repository.pp | 17 +++++++++++++++++
 2 files changed, 31 insertions(+)
 create mode 100644 files/create_fedora_repos

diff --git a/files/create_fedora_repos b/files/create_fedora_repos
new file mode 100644
index 0000000..3ad51d0
--- /dev/null
+++ b/files/create_fedora_repos
@@ -0,0 +1,14 @@
+#!/bin/bash
+mapfile -t versions < <(curl https://fedoraproject.org/releases.json | jq -r '[ .[] | select(.arch == "x86_64" and .variant == "Workstation") | .version ] | unique | .[]')
+arches=(x86_64)
+
+for v in "${versions[@]}"; do
+  for arch in "${arches[@]}"; do
+    d="/srv/repos/fedora/${v}/${arch}"
+    if ! [ -d "$d" ]; then
+      mkdir -p "$d"
+    fi
+  done
+done
+
+/usr/local/bin/lysator_update_yum_repos_cron
diff --git a/manifests/yum_repository.pp b/manifests/yum_repository.pp
index 3bdbd46..0e78532 100644
--- a/manifests/yum_repository.pp
+++ b/manifests/yum_repository.pp
@@ -34,6 +34,23 @@ class repomaster::yum_repository
   # contains chronic, required by lysator_update_yum_repos_cron
   ensure_packages(['moreutils'])
 
+  # automatically create repos for new fedora versions as they are released
+  ensure_packages(['jq'])
+  file { '/usr/local/bin/create_fedora_repos':
+    ensure => file,
+    source => "puppet:///modules/repomaster/create_fedora_repos",
+    owner  => root,
+    group  => root,
+    mode   => '0555',
+  }
+  cron { 'create_fedora_repos':
+    command => '/usr/local/bin/create_fedora_repos',
+    user    => root,
+    weekday => 6,
+    hour    => 6,
+    minute  => 15,
+  }
+
   file { '/usr/local/bin/lysator_update_yum_repos_cron':
     ensure => file,
     source => "puppet:///modules/repomaster/lysator_update_yum_repos_cron",
-- 
GitLab