strip-beats/app/choose.go

85 lines
1.4 KiB
Go
Raw Normal View History

2023-09-04 08:54:00 -05:00
package app
import (
2023-09-05 22:09:55 -05:00
"fmt"
"os"
2023-09-04 08:54:00 -05:00
"codeberg.org/danjones000/strip-beats/files"
2023-11-11 18:51:38 -06:00
"codeberg.org/danjones000/strip-beats/io/boolean"
2023-09-04 08:54:00 -05:00
"codeberg.org/danjones000/strip-beats/media"
2023-09-06 18:46:09 -05:00
"codeberg.org/danjones000/strip-beats/utils"
2023-09-05 22:09:55 -05:00
"github.com/rkoesters/xdg/trash"
2023-09-04 08:54:00 -05:00
)
var file *media.Probe
2023-09-05 22:09:55 -05:00
var tmpfile *media.Probe
2023-09-04 08:54:00 -05:00
func PickNewFile() media.Probe {
path := files.PickRandomFile()
2023-09-04 09:36:00 -05:00
return SetFile(path)
}
func SetFile(path string) media.Probe {
2023-09-04 08:54:00 -05:00
f := media.ProbeFile(path)
file = &f
2023-10-29 11:14:44 -05:00
copyTagsFromFile()
2023-09-04 08:54:00 -05:00
return f
}
2023-09-05 22:09:55 -05:00
func SetTmpFile(path string) media.Probe {
f := media.ProbeFile(path)
tmpfile = &f
return f
}
2023-09-04 15:36:32 -05:00
func PickFileWithConf() media.Probe {
var path string
var msg string
good := false
for !good {
path = files.PickRandomFile()
2023-09-06 18:46:09 -05:00
msg = fmt.Sprintf("We've selected %s\nIs that ok?", utils.GetShortPath(path))
2023-09-04 15:36:32 -05:00
good = boolean.Choose(msg)
2023-09-06 16:56:55 -05:00
if !good {
good = boolean.Choose("Would you like to quit?")
if good {
return media.Probe{}
}
}
2023-09-04 15:36:32 -05:00
}
return SetFile(path)
}
2023-09-04 08:54:00 -05:00
func GetFile() media.Probe {
if file == nil {
return PickNewFile()
}
return *file
}
2023-09-05 22:09:55 -05:00
func GetTmpFile() media.Probe {
if tmpfile == nil {
return GetFile()
}
return *tmpfile
}
2023-09-06 16:56:55 -05:00
func PickAgain() {
2023-09-05 22:09:55 -05:00
if tmpfile != nil {
os.Remove(tmpfile.Format.Path)
}
2023-09-04 08:54:00 -05:00
file = nil
2023-09-05 22:09:55 -05:00
tmpfile = nil
}
func Finish() {
if file != nil {
err := trash.Trash(file.Format.Path)
if err != nil {
panic(err)
}
}
2023-09-06 16:56:55 -05:00
PickAgain()
2023-09-05 22:09:55 -05:00
}