func Slice(nameTag *data.NameTag, printer *data.Printer, config *config.Config) error { if nameTag.Name == "" { return errors.New("Name tag has no name set") } var configFile string if printer.ConfigFile == "" { configFile = config.DefaultConfig } else { configFile = printer.ConfigFile } slic3rArgs := fmt.Sprintf(" %s/%s.stl --output %s/%s.gcode --load %s", config.StlDirectory, nameTag.Name, config.GcodeDirectory, nameTag.Name, configFile) fmt.Println("Slicing STL...") wg := new(sync.WaitGroup) wg.Add(1) go exe_cmd("slic3r"+slic3rArgs, wg) wg.Wait() gcode := config.GcodeDirectory + "/" + nameTag.Name + ".gcode" if _, err := os.Stat(gcode); os.IsNotExist(err) { return errors.New("An Error occured while slicing STL") } nameTag.Gcode = nameTag.Name + ".gcode" fmt.Println("Done slicing STL") return nil }