Compare commits

..

No commits in common. "3f892331f699720c657007758dc8275516674fdc" and "32a57cc0502328a7ec3784e5812faa9ba20bc2a5" have entirely different histories.

4 changed files with 40 additions and 48 deletions

1
.gitignore vendored
View file

@ -1 +0,0 @@
records

View file

@ -16,13 +16,11 @@ const version = "0-pre"
var addr *string var addr *string
var port *uint16 var port *uint16
var regenerate *bool
var showVersion *bool var showVersion *bool
func main() { func main() {
addr = getopt.String('a', "0.0.0.0") addr = getopt.String('a', "0.0.0.0")
port = getopt.Uint16('p', 8000) port = getopt.Uint16('p', 8000)
regenerate = getopt.Bool('r')
showVersion = getopt.Bool('V') showVersion = getopt.Bool('V')
if err := getopt.Getopt(nil); err != nil { if err := getopt.Getopt(nil); err != nil {
util.Die(err.Error()) util.Die(err.Error())
@ -35,7 +33,7 @@ func main() {
args := getopt.Args() args := getopt.Args()
if len(args) != 1 { if len(args) != 1 {
fmt.Fprintf(os.Stderr, "usage: %s [-rV] [-a address] [-p port] directory\n", os.Args[0]) fmt.Fprintf(os.Stderr, "usage: %s [-V] [-a address] [-p port] directory\n", os.Args[0])
os.Exit(1) os.Exit(1)
} }
@ -44,7 +42,7 @@ func main() {
log.Printf("This is records %s\n", version) log.Printf("This is records %s\n", version)
log.Println("https://git.baxters.nz/jeremy/records") log.Println("https://git.baxters.nz/jeremy/records")
musicindex.Init(mediaDir, *regenerate) musicindex.Init(mediaDir)
var artistCount, albumCount, songCount int var artistCount, albumCount, songCount int
artistCount = len(musicindex.Artists()) artistCount = len(musicindex.Artists())

View file

@ -2,6 +2,7 @@ package musicindex
import ( import (
"errors" "errors"
"fmt"
"io/fs" "io/fs"
"log" "log"
"os" "os"
@ -57,26 +58,13 @@ func indexArtists() {
util.Die("%s", err.Error()) util.Die("%s", err.Error())
} }
if (regenerateTarballs) {
err = os.RemoveAll(TempDir) err = os.RemoveAll(TempDir)
if err != nil { if err != nil {
util.Die("cannot remove temporary directory %s: %s", TempDir, err.Error()) util.Die("cannot remove temporary directory %s: %s", TempDir, err.Error())
} }
}
f, err := os.Stat(TempDir)
if err != nil {
err = os.Mkdir(TempDir, 0711) err = os.Mkdir(TempDir, 0711)
if err != nil { if err != nil {
util.Die("cannot make temporary directory %s: %s", TempDir, util.Die("cannot make temporary directory %s: %s", TempDir, err.Error())
err.Error())
}
log.Println("generating new tarball index")
} else {
if !f.IsDir() {
util.Die("cannot make temporary directory %s: %s", TempDir,
"not a directory")
}
} }
artists = make(map[string]Artist) artists = make(map[string]Artist)
@ -160,32 +148,42 @@ func indexAlbum(artist *Artist, albumName, albumDir string) (a Album, err error)
slices.Sort(tracks) slices.Sort(tracks)
a.TrackFiles = tracks a.TrackFiles = tracks
generate := false
hash := util.HashOf(a.Artist.Name + "::" + a.Name) hash := util.HashOf(a.Artist.Name + "::" + a.Name)
a.Tarball = TempDir + "/" + hash path := TempDir + "/" + hash
if _, err = os.Stat(a.Tarball); errors.Is(err, os.ErrNotExist) { if _, err = os.Stat(path); errors.Is(err, os.ErrNotExist) {
// if the file isn't there we definitely want to generate one a.Tarball = path
generate = true } else if err == nil {
} else { // if the file exists or if it's some other error
if regenerateTarballs {
// not sure why this is here since we deleted the whole
// directory beforehand but let's try overwrite it anyway
generate = true
}
}
if generate {
err = targz.Compress(a.Directory(), a.Tarball)
if err != nil {
a.Tarball = "" a.Tarball = ""
for i := range 9 {
if _, err = os.Stat(fmt.Sprintf("%s.%d", path, i)); err == nil {
continue
} else if errors.Is(err, os.ErrNotExist) {
a.Tarball = path
} else {
err = errors.New("cannot create tarball in filesystem: " +
err.Error())
return return
} }
} }
if len(a.Tarball) == 0 {
err = errors.New("cannot create tarball in filesystem; " +
"please clean out " + TempDir)
return
}
} else {
err = errors.New("cannot create tarball in filesystem: " + err.Error())
return
}
a.Tarball = path
err = targz.Compress(a.Directory(), a.Tarball)
if err != nil {
return
}
tarball, err := os.Stat(a.Tarball) tarball, err := os.Stat(a.Tarball)
if err != nil { if err != nil {
a.Tarball = ""
return return
} }
a.TarballSize = tarball.Size() a.TarballSize = tarball.Size()

View file

@ -34,23 +34,20 @@ var artists map[string]Artist
var coverFileExtension string var coverFileExtension string
var defaultCoverFile string var defaultCoverFile string
var mediaDir string var mediaDir string
var regenerateTarballs bool
var trackFileExtension string var trackFileExtension string
func Init(path string, regenerate bool) { func Init(path string) {
InitWith(path, regenerate, ".flac", "cover.jpg", ".jpg") InitWith(path, ".flac", "cover.jpg", ".jpg")
} }
func InitWith(path string, regenerate bool, func InitWith(path, mediaExtension, coverFile, coverExtension string) {
mediaExtension, coverFile, coverExtension string) {
if initialised { if initialised {
return return
} }
mediaDir = path mediaDir = path
defaultCoverFile = coverFile
regenerateTarballs = regenerate
trackFileExtension = mediaExtension trackFileExtension = mediaExtension
defaultCoverFile = coverFile
coverFileExtension = coverExtension coverFileExtension = coverExtension
assertAccessTo(mediaDir) assertAccessTo(mediaDir)