From 4b2bd1036b4952a35a526202c8965cd3b32162ad Mon Sep 17 00:00:00 2001
From: Miloslav Trmač <mitr@redhat.com>
Date: Wed, 24 Aug 2022 22:56:14 +0200
Subject: Make the output of (podman image trust show) deterministic
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Sort map keys instead of iterating in the Go-imposed random order.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
---
 pkg/trust/trust.go | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

(limited to 'pkg/trust')

diff --git a/pkg/trust/trust.go b/pkg/trust/trust.go
index 606e4ed93..e93b4cd9d 100644
--- a/pkg/trust/trust.go
+++ b/pkg/trust/trust.go
@@ -2,6 +2,7 @@ package trust
 
 import (
 	"fmt"
+	"sort"
 	"strings"
 )
 
@@ -46,12 +47,26 @@ func getPolicyShowOutput(policyContentStruct policyContent, systemRegistriesDirP
 		}
 		output = append(output, &defaultPolicyStruct)
 	}
-	for transport, transval := range policyContentStruct.Transports {
+	// FIXME: This should use x/exp/maps.Keys after we update to Go 1.18.
+	transports := []string{}
+	for t := range policyContentStruct.Transports {
+		transports = append(transports, t)
+	}
+	sort.Strings(transports)
+	for _, transport := range transports {
+		transval := policyContentStruct.Transports[transport]
 		if transport == "docker" {
 			transport = "repository"
 		}
 
-		for repo, repoval := range transval {
+		// FIXME: This should use x/exp/maps.Keys after we update to Go 1.18.
+		scopes := []string{}
+		for s := range transval {
+			scopes = append(scopes, s)
+		}
+		sort.Strings(scopes)
+		for _, repo := range scopes {
+			repoval := transval[repo]
 			tempTrustShowOutput := Policy{
 				Name:      repo,
 				RepoName:  repo,
-- 
cgit v1.2.3-54-g00ecf