1.5 KiB
1.5 KiB
Dev Environment Requirements
- Go 1.21+
- GNU Make (for build automation)
Patterns
Instance-scoped Commands
CLI commands that operate on a specific Wild Cloud instance should follow this pattern:
// In cmd/utility.go
var dashboardTokenCmd = &cobra.Command{
Use: "token",
Short: "Get dashboard token",
RunE: func(cmd *cobra.Command, args []string) error {
// 1. Get instance from CLI context
instanceName, err := getInstanceName()
if err != nil {
return err
}
// 2. Call instance-scoped API endpoint with instance in URL
resp, err := apiClient.Get(fmt.Sprintf("/api/v1/instances/%s/utilities/dashboard/token", instanceName))
if err != nil {
return err
}
// 3. Process response
data := resp.GetMap("data")
if data == nil {
return fmt.Errorf("no data in response")
}
token, ok := data["token"].(string)
if !ok {
return fmt.Errorf("no token in response")
}
// 4. Display result
fmt.Println(token)
return nil
},
}
Key Principles
- Get instance from context: Use
getInstanceName()to get the current instance from CLI context - Instance in URL path: Include the instance name in the API endpoint URL path
- Stateless API calls: Don't rely on server-side session state - pass instance explicitly
- Handle errors gracefully: Return clear error messages if instance is not set or API call fails