package main

import (
	"flag"
	"fmt"
	"os"
	"path/filepath"

	"github.com/nexuscrm/kernel/internal/permissionstatewritergen"
)

func main() {
	root := flag.String("root", "", "workspace repository root")
	output := flag.String("out", "", "generated Go output path")
	flag.Parse()
	if *root == "" || *output == "" {
		fmt.Fprintln(os.Stderr, "root and out are required")
		os.Exit(2)
	}
	generated, err := permissionstatewritergen.Generate(*root)
	if err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	}
	path := *output
	if !filepath.IsAbs(path) {
		path = filepath.Clean(path)
	}
	if err := os.WriteFile(path, generated, 0o644); err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	}
}
