diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b5039da --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +settings.json +OBM +logs \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..13bd88e --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +all: + cd src && go build && mv OBM .. \ No newline at end of file diff --git a/flags.go b/flags.go deleted file mode 100644 index c564b02..0000000 --- a/flags.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "flag" -) - -var ( - orderMessage string = "Order: Replace -> Retrieve -> Remove\n" -) - -var ( - cmdlnBeatmap = flag.String("beatmap", "", `Specifies a certain beatmap. - If set to non "" - the program will search for given name and perform the magic - provided in settings if successful`) - showOrder = flag.Bool("showOrder", false, "Prints an order in which functions are performed on a beatmap") -) diff --git a/go.mod b/go.mod deleted file mode 100644 index c4a1870..0000000 --- a/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module unbewohnte.xyz/Unbewohnte/OBM - -go 1.16 diff --git a/OBM.go b/src/OBM.go similarity index 64% rename from OBM.go rename to src/OBM.go index 61d044a..006e669 100644 --- a/OBM.go +++ b/src/OBM.go @@ -7,12 +7,68 @@ import ( "sync" "time" - "unbewohnte.xyz/Unbewohnte/OBM/logger" - "unbewohnte.xyz/Unbewohnte/OBM/manager" - "unbewohnte.xyz/Unbewohnte/OBM/settings" - "unbewohnte.xyz/Unbewohnte/OBM/util" + "unbewohnte/OBM/logger" + "unbewohnte/OBM/manager" + "unbewohnte/OBM/settings" + "unbewohnte/OBM/util" ) +const orderMessage string = "Order: Replace -> Retrieve -> Remove\n" + +var ( + cmdlnBeatmap = flag.String("beatmap", "", `Specifies a certain beatmap. + If set to non "" - the program will search for given name and perform the magic + provided in settings if successful`) + showOrder = flag.Bool("showOrder", false, "Prints an order in which functions are performed on a beatmap") +) + +// a basic implementation of a concurrent worker +func worker(jobs <-chan job, results chan result, WG *sync.WaitGroup) { + defer WG.Done() + for job := range jobs { + var successful, failed uint = 0, 0 + + // the order is: Replace->Retrieve->Remove (if all 3 options are enabled) + if job.replacementImagePath != "" { + s, f := job.beatmap.ReplaceBackgrounds(job.replacementImagePath) + successful += s + failed += f + } + if job.retrievementPath != "" { + s, f := job.beatmap.RetrieveBackgrounds(job.retrievementPath) + successful += s + failed += f + } + if job.remove == true { + s, f := job.beatmap.RemoveBackgrounds() + successful += s + failed += f + } + + results <- result{ + beatmapName: job.beatmap.Name, + numberOfDiffs: uint(len(job.beatmap.Diffs)), + successful: successful, + failed: failed, + } + } + +} + +// the `starter` that `glues` workers and jobs together +func workerPool(jobs chan job, results chan result, numOfWorkers int, WG *sync.WaitGroup) { + // check if there are less jobs than workers + if numOfWorkers > len(jobs) { + numOfWorkers = len(jobs) + } + + // replacing backgrounds for each beatmap concurrently + for i := 0; i < numOfWorkers; i++ { + WG.Add(1) + go worker(jobs, results, WG) + } +} + type result struct { beatmapName string numberOfDiffs uint diff --git a/src/go.mod b/src/go.mod new file mode 100644 index 0000000..b50dac5 --- /dev/null +++ b/src/go.mod @@ -0,0 +1,3 @@ +module unbewohnte/OBM + +go 1.16 diff --git a/logger/logger.go b/src/logger/logger.go similarity index 100% rename from logger/logger.go rename to src/logger/logger.go diff --git a/src/logs/logs.log b/src/logs/logs.log new file mode 100644 index 0000000..14f31a8 --- /dev/null +++ b/src/logs/logs.log @@ -0,0 +1 @@ +INFO: 2022/08/14 18:24:01 Successfully created new settings file diff --git a/manager/beatmap.go b/src/manager/beatmap.go similarity index 98% rename from manager/beatmap.go rename to src/manager/beatmap.go index b622828..321b886 100644 --- a/manager/beatmap.go +++ b/src/manager/beatmap.go @@ -5,7 +5,7 @@ import ( "os" "path/filepath" - "unbewohnte.xyz/Unbewohnte/OBM/util" + "unbewohnte/OBM/util" ) // the main beatmap struct, contains necessary data for functions diff --git a/manager/parse.go b/src/manager/parse.go similarity index 97% rename from manager/parse.go rename to src/manager/parse.go index f31bb75..a6ce6c7 100644 --- a/manager/parse.go +++ b/src/manager/parse.go @@ -6,7 +6,7 @@ import ( "path/filepath" "strings" - "unbewohnte.xyz/Unbewohnte/OBM/util" + "unbewohnte/OBM/util" ) // parses given .osu file and returns the filename of its background diff --git a/manager/remove.go b/src/manager/remove.go similarity index 94% rename from manager/remove.go rename to src/manager/remove.go index 9b1bbab..f439131 100644 --- a/manager/remove.go +++ b/src/manager/remove.go @@ -5,7 +5,7 @@ import ( "os" "path/filepath" - "unbewohnte.xyz/Unbewohnte/OBM/logger" + "unbewohnte/OBM/logger" ) // parses each difficulty for background info, removes found backgrounds diff --git a/manager/replace.go b/src/manager/replace.go similarity index 93% rename from manager/replace.go rename to src/manager/replace.go index 084fc2b..e0e43b6 100644 --- a/manager/replace.go +++ b/src/manager/replace.go @@ -5,8 +5,8 @@ import ( "os" "path/filepath" - "unbewohnte.xyz/Unbewohnte/OBM/logger" - "unbewohnte.xyz/Unbewohnte/OBM/util" + "unbewohnte/OBM/logger" + "unbewohnte/OBM/util" ) // parses each beatmap`s .osu file for background info; diff --git a/manager/retrieve.go b/src/manager/retrieve.go similarity index 95% rename from manager/retrieve.go rename to src/manager/retrieve.go index 5b4c169..0744227 100644 --- a/manager/retrieve.go +++ b/src/manager/retrieve.go @@ -5,8 +5,8 @@ import ( "os" "path/filepath" - "unbewohnte.xyz/Unbewohnte/OBM/logger" - "unbewohnte.xyz/Unbewohnte/OBM/util" + "unbewohnte/OBM/logger" + "unbewohnte/OBM/util" ) // retrieves backgrounds from given beatmap folder (same as in `ReplaceBackgrounds`) and copies them to the retrievement path diff --git a/manager/search.go b/src/manager/search.go similarity index 100% rename from manager/search.go rename to src/manager/search.go diff --git a/settings/settings.go b/src/settings/settings.go similarity index 97% rename from settings/settings.go rename to src/settings/settings.go index bbaec6e..cc7b55d 100644 --- a/settings/settings.go +++ b/src/settings/settings.go @@ -5,8 +5,8 @@ import ( "fmt" "os" - "unbewohnte.xyz/Unbewohnte/OBM/logger" - "unbewohnte.xyz/Unbewohnte/OBM/util" + "unbewohnte/OBM/logger" + "unbewohnte/OBM/util" ) const ( diff --git a/settings/structure.go b/src/settings/structure.go similarity index 100% rename from settings/structure.go rename to src/settings/structure.go diff --git a/util/background.go b/src/util/background.go similarity index 100% rename from util/background.go rename to src/util/background.go diff --git a/util/checks.go b/src/util/checks.go similarity index 100% rename from util/checks.go rename to src/util/checks.go diff --git a/util/copy.go b/src/util/copy.go similarity index 100% rename from util/copy.go rename to src/util/copy.go diff --git a/worker.go b/worker.go deleted file mode 100644 index e35b26c..0000000 --- a/worker.go +++ /dev/null @@ -1,52 +0,0 @@ -package main - -import ( - "sync" -) - -// a basic implementation of a concurrent worker -func worker(jobs <-chan job, results chan result, WG *sync.WaitGroup) { - defer WG.Done() - for job := range jobs { - var successful, failed uint = 0, 0 - - // the order is: Replace->Retrieve->Remove (if all 3 options are enabled) - if job.replacementImagePath != "" { - s, f := job.beatmap.ReplaceBackgrounds(job.replacementImagePath) - successful += s - failed += f - } - if job.retrievementPath != "" { - s, f := job.beatmap.RetrieveBackgrounds(job.retrievementPath) - successful += s - failed += f - } - if job.remove == true { - s, f := job.beatmap.RemoveBackgrounds() - successful += s - failed += f - } - - results <- result{ - beatmapName: job.beatmap.Name, - numberOfDiffs: uint(len(job.beatmap.Diffs)), - successful: successful, - failed: failed, - } - } - -} - -// the `starter` that `glues` workers and jobs together -func workerPool(jobs chan job, results chan result, numOfWorkers int, WG *sync.WaitGroup) { - // check if there are less jobs than workers - if numOfWorkers > len(jobs) { - numOfWorkers = len(jobs) - } - - // replacing backgrounds for each beatmap concurrently - for i := 0; i < numOfWorkers; i++ { - WG.Add(1) - go worker(jobs, results, WG) - } -}