gog-sync/README.md

119 lines
3.1 KiB
Markdown

# GOG-SYNC
## **Please note that this is alpha software, you should not trust it.**
A small tool to synchronize the stuff in a [GOG](https://www.gog.com/) library
with a local folder.
It builds on the work of the [unofficial GOG API Documentation](https://gogapidocs.readthedocs.io/en/latest/).
This is the first time I am building something with rust, so beware :)
# Installation
Install from [crates.io](https://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](https://www.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.