From 80e7baffcac70a74ebb9f32c3b3ae5d6049f219d Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Tue, 27 May 2025 14:05:28 +0100 Subject: [PATCH] guard: rewrite resolveToDid to resolveIdentity returns an identity instead, this can be passed along as env vars to hooks. Signed-off-by: oppiliappan --- guard/guard.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/guard/guard.go b/guard/guard.go index 2e40ca9..f097067 100644 --- a/guard/guard.go +++ b/guard/guard.go @@ -10,6 +10,7 @@ import ( "os/exec" "strings" + "github.com/bluesky-social/indigo/atproto/identity" securejoin "github.com/cyphar/filepath-securejoin" "github.com/urfave/cli/v3" "tangled.sh/tangled.sh/core/appview/idresolver" @@ -113,7 +114,8 @@ func Run(ctx context.Context, cmd *cli.Command) error { } didOrHandle := components[0] - did := resolveToDid(ctx, l, didOrHandle) + identity := resolveIdentity(ctx, l, didOrHandle) + did := identity.DID.String() repoName := components[1] qualifiedRepoName, _ := securejoin.SecureJoin(did, repoName) @@ -173,7 +175,7 @@ func Run(ctx context.Context, cmd *cli.Command) error { return nil } -func resolveToDid(ctx context.Context, l *slog.Logger, didOrHandle string) string { +func resolveIdentity(ctx context.Context, l *slog.Logger, didOrHandle string) *identity.Identity { resolver := idresolver.DefaultResolver() ident, err := resolver.ResolveIdent(ctx, didOrHandle) if err != nil { @@ -181,9 +183,12 @@ func resolveToDid(ctx context.Context, l *slog.Logger, didOrHandle string) strin fmt.Fprintf(os.Stderr, "error resolving handle: %v\n", err) os.Exit(1) } - - // did:plc:foobarbaz/repo - return ident.DID.String() + if ident.Handle.IsInvalidHandle() { + l.Error("Error resolving handle", "invalid handle", didOrHandle) + fmt.Fprintf(os.Stderr, "error resolving handle: invalid handle\n") + os.Exit(1) + } + return ident } func isPushPermitted(l *slog.Logger, user, qualifiedRepoName, endpoint string) bool { -- 2.51.2