From 527b83e6004deb0f5e780eb9ecd76c29be327504 Mon Sep 17 00:00:00 2001
From: jo <ljonas@riseup.net>
Date: Tue, 21 Jan 2025 16:58:54 +0000
Subject: [PATCH] add MustGenerateID function

---
 hcloud/exp/kit/randutil/id.go      | 18 +++++++++++++-----
 hcloud/exp/kit/randutil/id_test.go |  4 ++--
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/hcloud/exp/kit/randutil/id.go b/hcloud/exp/kit/randutil/id.go
index d44e903b..57043b99 100644
--- a/hcloud/exp/kit/randutil/id.go
+++ b/hcloud/exp/kit/randutil/id.go
@@ -8,13 +8,21 @@ import (
 
 // GenerateID returns a hex encoded random string with a len of 8 chars similar to
 // "2873fce7".
-//
-// This function panics if [rand.Read] returns an error.
-func GenerateID() string {
+func GenerateID() (string, error) {
 	b := make([]byte, 4)
 	_, err := rand.Read(b)
 	if err != nil {
-		panic(fmt.Errorf("failed to generate random string: %w", err))
+		return "", fmt.Errorf("failed to generate random string: %w", err)
 	}
-	return hex.EncodeToString(b)
+	return hex.EncodeToString(b), nil
+}
+
+// MustGenerateID returns the result of [GenerateID], and panics if [rand.Read] returns
+// an error.
+func MustGenerateID() string {
+	result, err := GenerateID()
+	if err != nil {
+		panic(err)
+	}
+	return result
 }
diff --git a/hcloud/exp/kit/randutil/id_test.go b/hcloud/exp/kit/randutil/id_test.go
index 58116f30..4e69e1ef 100644
--- a/hcloud/exp/kit/randutil/id_test.go
+++ b/hcloud/exp/kit/randutil/id_test.go
@@ -7,8 +7,8 @@ import (
 )
 
 func TestGenerateRandomID(t *testing.T) {
-	found1 := GenerateID()
-	found2 := GenerateID()
+	found1 := MustGenerateID()
+	found2 := MustGenerateID()
 
 	assert.Len(t, found1, 8)
 	assert.Len(t, found2, 8)