diff --git a/fluxscaffold.go b/fluxscaffold.go index 054f1fb..6ac9f31 100644 --- a/fluxscaffold.go +++ b/fluxscaffold.go @@ -27,12 +27,20 @@ func main() { actionGenerator := ResourceGenerator{&Action{ResourceOptions(resourceOptions)}} storeGenerator := ResourceGenerator{&Store{ResourceOptions(resourceOptions)}} - constantGenerator.Execute() - actionGenerator.Execute() - storeGenerator.Execute() + routines := 3; + race := make(chan bool) + + go constantGenerator.Execute(race) + go actionGenerator.Execute(race) + go storeGenerator.Execute(race) if (isApi) { + routines++ apiGenerator := ResourceGenerator{&Api{ResourceOptions(resourceOptions)}} - apiGenerator.Execute() + go apiGenerator.Execute(race) + } + + for i:= 0; i < routines; i++ { + <- race } } diff --git a/resource-generator.go b/resource-generator.go index f2fc7b1..fef74a9 100644 --- a/resource-generator.go +++ b/resource-generator.go @@ -2,29 +2,38 @@ package main import ( "fmt" - "os" ) type ResourceGenerator struct { Res ResourceInterface } -func (rg *ResourceGenerator) Execute() { - rg.createDirIfNotExists() +func (rg *ResourceGenerator) Execute(race chan<- bool) bool { + if _, err := rg.createDirIfNotExists(); err != nil { + fmt.Println("Unexpected error while checking ", rg.Res.GetDir(), err) + race <- true + return false + } + rg.createFileIfNotExists() + race <- true + return true } -func (rg *ResourceGenerator) createDirIfNotExists() { +func (rg *ResourceGenerator) createDirIfNotExists() (bool, error) { fullDirPath := GetFullDirPath(rg.Res.GetDir()) exists, err := PathExists(fullDirPath) if err != nil { - fmt.Println("Unexpected error while checking ", rg.Res.GetDir(), err) - os.Exit(1) + return false, err } if exists == false { CreateDir(fullDirPath) + + return true, nil + } else { + return false, nil } }