diff --git a/pkg/client/client.go b/pkg/client/client.go index d1ddb438..12ac0805 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -44,11 +44,21 @@ func New(serverName string, opts ...Opt) (*client.Client, error) { ctx, err := GetContext(serverName) if err != nil { serverDir := path.Join(config.SERVERS_DIR, serverName) - if _, err := os.Stat(serverDir); err == nil { - return nil, errors.New(i18n.G("server missing context, run \"abra server add %s\"?", serverName)) + if _, err := os.Stat(serverDir); err != nil { + return nil, errors.New(i18n.G("server missing, run \"abra server add %s\"?", serverName)) } - return nil, errors.New(i18n.G("unknown server, run \"abra server add %s\"?", serverName)) + // When the docker context does not exist but the server folder is + // there, let's create a new docker context. + err = CreateContext(serverName) + if err != nil { + return nil, errors.New(i18n.G("server missing context, context creation failed: %s", err)) + } + + ctx, err = GetContext(serverName) + if err != nil { + return nil, errors.New(i18n.G("server missing context, run \"abra server add %s\"?", serverName)) + } } ctxEndpoint, err := contextPkg.GetContextEndpoint(ctx)