Added functionality to archive files from ingest

This commit is contained in:
Gregory Ballantine 2022-08-31 22:41:05 -04:00
parent a544f1f016
commit 9010de6a14
3 changed files with 93 additions and 23 deletions

View File

@ -10,5 +10,15 @@ import (
func main() { func main() {
config.LoadConfig() config.LoadConfig()
transcoder.NewRepository(viper.GetString("transcoder.repository")) r := transcoder.NewRepository(viper.GetString("transcoder.repository"))
ingestFiles := r.SearchIngest()
for _, i := range ingestFiles {
// archive file
r.ArchiveFile(i.Name())
// transcode file
// TODO - t.Transcode(i.Name())
// clean up source file
// TODO - r.CleanupFile(i.Name())
}
} }

View File

@ -1,6 +1,7 @@
package transcoder package transcoder
import ( import (
"io"
"log" "log"
"path/filepath" "path/filepath"
"os" "os"
@ -26,6 +27,55 @@ func NewRepository(path string) *Repository {
return r return r
} }
func (r *Repository) SearchIngest() []os.FileInfo {
ingestPath := filepath.Join(r.basePath, "ingest")
ingestDir, err := os.Open(ingestPath)
if err != nil {
log.Fatalf("Error opening ingest directory: %s", err)
os.Exit(1)
}
files, err := ingestDir.Readdir(0)
if err != nil {
log.Fatalf("Error searching for files in ingest: %s", err)
os.Exit(1)
}
return files
}
func (r *Repository) ArchiveFile(inFile string) {
// create ingest and archive paths
ingestPath := filepath.Join(r.basePath, "ingest", inFile)
archivePath := filepath.Join(r.basePath, "archive", inFile)
log.Printf("Copying %s to the archive.", ingestPath)
// open ingest file
source, err := os.Open(ingestPath)
if err != nil {
log.Fatalf("Error opening file in ingest: %s.", err)
os.Exit(1)
}
defer source.Close()
// attempt to create destination file
destination, err := os.Create(archivePath)
if err != nil {
log.Fatalf("Error opening archive file: %s.", err)
os.Exit(1)
}
defer destination.Close()
destination.Chmod(0755)
// perform the file copy
_, err = io.Copy(destination, source)
if err != nil {
log.Fatalf("Error while archiving file from ingest: %s.", err)
os.Exit(1)
}
}
func create_repo_dir(path string) { func create_repo_dir(path string) {
_, err := os.Stat(path) _, err := os.Stat(path)
if os.IsNotExist(err) { if os.IsNotExist(err) {

10
util/file.go Normal file
View File

@ -0,0 +1,10 @@
package util
import (
"path"
"strings"
)
func FilenameWithoutExtension(filename string) string {
return strings.TrimSuffix(filename, path.Ext(filename))
}