Propagated a logrus.Logger/Entry along for the processor, registry and
providers to use for events that may not require to stop processing but
are useful to know otherwise.
Changed some functions to return errors instead of failing with a logger
trying to centralice the logging or returning of the main failing points
in the main components of the application.
Closes#13
- Refactored all providers, all following the same interface
- Added the registry component where all providers get initializated
- Added the processor component in charge of processing
screenshots/covers
- Split configuration into Options and ProviderOptions
- Refactored the workaround for the covers, now the game provide a
CoverURL and the processor decides to download it or not
- Made the providers folder hierarchy more clear, and moved helper
functions to other files for sanity
- Simplified CLI
This is a way more convenient way for the underlying providers to
access the input in which the software was called. Having the input
path in providers that already discover path will allow users to
override paths easily, and this way we could also add more flags that
some providers would need and others ignore without changuing function calls.
* Using EXIF data for screenshots which is more accurate and doesn't
require parsing the filename (which not always contains the date)
* Relying on the date parsing for videos for now since I haven't found
a game that didn't have the datetime on the video filename. This could
change in the future.
- Added the retroarch provider
- Fixed some `path.X` references (moved to filepath)
Note: In order to use RetroArch specific settings on the app are
required. Read the top comment on the provider module to know how
to start.
On windows filesystems no special characters can be used on path routes,
so when we fail to create (MkdirAll) the path for a certain
game and a failure happens, we use a slugified version of the name
instead.