supabase-cli/internal/hostnames/create/create.go

48 lines
1.2 KiB
Go

package create
import (
"context"
"fmt"
"strings"
"github.com/go-errors/errors"
"github.com/spf13/afero"
"github.com/supabase/cli/internal/hostnames"
"github.com/supabase/cli/internal/utils"
"github.com/supabase/cli/pkg/api"
)
func Run(ctx context.Context, projectRef string, customHostname string, includeRawOutput bool, fsys afero.Fs) error {
// 1. Sanity checks.
hostname := strings.TrimSpace(customHostname)
{
if len(hostname) == 0 {
return errors.New("non-empty custom hostname expected")
}
// we verify that a CNAME is set as it simplifies the checks used for verifying ownership
err := hostnames.VerifyCNAME(ctx, projectRef, hostname)
if err != nil {
return err
}
}
// 2. create custom hostname
{
resp, err := utils.GetSupabase().V1UpdateHostnameConfigWithResponse(ctx, projectRef, api.V1UpdateHostnameConfigJSONRequestBody{
CustomHostname: hostname,
})
if err != nil {
return errors.Errorf("failed to create custom hostname: %w", err)
}
if resp.JSON201 == nil {
return errors.New("failed to create custom hostname config: " + string(resp.Body))
}
status, err := hostnames.TranslateStatus(resp.JSON201, includeRawOutput)
if err != nil {
return err
}
fmt.Println(status)
return nil
}
}