Public Access
feat: basalt 0.0.1
This commit is contained in:
22 files changed
+1364
-1
No files matched your search
@@ -0,0 +1,83 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/manifoldco/promptui"
|
||||
"github.com/spf13/cobra"
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
var handlerTypes = map[string]string{
|
||||
"HTTP (REST)": "http",
|
||||
"gRPC": "grpc",
|
||||
}
|
||||
|
||||
func init() {
|
||||
newCmd.AddCommand(handlerCmd)
|
||||
}
|
||||
|
||||
var handlerCmd = &cobra.Command{
|
||||
Use: "handler",
|
||||
Short: "Create a new handler",
|
||||
Long: `Create a new handler for your Keystone project.`,
|
||||
Run: genHandler,
|
||||
}
|
||||
|
||||
type HandlerTemplateData struct {
|
||||
ModuleName string
|
||||
Name string
|
||||
}
|
||||
|
||||
func genHandler(cmd *cobra.Command, args []string) {
|
||||
namePrompt := promptui.Prompt{
|
||||
Label: "Handler Name",
|
||||
}
|
||||
|
||||
handlerNameInput, err := namePrompt.Run()
|
||||
if err != nil {
|
||||
fmt.Printf("Prompt failed %v\n", err)
|
||||
return
|
||||
}
|
||||
handlerTypeInput := promptui.Select{
|
||||
Label: "Select API Type",
|
||||
Items: []string{"HTTP (REST)", "gRPC"},
|
||||
}
|
||||
|
||||
_, result, err := handlerTypeInput.Run()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Prompt failed %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
moduleName, err := getModuleName()
|
||||
if err != nil {
|
||||
fmt.Printf("❌ Error retrieving module name: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
mappedHandlerType := handlerTypes[result]
|
||||
handlerName := strings.ToLower(handlerNameInput)
|
||||
cases := cases.Title(language.English)
|
||||
|
||||
fmt.Printf("🚀 Creating handler '%s' as %s...\n", handlerNameInput, result)
|
||||
|
||||
if err := genFile(
|
||||
fmt.Sprintf("templates/handler_%s.go.tpl", mappedHandlerType),
|
||||
handlerName,
|
||||
filepath.Join("internal/handlers", mappedHandlerType, fmt.Sprintf("%s.go", handlerName)),
|
||||
HandlerTemplateData{
|
||||
ModuleName: moduleName,
|
||||
Name: cases.String(handlerNameInput),
|
||||
},
|
||||
); err != nil {
|
||||
fmt.Printf("❌ Error creating handler: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("✅ Handler '%s' created successfully at %s\n", handlerNameInput, filepath.Join("internal/handlers", mappedHandlerType, fmt.Sprintf("%s.go", handlerName)))
|
||||
}
|
||||
Reference in new issue
Block a user