func (ws *WorkServer) SaveResult(w *Hyades.Work, res *Hyades.WorkResult) error { //Get Job work was part of, Get person Job belonged to and then save under //Person.JobFolder\Job.JobID\Work.partID\ //Save 3 parts //Env.zip -- iff len(Env) > 0 //StdOut.txt //ErrOut.txtlogFile folder := filepath.Join(ws.dataPath, w.PartOf().JobFolder, w.PartOf().Name+fmt.Sprint(w.PartOf().Id), strconv.Itoa(w.Index())) err := os.MkdirAll(folder, os.ModeDir|os.ModePerm) if err != nil { ws.Log.Println(err) return err } if res.EnvLength > 0 { envfile, err := os.Create(filepath.Join(folder, "Env.zip")) if err != nil { ws.Log.Println(err) } defer envfile.Close() _, err = io.CopyN(envfile, res.GetEnv(), int64(res.EnvLength)) if err != nil { ws.Log.Println(err) log.Println("SaveResult", err) return err } } stdout, err := os.Create(filepath.Join(folder, "StdOut.txt")) if err != nil { ws.Log.Println(err) return err } defer stdout.Close() stdout.Write(res.StdOutStream) errout, err := os.Create(filepath.Join(folder, "ErrOut.txt")) if err != nil { ws.Log.Println(err) } defer errout.Close() errout.Write(res.ErrOutStream) return nil }