diff --git a/cmd/quickstart.go b/cmd/quickstart.go index fbec8369..260e9b93 100644 --- a/cmd/quickstart.go +++ b/cmd/quickstart.go @@ -38,10 +38,11 @@ import ( ) type QuickstartFlags struct { - SkipCompile bool `json:"skip-compile"` - Schema string `json:"schema"` - OutDir string `json:"out-dir"` - TargetType string `json:"target"` + SkipCompile bool `json:"skip-compile"` + Schema string `json:"schema"` + OutDir string `json:"out-dir"` + TargetType string `json:"target"` + IsReactQuery bool `json:"is-react-query"` // If the quickstart should be based on a pre-existing template (hosted in the Speakeasy Registry) From string `json:"from"` @@ -56,6 +57,17 @@ var quickstartCmd = &model.ExecutableCommand[QuickstartFlags]{ Long: `Guided setup to help you create a new SDK in minutes.`, Run: quickstartExec, RequiresAuth: true, + NonInteractiveSubcommands: []model.Command{ + &model.ExecutableCommand[QuickstartFlags]{ + Usage: "react-query", + Short: "Quickstart a TypeScript SDK with React Query enabled", + Run: func(ctx context.Context, flags QuickstartFlags) error { + flags.TargetType = "typescript" + flags.IsReactQuery = true + return quickstartExec(ctx, flags) + }, + }, + }, Flags: []flag.Flag{ flag.BooleanFlag{ Name: "skip-compile", @@ -111,6 +123,7 @@ func quickstartExec(ctx context.Context, flags QuickstartFlags) error { Targets: make(map[string]workflow.Target), }, LanguageConfigs: make(map[string]*sdkGenConfig.Configuration), + IsReactQuery: flags.IsReactQuery, } if flags.Schema != "" { diff --git a/prompts/configs.go b/prompts/configs.go index 98cc49e3..d8fb5f95 100644 --- a/prompts/configs.go +++ b/prompts/configs.go @@ -163,6 +163,7 @@ func PromptForTargetConfig(targetName string, wf *workflow.Workflow, target *wor if isQuickstart { setDevContainerDefaults(output, wf, target) setEnvVarPrefixDefaults(output, target, sdkClassName) + setReactQueryDefaults(output, target, quickstart.IsReactQuery) } return output, nil @@ -185,6 +186,14 @@ func setDevContainerDefaults(output *config.Configuration, wf *workflow.Workflow } } +func setReactQueryDefaults(output *config.Configuration, target *workflow.Target, isReactQuery bool) { + if target.Target == "typescript" && isReactQuery { + if cfg, ok := output.Languages[target.Target]; ok && cfg.Cfg != nil { + cfg.Cfg["enableReactQuery"] = true + } + } +} + func setEnvVarPrefixDefaults(output *config.Configuration, target *workflow.Target, sdkClassName string) { if target.Target == "go" || target.Target == "typescript" || target.Target == "python" { if cfg, ok := output.Languages[target.Target]; ok && cfg.Cfg != nil { @@ -200,10 +209,17 @@ func configBaseForm(ctx context.Context, quickstart *Quickstart) (*QuickstartSta return nil, err } + // Set defaults for new SDKs + if quickstart != nil { + setDevContainerDefaults(output, quickstart.WorkflowFile, &target) + setEnvVarPrefixDefaults(output, &target, output.Generation.SDKClassName) + setReactQueryDefaults(output, &target, quickstart.IsReactQuery) + } + quickstart.LanguageConfigs[key] = output } - var nextState QuickstartState = Complete + nextState := Complete return &nextState, nil } diff --git a/prompts/statemappings.go b/prompts/statemappings.go index df593488..b0d6cc48 100644 --- a/prompts/statemappings.go +++ b/prompts/statemappings.go @@ -20,6 +20,7 @@ type Quickstart struct { IsUsingSampleOpenAPISpec bool IsUsingTemplate bool SDKName string + IsReactQuery bool } type Defaults struct {