package main import ( "flag" "fmt" "os" "codeberg.org/marcig/marlib/v2/panik" "github.com/goccy/go-yaml" ) type Flags struct { Add string Init bool VCS string } type RawService struct { name string isCRUD bool dependencies []string } var ( home = os.Getenv("HOME") configFileDir = fmt.Sprintf("%v/.config/trixstar", home) configFilePath = fmt.Sprintf("%v/trixstar.yaml", configFileDir) ) func main() { var f Flags flag.StringVar(&f.Add, "add", undefineds.String, "specify the name of the service to add") flag.BoolVar(&f.Init, "init", false, "should init an empty config file") flag.StringVar(&f.VCS, "vcs", undefineds.String, "vcs url for the project example: tangled.org/marcig.com/trixstar") flag.Parse() names := []string{"tokens", "users", "posts", "actions", "messages", "instances"} if f.Init { err := os.MkdirAll(configFileDir, _GENERAL_DIR_PERM) panik.Err(err) f, err := os.Create(configFilePath) panik.Err(err) _, err = f.WriteString("version: 0\nservices:") panik.Err(err) return } var services []Service db, err := OpenDB(configFilePath, Parser{ Unmarshal: yaml.Unmarshal, Marshal: yaml.Marshal, }) panik.Err(err) defer func() { err = db.Close() panik.Err(err) }() for _, n := range names { svc := NewService(n, f.VCS, true, nil) services = append(services, svc) db.addService(svc) } err = db.Save() panik.Err(err) panik.Err(err) Generate(f.VCS, db.data.Services) }