feat(actions): watch dir rename file (#515)

This commit is contained in:
ze0s 2022-10-28 00:29:34 +02:00 committed by GitHub
parent 716784e7a6
commit 547b01a50d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -154,6 +154,10 @@ func (s *service) watchFolder(action domain.Action, release domain.Release) erro
m := domain.NewMacro(release) m := domain.NewMacro(release)
// parse and replace values in argument string before continuing // parse and replace values in argument string before continuing
// /mnt/watch/{{.Indexer}}
// /mnt/watch/mock
// /mnt/watch/{{.Indexer}}-{{.TorrentName}}.torrent
// /mnt/watch/mock-Torrent.Name-GROUP.torrent
watchFolderArgs, err := m.Parse(action.WatchFolder) watchFolderArgs, err := m.Parse(action.WatchFolder)
if err != nil { if err != nil {
return errors.Wrap(err, "could not parse watch folder macro: %v", action.WatchFolder) return errors.Wrap(err, "could not parse watch folder macro: %v", action.WatchFolder)
@ -168,27 +172,37 @@ func (s *service) watchFolder(action domain.Action, release domain.Release) erro
} }
defer original.Close() defer original.Close()
// default dir to watch folder
dir := watchFolderArgs
newFileName := watchFolderArgs
// if watchFolderArgs does not contain .torrent, create
if !strings.Contains(watchFolderArgs, ".torrent") {
_, tmpFileName := filepath.Split(release.TorrentTmpFile) _, tmpFileName := filepath.Split(release.TorrentTmpFile)
fullFileName := filepath.Join(watchFolderArgs, tmpFileName+".torrent")
newFileName = filepath.Join(watchFolderArgs, tmpFileName+".torrent")
} else {
dir, _ = filepath.Split(watchFolderArgs)
}
// Create folder // Create folder
if err = os.MkdirAll(watchFolderArgs, os.ModePerm); err != nil { if err = os.MkdirAll(dir, os.ModePerm); err != nil {
return errors.Wrap(err, "could not create new folders %v", fullFileName) return errors.Wrap(err, "could not create new folders %v", dir)
} }
// Create new file // Create new file
newFile, err := os.Create(fullFileName) newFile, err := os.Create(newFileName)
if err != nil { if err != nil {
return errors.Wrap(err, "could not create new file %v", fullFileName) return errors.Wrap(err, "could not create new file %v", newFileName)
} }
defer newFile.Close() defer newFile.Close()
// Copy file // Copy file
if _, err := io.Copy(newFile, original); err != nil { if _, err := io.Copy(newFile, original); err != nil {
return errors.Wrap(err, "could not copy file %v to watch folder", fullFileName) return errors.Wrap(err, "could not copy file %v to watch folder", newFileName)
} }
s.log.Info().Msgf("saved file to watch folder: %v", fullFileName) s.log.Info().Msgf("saved file to watch folder: %v", newFileName)
return nil return nil
} }