Go to file
2017-05-04 16:26:58 +02:00
.vscode add a third variant for cs keys... 2017-03-23 15:18:18 +01:00
src refactor global config model 2017-05-04 16:21:07 +02:00
.editorconfig refactor naming to be more generic 2017-03-22 15:39:46 +01:00
.gitignore initial proof of concept 2017-03-19 14:50:58 +01:00
.gitlab-ci.yml Update .gitlab-ci.yml 2017-03-21 12:36:38 +00:00
Cargo.lock update cargo dependencies 2017-05-04 16:26:58 +02:00
Cargo.toml fix a bug in serial key parsing 2017-03-23 16:12:28 +01:00
CHANGELOG.md fix a bug in serial key parsing 2017-03-23 16:12:28 +01:00
LICENSE add documentation and license 2017-03-20 19:00:27 +01:00
README.md Update README.md 2017-03-24 08:48:29 +00:00

GOG-SYNC

Please note that this is alpha software, you should not trust it.

A small tool to synchronize the stuff in a GOG library with a local folder.

It builds on the work of the unofficial GOG API Documentation.

This is the first time I am building something with rust, so beware :)

Installation

Install from crates.io.

cargo install gog-sync

Configuration

The configuration file is in the config folder as described by the xdg specification with a prefix of gog-sync.

For example on macOS or Linux

~/.config/gog-sync/config.json

A bare configuration with default values before first use:

{
  "gameStorage": ".",
  "movieStorage": ".",
  "content": {},
  "data": {},
  "extras": {},
  "osFilters": [],
  "languageFilters": [],
  "skipMovies": false,
  "skipGames": false
}
  • gameStorage: Where to save games
  • movieStorage: Where to save movies
  • content: A map, content id => hash
  • data: A map, data url => hash
  • extras: A map, extra url => hash
  • osFilters: An array of operating systems. If it is not empty, game data is limited to the ones in the list.
  • languageFilters: An array of languages. If it is not empty, game data is limited to the ones in the list.
  • resolutionFilters: An array of resolutions. If it is not empty, movie data is limited to the ones in the list.
  • skipMovies: Whether to skip movie content
  • skipGames: Whether to skip game content

Valid values for osFilter:

  • linux
  • mac
  • windows

Check on gog.com which languages are available.

An incomplete list of resolutions on gog:

  • DVD
  • 576p
  • 720p
  • 1080p
  • 4k

You should have no need of changing content, data or extras, as these are used to determine whether specific content is up to date.

Usage

If you want to see the information log while running set RUST_LOG=info.

USAGE:
    gog-sync [FLAGS] [OPTIONS]

FLAGS:
    -h, --help           Prints help information
    -g, --skip-games     Skip game content.
    -f, --skip-movies    Skip movie content.
    -V, --version        Prints version information

OPTIONS:
    -s, --game-storage <FOLDER>     Sets the download folder (defaults to the working directory).
    -l, --language <FILTER>         Only sync files for this comma seperated list of languages.
    -m, --movie-storage <FOLDER>    Sets the download folder for movies (defaults to the working directory).
    -o, --os <FILTER>               Only sync files for this comma seperated list of operating systems.
                                    Valid values are 'linux', 'mac'  and 'windows'.
    -r, --resolution <FILTER>       Only sync movies for this comma seperated list of resolutions.

gog-sync

Normal invocation, uses the current working directory as storage if not configured otherwise.


gog-sync -s ~/Downloads/games

Overwrite the default or configured storage path.


gog-sync -l english -o linux,windows

Only sync english installers and only for linux and windows systems.