Files
insertr/insertr-cli/cmd/enhance.go
Joakim 4407f84bbc Implement complete content injection and enhancement pipeline
- Add content API client with HTTP and mock implementations
- Implement HTML content injection with database content replacement
- Create enhance command for build-time content injection
- Integrate enhancement with servedev for live development workflow
- Add editor asset injection and serving (/_insertr/ endpoints)
- Support on-the-fly HTML enhancement during development
- Enable complete 'Tailwind of CMS' workflow: parse → inject → serve
2025-09-03 12:35:54 +02:00

77 lines
2.2 KiB
Go

package cmd
import (
"fmt"
"log"
"os"
"github.com/spf13/cobra"
"github.com/insertr/cli/pkg/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
apiURL string
apiKey string
siteID string
mockContent bool
)
func init() {
rootCmd.AddCommand(enhanceCmd)
enhanceCmd.Flags().StringVarP(&outputDir, "output", "o", "./dist", "Output directory for enhanced files")
enhanceCmd.Flags().StringVar(&apiURL, "api-url", "", "Content API URL")
enhanceCmd.Flags().StringVar(&apiKey, "api-key", "", "API key for authentication")
enhanceCmd.Flags().StringVarP(&siteID, "site-id", "s", "demo", "Site ID for content lookup")
enhanceCmd.Flags().BoolVar(&mockContent, "mock", true, "Use mock content for development")
}
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)
}
// Create content client
var client content.ContentClient
if mockContent {
fmt.Printf("🧪 Using mock content for development\n")
client = content.NewMockClient()
} else {
if apiURL == "" {
log.Fatal("API URL required when not using mock content (use --api-url)")
}
fmt.Printf("🌐 Using content API: %s\n", apiURL)
client = content.NewHTTPClient(apiURL, apiKey)
}
// 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)
}