m/c/metroctl: add configurable credentials path

This lets metroctl users provide an alternative path to their cluster
credentials. This will be used by the upcoming metroctl test harness.

Change-Id: I49647e3b9d038c230b9678ebb73ba19da038a6d7
Reviewed-on: https://review.monogon.dev/c/monogon/+/833
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/cli/metroctl/credentials.go b/metropolis/cli/metroctl/credentials.go
index 5c23f50..a8885bb 100644
--- a/metropolis/cli/metroctl/credentials.go
+++ b/metropolis/cli/metroctl/credentials.go
@@ -8,8 +8,6 @@
 	"fmt"
 	"os"
 	"path/filepath"
-
-	"github.com/adrg/xdg"
 )
 
 var noCredentialsError = errors.New("owner certificate or key does not exist")
@@ -17,7 +15,7 @@
 // getCredentials returns Metropolis credentials (if any) from the current
 // metroctl config directory.
 func getCredentials() (cert *x509.Certificate, key ed25519.PrivateKey, err error) {
-	ownerPrivateKeyPEM, err := os.ReadFile(filepath.Join(xdg.ConfigHome, "metroctl/owner-key.pem"))
+	ownerPrivateKeyPEM, err := os.ReadFile(filepath.Join(flags.configPath, "owner-key.pem"))
 	if os.IsNotExist(err) {
 		return nil, nil, noCredentialsError
 	} else if err != nil {
@@ -34,7 +32,7 @@
 		return nil, nil, errors.New("owner-key.pem contains a non-Ed25519 key")
 	}
 	key = block.Bytes
-	ownerCertPEM, err := os.ReadFile(filepath.Join(xdg.ConfigHome, "metroctl/owner.pem"))
+	ownerCertPEM, err := os.ReadFile(filepath.Join(flags.configPath, "owner.pem"))
 	if os.IsNotExist(err) {
 		return nil, nil, noCredentialsError
 	} else if err != nil {