|
|
|
package manager
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
|
|
|
|
"unbewohnte.xyz/Unbewohnte/OBM/logger"
|
|
|
|
"unbewohnte.xyz/Unbewohnte/OBM/util"
|
|
|
|
)
|
|
|
|
|
|
|
|
// retrieves backgrounds from given beatmap folder (same as in `ReplaceBackgrounds`) and copies them to the retrievement path
|
|
|
|
func (BEATMAP *Beatmap) RetrieveBackgrounds(retrievementPath string) (successful, failed uint) {
|
|
|
|
// looping through each .osu file of a beatmap
|
|
|
|
for _, diff := range BEATMAP.Diffs {
|
|
|
|
background, err := BEATMAP.GetBackgroundName(diff)
|
|
|
|
if err != nil || background == "" {
|
|
|
|
logger.LogError(false, fmt.Sprintf("BEATMAP: %s: Error getting background filename: %s", diff, err))
|
|
|
|
failed++
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
// check if the background does exist
|
|
|
|
exists := util.DoesExist(filepath.Join(BEATMAP.Path, background))
|
|
|
|
if !exists {
|
|
|
|
// if not - we cannot copy it, so moving to the next diff
|
|
|
|
logger.LogWarning(fmt.Sprintf("BEATMAP: %s: Background does not exist", diff))
|
|
|
|
failed++
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
// creating directory that represents current beatmap
|
|
|
|
dstPath := filepath.Join(retrievementPath, BEATMAP.Name)
|
|
|
|
|
|
|
|
err = os.MkdirAll(dstPath, os.ModePerm)
|
|
|
|
if err != nil {
|
|
|
|
logger.LogError(false, fmt.Sprintf("BEATMAP: %s: Error creating a directory: %s", diff, err))
|
|
|
|
failed++
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
// copy background to the `retrievementPath`
|
|
|
|
err = util.CopyFile(filepath.Join(BEATMAP.Path, background), filepath.Join(dstPath, background))
|
|
|
|
if err != nil {
|
|
|
|
logger.LogError(false, fmt.Sprintf("BEATMAP: %s: Could not copy: %s", diff, err))
|
|
|
|
failed++
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
successful++
|
|
|
|
}
|
|
|
|
return successful, failed
|
|
|
|
}
|