1package cmd23import (4 "context"5 "fmt"6 "strings"78 "github.com/FelineStateMachine/puzzletea/export/pack"9 "github.com/spf13/cobra"10)1112var exportSpecPath string1314var exportCmd = &cobra.Command{15 Use: "export --spec <path>",16 Short: "Generate a printable puzzle pack from a JSON spec",17 Args: cobra.NoArgs,18 RunE: func(cmd *cobra.Command, _ []string) error {19 if strings.TrimSpace(exportSpecPath) == "" {20 return fmt.Errorf("--spec is required")21 }2223 spec, err := packexport.LoadSpecFile(exportSpecPath)24 if err != nil {25 return err26 }2728 result, err := packexport.Run(context.Background(), spec)29 if err != nil {30 return err31 }3233 if _, err := fmt.Fprintf(cmd.OutOrStdout(), "wrote %s", result.PDFOutputPath); err != nil {34 return err35 }36 if result.JSONLOutputPath != "" {37 if _, err := fmt.Fprintf(cmd.OutOrStdout(), " and %s", result.JSONLOutputPath); err != nil {38 return err39 }40 }41 _, err = fmt.Fprintln(cmd.OutOrStdout())42 return err43 },44}4546func init() {47 exportCmd.Flags().StringVar(&exportSpecPath, "spec", "", "path to a JSON export spec")48}