1package cli
2
3import (
4 "context"
5 "fmt"
6 "io"
7
8 "github.com/spf13/cobra"
9)
10
11func newAppsOperationsCmd() *cobra.Command {
12 cmd := &cobra.Command{Use: "operations", Short: "Inspect app operation journals"}
13 cmd.AddCommand(newAppsOperationsShowCmd(), newAppsOperationsWatchCmd())
14 return cmd
15}
16
17func newAppsOperationsShowCmd() *cobra.Command {
18 var key string
19 var jsonOut bool
20 cmd := &cobra.Command{
21 Use: "show APP",
22 Short: "Show an app operation by request key",
23 Args: cobra.ExactArgs(1),
24 RunE: func(cmd *cobra.Command, args []string) error {
25 handle, err := resolveAppPlane()
26 if err != nil {
27 return err
28 }
29 defer handle.close()
30 return runAppsOperationsShow(cmd.Context(), handle.plane, cmd.OutOrStdout(), args[0], key, jsonOut)
31 },
32 }
33 cmd.Flags().StringVar(&key, "key", "", "Request key (required)")
34 cmd.Flags().BoolVar(&jsonOut, "json", false, "Output as JSON")
35 _ = cmd.MarkFlagRequired("key")
36 return cmd
37}
38
39func runAppsOperationsShow(ctx context.Context, plane ControlPlane, out io.Writer, app, key string, jsonOut bool) error {
40 if app == "" || key == "" {
41 return fmt.Errorf("APP and --key are required")
42 }
43 operation, err := plane.OperationByKey(ctx, app, key)
44 if err != nil {
45 return fmt.Errorf("lookup operation for app %s: %w", app, err)
46 }
47 if jsonOut {
48 return writeJSON(out, operation)
49 }
50 return renderAppDeployResponse(out, operation)
51}