package cmd import ( "fmt" "log" "os" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/insertr/insertr/internal/content" ) var enhanceCmd = &cobra.Command{ Use: "enhance [input-dir]", Short: "Enhance HTML files by injecting content from database", Long: `Enhance processes HTML files and injects latest content from the database while adding editing capabilities. This is the core build-time enhancement process that transforms static HTML into an editable CMS.`, Args: cobra.ExactArgs(1), Run: runEnhance, } var ( outputDir string mockContent bool ) func init() { enhanceCmd.Flags().StringVarP(&outputDir, "output", "o", "./dist", "Output directory for enhanced files") enhanceCmd.Flags().BoolVar(&mockContent, "mock", true, "Use mock content for development") // Bind flags to viper viper.BindPFlag("build.output", enhanceCmd.Flags().Lookup("output")) viper.BindPFlag("mock_content", enhanceCmd.Flags().Lookup("mock")) } func runEnhance(cmd *cobra.Command, args []string) { inputDir := args[0] // Validate input directory if _, err := os.Stat(inputDir); os.IsNotExist(err) { log.Fatalf("Input directory does not exist: %s", inputDir) } // Get configuration values dbPath := viper.GetString("database.path") apiURL := viper.GetString("api.url") apiKey := viper.GetString("api.key") siteID := viper.GetString("site_id") mockContent := viper.GetBool("mock_content") // Create content client var client content.ContentClient if mockContent || (apiURL == "" && dbPath == "") { fmt.Printf("๐Ÿงช Using mock content for development\n") client = content.NewMockClient() } else if apiURL != "" { fmt.Printf("๐ŸŒ Using content API: %s\n", apiURL) client = content.NewHTTPClient(apiURL, apiKey) } else { fmt.Printf("๐Ÿ—„๏ธ Using database: %s\n", dbPath) // TODO: Implement database client for direct DB access fmt.Printf("โš ๏ธ Direct database access not yet implemented, using mock content\n") client = content.NewMockClient() } // Create enhancer enhancer := content.NewEnhancer(client, siteID) fmt.Printf("๐Ÿš€ Starting enhancement process...\n") fmt.Printf("๐Ÿ“ Input: %s\n", inputDir) fmt.Printf("๐Ÿ“ Output: %s\n", outputDir) fmt.Printf("๐Ÿท๏ธ Site ID: %s\n\n", siteID) // Enhance directory if err := enhancer.EnhanceDirectory(inputDir, outputDir); err != nil { log.Fatalf("Enhancement failed: %v", err) } fmt.Printf("\nโœ… Enhancement complete! Enhanced files available in: %s\n", outputDir) }