configure directories as constants
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
ce2087e638
commit
1694ce0d04
21
main.go
21
main.go
@ -36,6 +36,11 @@ type ROMCache struct {
|
|||||||
sync.Mutex // We have multiple goroutines that may be accessing this data simultaneously, so we much lock / unlock it to prevent race conditions
|
sync.Mutex // We have multiple goroutines that may be accessing this data simultaneously, so we much lock / unlock it to prevent race conditions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
romDirectory = "public" // directory where ROMs are available for download
|
||||||
|
buildOutDirectory = "out" // directory from build system containing artifacts which we can move to romDirectory
|
||||||
|
)
|
||||||
|
|
||||||
var ( // evil global variable
|
var ( // evil global variable
|
||||||
romCache ROMCache
|
romCache ROMCache
|
||||||
)
|
)
|
||||||
@ -45,8 +50,8 @@ func init() {
|
|||||||
romCache.Cached = make(map[string]bool)
|
romCache.Cached = make(map[string]bool)
|
||||||
|
|
||||||
// Check if any new build artifacts and preload the romCache
|
// Check if any new build artifacts and preload the romCache
|
||||||
moveBuildArtifacts("out", "public")
|
moveBuildArtifacts()
|
||||||
go updateROMCache("public")
|
go updateROMCache()
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTP Server
|
// HTTP Server
|
||||||
@ -63,7 +68,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reads the ROM files on the filesystem and populates a slice of linageOSROMs
|
// Reads the ROM files on the filesystem and populates a slice of linageOSROMs
|
||||||
func updateROMCache(romDirectory string) {
|
func updateROMCache() {
|
||||||
|
|
||||||
log.Printf("updating ROM cache")
|
log.Printf("updating ROM cache")
|
||||||
|
|
||||||
@ -130,9 +135,9 @@ func updateROMCache(romDirectory string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// returns true if new builds were moved
|
// returns true if new builds were moved
|
||||||
func moveBuildArtifacts(outDirectory, romDirectory string) bool {
|
func moveBuildArtifacts() bool {
|
||||||
|
|
||||||
f, err := os.Open(outDirectory)
|
f, err := os.Open(buildOutDirectory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("failed to open ROM directory: %v", err)
|
log.Printf("failed to open ROM directory: %v", err)
|
||||||
return false
|
return false
|
||||||
@ -154,7 +159,7 @@ func moveBuildArtifacts(outDirectory, romDirectory string) bool {
|
|||||||
newROMs = true
|
newROMs = true
|
||||||
log.Printf("new build found - moving file %s", v.Name())
|
log.Printf("new build found - moving file %s", v.Name())
|
||||||
romCache.Lock() // lock to prevent multiple concurrent goroutines moving the same file
|
romCache.Lock() // lock to prevent multiple concurrent goroutines moving the same file
|
||||||
err := moveBuildFile(fmt.Sprintf("%s/%s", outDirectory, v.Name()), fmt.Sprintf("%s/%s", romDirectory, v.Name()))
|
err := moveBuildFile(fmt.Sprintf("%s/%s", buildOutDirectory, v.Name()), fmt.Sprintf("%s/%s", romDirectory, v.Name()))
|
||||||
romCache.Unlock()
|
romCache.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("failed to move file '%s' from out to rom directory: %v", v.Name(), err)
|
log.Printf("failed to move file '%s' from out to rom directory: %v", v.Name(), err)
|
||||||
@ -185,9 +190,9 @@ func isLineageROMZip(v fs.DirEntry) (bool, []string) {
|
|||||||
// Writes JSON response for the updater app to know what versions are available to download
|
// Writes JSON response for the updater app to know what versions are available to download
|
||||||
func lineageOSROMListHandler(w http.ResponseWriter, r *http.Request) {
|
func lineageOSROMListHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
go func() {
|
go func() {
|
||||||
newBuilds := moveBuildArtifacts("out", "public")
|
newBuilds := moveBuildArtifacts()
|
||||||
if newBuilds {
|
if newBuilds {
|
||||||
updateROMCache("public")
|
updateROMCache()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user