1packagecmd 2 3import( 4"embed" 5"fmt" 6"io/fs" 7"os" 8 9"github.com/leaanthony/gosod"10"github.com/spf13/cobra"11)1213//go:embed templates/workspace/*14varembedFSembed.FS1516funcNewCmdInit()*cobra.Command{17cmd:=&cobra.Command{18Use:"init",19Short:"Initialize a new workspace",20Args:cobra.NoArgs,21RunE:func(cmd*cobra.Command,args[]string)error{22dir:=k.String("dir")23ifdir==""{24returnfmt.Errorf("dir is required")25}2627domain:=k.String("domain")28ifdomain==""{29returnfmt.Errorf("domain is required")30}3132subFS,err:=fs.Sub(embedFS,"templates/workspace")33iferr!=nil{34returnfmt.Errorf("failed to read workspace embed: %w",err)35}3637if_,err:=os.Stat(dir);err==nil{38entries,err:=os.ReadDir(dir)39iferr!=nil{40returnfmt.Errorf("failed to read directory %s: %w",dir,err)41}4243iflen(entries)>0{44returnfmt.Errorf("directory %s already exists and is not empty",dir)45}46}4748templateFS:=gosod.New(subFS)49iferr:=templateFS.Extract(dir,map[string]any{50"Domain":domain,51});err!=nil{52returnfmt.Errorf("failed to extract workspace: %w",err)53}5455fmt.Fprintf(cmd.ErrOrStderr(),"Workspace initialized at %s\n",dir)56returnnil57},58}5960returncmd61}