From 83974e10ddb06c64a31438265d9a7f8a1207df8d Mon Sep 17 00:00:00 2001 From: sawka Date: Wed, 14 Sep 2022 13:01:52 -0700 Subject: [PATCH] resolve a remote by id or partial id --- pkg/cmdrunner/resolver.go | 2 +- pkg/remote/remote.go | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/pkg/cmdrunner/resolver.go b/pkg/cmdrunner/resolver.go index cbd95abe..f5756351 100644 --- a/pkg/cmdrunner/resolver.go +++ b/pkg/cmdrunner/resolver.go @@ -126,7 +126,7 @@ func resolveRemoteArg(remoteArg string) (*sstore.RemotePtrType, error) { if rrUser != "" { return nil, fmt.Errorf("remoteusers not supported") } - msh := remote.GetRemoteByName(rrRemote) + msh := remote.GetRemoteByArg(rrRemote) if msh == nil { return nil, nil } diff --git a/pkg/remote/remote.go b/pkg/remote/remote.go index 9a683e3c..2527dffd 100644 --- a/pkg/remote/remote.go +++ b/pkg/remote/remote.go @@ -10,6 +10,7 @@ import ( "os" "os/exec" "path" + "regexp" "strconv" "strings" "sync" @@ -220,12 +221,22 @@ func ArchiveRemote(ctx context.Context, remoteId string) error { return nil } -func GetRemoteByName(name string) *MShellProc { +var partialUUIDRe = regexp.MustCompile("^[0-9a-f]{8}$") + +func isPartialUUID(s string) bool { + return partialUUIDRe.MatchString(s) +} + +func GetRemoteByArg(arg string) *MShellProc { GlobalStore.Lock.Lock() defer GlobalStore.Lock.Unlock() + isPuid := isPartialUUID(arg) for _, msh := range GlobalStore.Map { rcopy := msh.GetRemoteCopy() - if rcopy.RemoteAlias == name || rcopy.RemoteCanonicalName == name { + if rcopy.RemoteAlias == arg || rcopy.RemoteCanonicalName == arg || rcopy.RemoteId == arg { + return msh + } + if isPuid && strings.HasPrefix(rcopy.RemoteId, arg) { return msh } }