func cpFile(src, dst string) error { s, err := os.Open(src) if err != nil { log.Warnln("sensor: monitor - cp - error opening source file =>", src) return err } defer s.Close() dstDir := utils.FileDir(dst) err = os.MkdirAll(dstDir, 0777) if err != nil { log.Warnln("sensor: monitor - dir error =>", err) } d, err := os.Create(dst) if err != nil { log.Warnln("sensor: monitor - cp - error opening dst file =>", dst) return err } srcFileInfo, err := s.Stat() if err == nil { d.Chmod(srcFileInfo.Mode()) } if _, err := io.Copy(d, s); err != nil { d.Close() return err } return d.Close() }
func (p *artifactStore) saveArtifacts() { for fileName := range p.fileMap { filePath := fmt.Sprintf("%s/files%s", p.storeLocation, fileName) log.Debugln("saveArtifacts - saving file data =>", filePath) err := cpFile(fileName, filePath) if err != nil { log.Warnln("saveArtifacts - error saving file =>", err) } } for linkName, linkProps := range p.linkMap { linkPath := fmt.Sprintf("%s/files%s", p.storeLocation, linkName) linkDir := utils.FileDir(linkPath) err := os.MkdirAll(linkDir, 0777) if err != nil { log.Warnln("saveArtifacts - dir error =>", err) continue } err = os.Symlink(linkProps.LinkRef, linkPath) if err != nil { log.Warnln("saveArtifacts - symlink create error ==>", err) } } }