package main

import (
	"fmt"
	"path/filepath"

	"github.com/orchard9/rdev/internal/sdlc"
	"github.com/spf13/cobra"
)

var initProjectName string

var initCmd = &cobra.Command{
	Use:   "init",
	Short: "Initialize .sdlc/ directory structure",
	RunE: func(_ *cobra.Command, _ []string) error {
		root := mustResolveRoot()

		name := initProjectName
		if name == "" {
			name = filepath.Base(root)
		}

		if err := sdlc.Init(root, name); err != nil {
			return err
		}

		if jsonOutput {
			return printJSON(map[string]string{
				"status":  "initialized",
				"root":    root,
				"project": name,
			})
		}

		fmt.Println("Initialized .sdlc/ structure")
		fmt.Printf("  Root:    %s\n", root)
		fmt.Printf("  Project: %s\n", name)
		fmt.Println()
		fmt.Println("Created directories:")
		for _, dir := range sdlc.SubDirs() {
			fmt.Printf("  .sdlc/%s/\n", dir)
		}
		fmt.Println()
		fmt.Println("Next: sdlc feature create <slug> --title \"Feature Name\"")
		return nil
	},
}

func init() {
	initCmd.Flags().StringVar(&initProjectName, "name", "", "project name (default: directory name)")
	rootCmd.AddCommand(initCmd)
}
