Commit graph

716 commits

Author SHA1 Message Date
derrod fbd0df1ecc [cli/core] Include DLCs in installed games list
This should be replaced later on by including information
about the main game in the InstalledGame metadata.
2021-09-10 20:30:53 +02:00
derrod cffd9040f7 [cli] Strip whitespace from game titles
Yoku's Island Express has a \t for some reason...
2021-09-10 16:09:15 +02:00
derrod 6b4cf6558b [core] Warn if parsing manifest-defined launch parameters fails 2021-09-09 09:55:48 +02:00
derrod a725dd0ad8 Bump version 2021-09-08 11:10:42 +02:00
derrod 21eac6ecfa [cli] Enable (very manual) Origin linking on Linux 2021-09-08 10:43:30 +02:00
derrod 0bf7110653 [core] Move getting env vars to separate method 2021-09-08 10:37:40 +02:00
derrod e8a3a3ec8d [cli] Use pyinstaller check rather than OS name only 2021-09-08 10:27:26 +02:00
derrod b12798e6b0 [cli/core/lfs/utils] Fetch SDL data from API 2021-09-05 09:41:54 +02:00
derrod 82a2706e4c [api] Add method for downloading SDL data 2021-09-05 09:06:57 +02:00
derrod 72aea19853 [api] Add version to API urls 2021-09-05 08:40:12 +02:00
derrod 791bc77c7c [core/lfs] Enable update notification for PyInstaller on Linux 2021-09-05 00:49:11 +02:00
derrod 43bb09a1ad [utils] Add helper to determine if running PyInstaller package 2021-09-05 00:49:04 +02:00
derrod 39bfa3df15 [api] Update Legendary API host 2021-09-04 10:06:26 +02:00
derrod 5a8de3a3bc [core/utils] Update auth EGL version and game workarounds from API 2021-09-03 23:20:17 +02:00
derrod ba6ec3ecca [cli/core] Add option to launch games via Origin (Windows only) 2021-09-03 22:59:47 +02:00
derrod 6876371325 [cli] Disable update notice if JSON/CSV/TSV output are used 2021-09-03 21:11:09 +02:00
derrod d82870a5d3 [cli] Show notice on non-Windows about update delays 2021-09-03 20:14:00 +02:00
derrod d21e002272 [cli] Force check for updates when trying to login 2021-09-03 20:12:37 +02:00
derrod b33396915e [lfs] Fix get_cached_version() reading from disk every time 2021-09-03 20:11:29 +02:00
derrod 5fe35c7008 [lfs] Add options with comments for update opt-out to config 2021-09-03 20:11:11 +02:00
derrod 315bdfb4a4 [cli/core/lfs] Enable update check by default, make notice optional
This will allow legendary to force checking for updates in critical
situations where it may be required. Also enables updating configuration
data on Linux by default.
2021-09-03 20:10:30 +02:00
derrod 0acfc47b33 [cli] Properly catch exception on import 2021-09-03 20:08:20 +02:00
derrod ad2912a88e [lfs] Move optionxform to custom config parser 2021-09-03 19:58:06 +02:00
derrod dd5f77c3d1 Bump version 2021-09-03 19:25:32 +02:00
derrod c53ac14c64 [cli] Catch exception if EGL path resolution fails 2021-09-03 19:23:25 +02:00
derrod d3026672d1 [core] Fix for epic authentication API changes 2021-09-03 19:16:37 +02:00
derrod d6e9c5ef46 [cli] Fix EGL Local AppData resolution with newer WINE versions
Closes #332
2021-09-03 19:00:56 +02:00
derrod f3991d3ee2 [api] Clean up imports and add OS name to User-Agent 2021-09-03 10:58:57 +02:00
derrod 65085e5b4a Bump version 2021-09-02 19:48:24 +02:00
derrod a465966954 [api/cli/core/lfs] Add Legendary update check 2021-09-02 19:31:04 +02:00
derrod 69eeccec21 [api.egs] Add method to update EGL version/credentials 2021-09-02 19:31:04 +02:00
derrod 4d5539c889 [cli/utils] Automatically create missing config sections 2021-09-02 19:31:04 +02:00
derrod 0416b472d3 [api] Add support for fetching launcher manifest 2021-09-02 18:10:26 +02:00
derrod 8726843bdb [lfs] Fix first time config creation 2021-09-02 17:31:58 +02:00
derrod 87d55c5d31 Bump version to 0.20.7 2021-09-01 15:46:11 +02:00
derrod f78674b3ed [core] Formatting and type hint fixes 2021-09-01 15:29:25 +02:00
derrod a80244ed37 [cli/core] Add flag to show non-installable games/DLCs
This primarily means titles that have to be activated on external stores
such as Battlefront II which has to be installed via Origin.

Addresses half of #202
2021-09-01 15:28:25 +02:00
derrod 6746ce85a1 [downloader] Fix wrong property being used
This caused re-using old files to fail.
2021-09-01 02:38:58 +02:00
derrod 7ff16aad44 [core/downloader] Move downloader to new sub-package
Preparing to add a new AIO based downloader
2021-08-14 05:12:10 +02:00
derrod 9e01ae1c5b [downloader] Update to use new dataclasses 2021-08-14 05:10:31 +02:00
derrod 1fe0dab78b [models] Further adjustments to new dataclasses 2021-08-14 05:10:00 +02:00
derrod dc381cacb0 [downloader] Adjust for changes in new dataclass attribute names 2021-08-11 09:21:19 +02:00
derrod 782a18f8f1 [models] Add type hints and migrate downloader models to dataclasses 2021-08-11 09:19:52 +02:00
derrod d86039dd9b [cli/core] Add option to disable HTTPS for downloads
The EGS client does not use HTTPS for downloads in order to facilitate
the use of tools such as LanCache that use DNS based CDN redirection.

Legendary should be usable in such an environment as well,
but HTTPS will remain on by default.

See: https://lancache.net/news/2019/06/15/steamcache-is-rebranding-to-lancachenet/
2021-08-09 11:31:03 +02:00
derrod 1760c34703 [cli/core] Add option for preferred CDN host
Allows a user to specify a preferred CDN via config or command line.
Also changes selection process to match EGS client
(no random selection anymore).
2021-08-09 11:17:15 +02:00
derrod 454e2a2a69 [utils] Set config modified state and mod time on write 2021-06-21 12:22:08 +02:00
derrod a4cbf5892a [cli/utils] Save manually specified install tags to config
Requires some testing, may cause issues with supported SDL titles.
2021-06-17 15:21:46 +02:00
derrod dd3c0429fe [cli] Filter files by install tag before verifying 2021-06-17 15:08:31 +02:00
derrod bb3d6f9348 [core/utils] Improve minimum disk space calculation when updating 2021-06-17 15:00:34 +02:00
derrod 0e6b63d1a2 [utils/lfs] Use custom configparser wrapper
The main reason is to prevent user configs from being overwritten
and also to only actually write the config file if it has been
modified from within Legendary itself.

Closes #279
2021-05-30 18:57:23 +02:00
derrod 7ae4eda5b8 [utils] Fix manifest combiner for delta patching
Previously this would result in duplicated chunks,
causing calculations for download sizes to be incorrect.

Fixes #278
2021-05-24 18:18:28 +02:00
derrod f040f4bd40 [api] EGS: Add method to fetch library items
This is required for us to also get items that don't have assets
(e.g. some DLCs/Origin-managed games)
2021-01-20 14:43:32 +01:00
derrod edad963200 [models/utils] Track file offset for chunk parts
Preparation for smarter patching with downloader rewrite.
2021-01-10 14:25:35 +01:00
derrod a2280edea8 [cli/core] Add option to override launch executable 2021-01-10 14:24:06 +01:00
derrod ee3b3fb9fe Fix various typos and some style complaints
Closes #175
2021-01-02 06:53:21 +01:00
derrod 58edb22fce [cli] egl-sync: Error out if asset information missing 2021-01-02 06:31:47 +01:00
derrod 19c66bee11 Bump version to 0.20.6 2020-12-27 22:01:45 +01:00
derrod 3c71229b7e [core] Fix missing {} around KnownFolders GUID 2020-12-26 22:01:30 +01:00
derrod ba867f1ce6 [cli] Sort game names case-insensitively 2020-12-23 18:04:53 +01:00
derrod d861668bc1 [models] Update CustomFields with items() method 2020-12-22 18:10:03 +01:00
derrod bd0b9248ee Bump version to 0.20.5 2020-12-20 20:48:31 +01:00
derrod 104b928e3a [core] Increase default shared memory to 2048 MiB
This should still be reasonable for most machines people are going to run games on,
and means no manual increases are required for every game it has been previously
needed for.
2020-12-18 17:26:51 +01:00
derrod 254c22eaec Update README & Bump version 2020-12-18 17:02:00 +01:00
derrod 1a015a3ba7 [core] Only attempt to delete untagged files that exist 2020-12-18 17:01:52 +01:00
derrod f42d63767c [cli] Fix crash when not installing 2020-12-17 16:31:38 +01:00
derrod 1226cd1b08 [cli] Remove untagged files when install tags changed 2020-12-17 15:25:01 +01:00
derrod 1cec4c6cb0 [core] Add method to remove untagged files 2020-12-17 15:25:01 +01:00
derrod 40f8c553ba [utils] Allow silent deletion of files 2020-12-17 15:25:01 +01:00
derrod 51c8b67f91 [cli] Add flag to reset SDL selection 2020-12-17 15:24:59 +01:00
derrod efad90d951 [cli] Do not run SDL for DLC 2020-12-17 15:23:06 +01:00
derrod dca216d053 [cli] Fix repair-and-update not working correctly 2020-12-17 15:23:06 +01:00
derrod 86ea066e8d [core] Save install tags to InstalledGame 2020-12-17 15:23:06 +01:00
derrod cff8abd0da [core] Import/Export install tags to EGL 2020-12-17 15:23:05 +01:00
derrod 30acc7d55e [models] Add install tags to game models 2020-12-17 15:23:05 +01:00
derrod df9380ab3d [core] Fix calculating install size *again* 2020-12-17 15:23:05 +01:00
Simão Gomes Viana 34677cc02e
[cli/README] Fix typo in CLI help (manfiests -> manifests) (#157) 2020-12-16 20:21:20 +01:00
derrod 1430e321e6 [core/utils] Miscellaneous whitespace, comment, text fixes 2020-12-16 12:37:12 +01:00
derrod 7609553b12 [core/utils] More generic/robust selective dl, add support for Fortnite
Existing installations should ask for the install tags that should be used
on first update. It will now be easier to add more games as well.
2020-12-16 12:35:31 +01:00
derrod fd004db4b9 [downloader] Move optional file deletion tasks to the end 2020-12-16 12:32:19 +01:00
derrod 4d138c1a22 [downloader] Silently attempt to delete files not selected for install
This is to clean up when changes are made to the selected install tags
2020-12-16 12:29:26 +01:00
derrod 08c2008281 [downloader/models] Add silent deletion task flag 2020-12-16 12:28:37 +01:00
derrod 691fd9bc8f [core] Fix calculating install size (again) 2020-12-16 12:15:18 +01:00
derrod bece6ef5de [downloader] Fix skipping unneeded chunks
This was erroneously removed in daeee2e
2020-12-16 12:14:31 +01:00
derrod e710bb893f [core] Fall back to default wine prefix location
This and the previous commit fix #41
2020-12-16 11:29:39 +01:00
derrod 5e061d6946 [core/utils] Add save path resolution on Linux
If a wine prefix is specified in the config, attempt to
find savegames in there.
2020-12-16 11:18:58 +01:00
derrod 3e2a6011ff [core] Ignore comments in configuration environment variables
Comments are treated as keys with no value by configparser, but env
variables with None as the value are not valid so this would crash.

Fixes #156
2020-12-16 05:45:05 +01:00
derrod 5e1896cf2c [downloader] Make insufficient memory message error more helpful 2020-12-14 08:42:22 +01:00
derrod cb7ea25a18 [core/utils] Add version check to game workarounds
Also add more games to the list of optimizations being enabled by default.

This will bring Pillars of Eternity down to around ~2 GiB shared memory,
which is still too much but without implementing another workaround that
adds a prefix filter I cannot really fix this. Certainly better than 24...
2020-12-14 08:27:02 +01:00
derrod daeee2eb8d [downloader] Rework order optimizer to be significantly faster
Also allow for a larger amount of files to be optimized.
2020-12-14 08:04:28 +01:00
derrod 9c87f8ab4f [downloader] Log optimization time and increase upper file limit 2020-12-14 06:28:03 +01:00
derrod b7db0ac721 [api/core/downloader] Update User-Agents 2020-12-13 03:14:55 +01:00
derrod 8e012c0441 Bump version to 0.20.4 2020-12-08 23:05:52 +01:00
derrod 80153d07b5 [cli/utils] Add Cyberpunk 2077 language pack hack 2020-12-08 06:43:43 +01:00
derrod 1640a47d6a [downloader] Correctly support empty install tag 2020-12-08 06:12:47 +01:00
derrod 5db6d9c73f [core/README] Add max_workers config option
Addresses #148
2020-12-07 23:52:43 +01:00
derrod 3aeb48efdf [core] Always initialize locale on startup 2020-11-25 18:50:09 +01:00
derrod 81463e6908 Bump version to 0.20.3 2020-11-25 06:53:36 +01:00
derrod 8a98c14055 [core] Fix CDN URI building for new Akamai CDN 2020-11-21 17:57:54 +01:00
derrod 22b7db7a29 [cli] Allow -y/--yes to be specified as part of the subcommand arguments 2020-11-21 14:30:30 +01:00
derrod 1598844bc6 [core] Always use default.env
Also fixes minor typo
2020-11-21 06:21:59 +01:00
derrod 3f3366c632 Bump version to 0.20.2 and Update README 2020-11-12 17:52:02 +01:00
derrod 3e6e173772 [core] Fix Uplay installer check 2020-11-05 15:25:37 +01:00
derrod 8206283755 [core/cli] Warn/Fail if game requires Uplay
Addresses #69 but does not fix it.
2020-11-02 19:08:06 +01:00
derrod 3310f7e7a7 [core] Fix crash if no old manifest present 2020-11-02 18:35:22 +01:00
derrod 80841f89bb [cli] Add "--keep-files" to uninstall without deleting 2020-11-02 15:55:36 +01:00
derrod 477827033e [cli/lfs] Add "cleanup" command to remove unused files 2020-11-02 15:53:11 +01:00
derrod e97941327e [core] Return empty asset list if not authenticated
Fixes #106
2020-11-02 15:26:10 +01:00
derrod 3ea394937b [lfs] Migrate old manifest structure to new 2020-11-02 15:14:59 +01:00
derrod 83e3af344f [core/lfs] Remove unversioned local manifest saving/loading 2020-11-02 14:58:23 +01:00
derrod effc74b73b [core] Exclude mods from games list 2020-11-01 16:38:43 +01:00
derrod 37083b01de [core] Disable delta manifests if versions identical 2020-11-01 15:38:18 +01:00
derrod 7046b06f14 [api/core/downloader] User-Agent update 2020-11-01 14:34:36 +01:00
derrod ace9ce8b5d [core] Show warning when looking up DLC fails
Might fix #101
2020-10-31 19:48:08 +01:00
derrod d842780c73 [lfs] Do not remove comments from ini files
Fixes #105
2020-10-24 19:23:40 +02:00
derrod d95fd20e76 [core] Use non-POSIX mode for parsing manifest launch arguments
(hopefully) Fixes #128
2020-10-24 19:19:25 +02:00
derrod 28f0b72f42 Bump version to 0.20.1 2020-09-09 10:32:37 +02:00
derrod f03a0a46fd [cli] Add --delta-manifest override 2020-09-09 10:29:57 +02:00
derrod dcbf8db54d [core] Properly handle Delta manifests (update base manifest)
Also removes the old workaround.
2020-09-09 10:29:46 +02:00
derrod 36d02fa5ce [downloader] Fix original file offset when using delta manifests 2020-09-09 10:28:28 +02:00
derrod e898fe03fc [downloader] Remove delta manifest workarounds 2020-09-09 10:13:21 +02:00
derrod 70ed243b32 [utils] Add manifest combiner for delta manifests 2020-09-09 10:13:03 +02:00
derrod 515705c061 [cli] list-files: Error out of invalid AppName specified
Closes #94
2020-09-09 09:53:05 +02:00
derrod b8b8a5d953 [cli] Add --version and --debug aliases for -V/-v 2020-09-08 18:10:05 +02:00
derrod b7fd2031f9 [cli] Fix status command when not logged in yet 2020-09-08 17:50:36 +02:00
derrod 09b918d156 Bump version to 0.20.0 2020-09-08 05:15:23 +02:00
derrod 6f53964b49 [cli] Add --json output format for some commands 2020-09-08 05:12:14 +02:00
derrod d4f4571f85 [core] Allow "wrapper" and "no_wine" in "default" section
The entire config crap will have to be rewritten to be "nicer"...
2020-09-08 04:56:56 +02:00
derrod acb7476a22 [cli] Add basic "status" command 2020-09-08 04:50:14 +02:00
derrod 5b855b0d3e [cli] Add note about potentially missing games when importing 2020-09-08 04:38:29 +02:00
derrod 6bae5d3081 [core] Prevent importing unknown games from EGL 2020-09-08 04:38:11 +02:00
derrod 7575b8f3a7 [cli/core] Prevent crash when game asset metadata is missing 2020-09-08 04:25:34 +02:00
derrod 9c9fee8f11 [core] Don't request delta manifest if old == new 2020-09-06 06:18:43 +02:00
derrod a55f75d5e8 [core/downloader] Prevent file deletion when using delta manifest
This is technically not how we should do this. In theory we should
"overlay" the delta manifest over the proper one and simply add/replace
the chunk/file list entries with the one from the delta manifest.
However simply not deleting files also works for the time being since files
are rarely deleted anyways.
2020-09-06 05:57:28 +02:00
derrod bd66d6c5dc [api/core/downloader] Update User-Agents 2020-09-06 03:16:06 +02:00
derrod 0430204f59 [core] Add debug message for delta manifest unavailability 2020-09-05 05:27:44 +02:00
derrod e9e40a3782 [cli] Add install size and path to CSV/TSV output
Fixes #91 and closes #68
2020-09-05 05:25:13 +02:00
derrod ade9080152 [cli] Convert import path to absolute
Fixes #61
2020-09-05 05:21:36 +02:00
derrod 6711897750 [cli] Add flags for new installer options
'--repair-and-update' for updating when repairing (duh)
'--ignore-free-space' to make the free space error a warning instead
'--disable-delta-manifests' to disable the use of delta manifests

Also closes #70
2020-09-05 05:20:27 +02:00
derrod fb9e8d4138 [core] Fix disk space check for initial install and add override 2020-09-05 05:18:15 +02:00
derrod d1b8412b27 [core] Add options for delta manifests and update-when-repairing 2020-09-05 05:16:05 +02:00
derrod 4b4483c580 [core] Implement delta manifests 2020-09-05 05:05:21 +02:00
derrod e1fc3df180 [manager] Improve chunk reuse algorithm
This will mostly be important for delta manifests,
which are yet to be implemented.
2020-09-05 04:51:20 +02:00
derrod f4a1e4610b [core] Skip savegame download if manifest empty 2020-08-06 09:28:35 +02:00
derrod 5b4a6e6d9f [downloader] Fix temporary file name in result handler 2020-08-06 09:28:25 +02:00
derrod bfbd86b01c Bump version to 0.0.19 2020-06-14 02:57:00 +02:00
derrod 0a5b53ab6f [cli/core/utils] Only remove files in manifest during uninstall
Some games are using the installation directory to store savegames.
To avoid deleting those, only remove files that are actually in the
manifest and only delete the directory if it is empty.
2020-06-10 18:21:47 +02:00
derrod 2647fa4915 [core] Do not sync DLC to EGL 2020-06-10 17:59:04 +02:00
derrod 4720b59d99 [core/cli] Fix typos in function names 2020-06-05 15:01:02 +02:00
derrod 8d46d7ad2e [core] Fix save path when downloading multiple saves 2020-06-04 15:55:16 +02:00
derrod 0e2a61aca5 [cli] list-installed: Show warning if game dir is missing 2020-06-02 12:12:42 +02:00
derrod 1ec6ef1899 [cli] launch: error out if game directory is missing 2020-06-02 12:12:03 +02:00
derrod 6d84307134 [core] Fix crash if EGL installation has been removed 2020-06-02 11:35:54 +02:00
derrod 2b2e91f372 [cli] Add --show-dirs option to print install directory 2020-06-02 07:54:51 +02:00
derrod 8ad6cd1e3d Bump version to 0.0.18 2020-06-01 21:22:14 +02:00
derrod dfa830a7f8 [lfs] Ensure EGL manifests are loaded when trying to delete 2020-06-01 20:42:09 +02:00
derrod 818ac59872 [cli] Add --disable-sync for egl-sync 2020-06-01 12:58:47 +02:00
derrod f8f134dd4b [core] Resolve WINE dos device mappings 2020-06-01 12:51:12 +02:00
derrod 5f2da28f51 [models] Enable JSON to binary manifest serialization 2020-06-01 11:20:26 +02:00
derrod de5a1095e0 [cli] Add flag to save/reset launch parameters in config 2020-06-01 08:40:00 +02:00
derrod c216341467 [core] Add wine_prefix config option 2020-06-01 08:36:06 +02:00
derrod a0329a73a9 [cli] Fix -y/--yes for egl-sync auto 2020-06-01 08:18:13 +02:00
derrod 50d6eb02fa [cli] Check and save path specified with --egl-manifest-path 2020-06-01 08:16:36 +02:00
derrod 92c6fd8601 [cli] Fix --egl-wine-prefix not setting programdata path 2020-06-01 08:13:47 +02:00
derrod 6051edc636 [cli] Show warning for incorrect -y/--yes usage 2020-06-01 08:12:24 +02:00
derrod 5eecabfb4a [cli/egl] Make EGL auth import work on Linux 2020-05-31 03:16:03 +02:00
derrod 211f65c4c6 [core/downloader/api] Update User-Agents 2020-05-31 02:37:37 +02:00
derrod c137affb92 Version 0.0.17 2020-05-31 02:04:53 +02:00
derrod 3063f02db3 [cli/core] Implement newer Epic authentication scheme
Fixes #52
2020-05-31 02:01:50 +02:00
derrod 1531177d8d [cli/README] Various changes to help texts 2020-05-30 22:56:20 +02:00
derrod 2309c4f428 Bump to 0.0.16 2020-05-30 22:32:07 +02:00
derrod 10cf1f7c00 [lfs] Ensure "Legendary" config section exists
Fixes #50
2020-05-30 21:15:13 +02:00
derrod d03701b3f7 [cli] Run sync even if users selects to not setup auto sync 2020-05-30 02:56:05 +02:00
derrod fb2af2b17a [core] Add more debug logging 2020-05-30 02:40:58 +02:00
derrod 3b5fc04829 [core] Keep EGL GUID when updating 2020-05-30 02:40:48 +02:00
derrod b601895536 Version 0.0.15 2020-05-30 01:30:09 +02:00
derrod 0b257e16dd [cli] Make sure -y works for egl-sync 2020-05-30 01:10:11 +02:00
derrod 918841a743 [cli] Add --yes alias for -y 2020-05-30 01:09:53 +02:00
derrod 028c2ca4e0 [cli] Add --egl-wine-prefix parameter for egl-sync setup 2020-05-30 01:07:45 +02:00
derrod a488d32502 [core] Fix game path on linux (\ vs /) 2020-05-30 00:49:48 +02:00
derrod 9dbc57ece7 [core] Abort export if manifest cannot be loaded 2020-05-30 00:49:30 +02:00
derrod 3380671b74 [core] Avoid recursion in egs_sync 2020-05-30 00:49:10 +02:00
derrod 0610b07bf3 [core] Do not attempt to fetch metadata if update_assets is not set 2020-05-30 00:48:54 +02:00
derrod d3c2769014 [core] Adjust game path when importing from EGL in WINE 2020-05-30 00:25:54 +02:00
derrod 9b545a82a8 [core] Fix egl_uninstall missing exception handling 2020-05-30 00:17:06 +02:00
derrod 9231df9d44 [cli] Improve Lutris EGS detection and ask user before using it 2020-05-30 00:16:25 +02:00
derrod 5dac4d51f8 [cli] Add --unlink parameter for egs-sync to remove syncing 2020-05-30 00:11:21 +02:00
derrod 867a661c9d [core] Also remove egl programdata path from config if invalid 2020-05-30 00:10:50 +02:00
derrod 7cb2717589 [models] Fix needs_verification being null 2020-05-30 00:05:03 +02:00
derrod 99485da7d8 [core] Reset EGL path if it is invalid 2020-05-29 23:53:07 +02:00
derrod b027bade1c [cli] Create EGL Manifest directory if parent exists. 2020-05-29 23:43:04 +02:00
derrod df566bb28f [cli] Use prompt helper for all y/n prompts 2020-05-29 23:09:21 +02:00
derrod 82f5adfaa4 [cli] Add egl-sync command 2020-05-29 23:09:02 +02:00
derrod 0b220cd19a [core] Add Epic Games Launcher import/export functionality
May contain bugs, right now it works but there are a few
hacks in there to deal with synchronization that may come
to bite me in the ass later.
2020-05-29 23:07:58 +02:00
derrod 70c559a7f9 [models] Always mark games as non-DLC and rename method
This will need to change if DLC support is ever added.
2020-05-29 23:07:00 +02:00
derrod e8a2df75fd [models] deepcopy EGLManifest input data 2020-05-29 23:06:15 +02:00
derrod 4ace27bbcc [lfs] Fix JSON writing and add delete_manifest method 2020-05-29 23:05:29 +02:00
derrod 09c8d1f80d [utils] Add cli helper for command line prompts 2020-05-29 23:04:58 +02:00
derrod 1d7d0eaa38 [core/cli] Import games installed via EGL w/o verification 2020-05-29 00:20:31 +02:00
derrod d9b0930006 [lfs] Cleanup/Rework Epic LFS to for Linux support 2020-05-28 23:10:58 +02:00
derrod b1ecce7aa3 [models] Add EGL installation manifest support 2020-05-28 23:10:15 +02:00
derrod 2e2bb3ad41 [cli/core/models] Add install size to installed games 2020-05-28 23:05:36 +02:00
derrod 5d4d46f7ea [core] Remove unused parameter 2020-05-28 22:58:14 +02:00
derrod da757ac18e [core] Also initialize Epic LFS on Linux 2020-05-28 22:45:08 +02:00
derrod 547ea4a2d4 [cli] Make list output more copy-paste friendly 2020-05-28 22:42:36 +02:00
derrod e3ad2d8de9 [core] Fix crash when game config section is missing 2020-05-28 22:41:31 +02:00
derrod 9867c5f492 [cli] Check for game exe on import and add check override 2020-05-28 02:40:12 +02:00
derrod f3f86836c8 [cli] Do not set type for --no-wine argument
Fixes #46
2020-05-27 21:18:02 +02:00
derrod e083b6f9b5 [core] Show error if game installation could not be deleted
Kinda fixes #44
2020-05-25 13:01:12 +02:00
derrod dad1c7f2c2 [core] Move getting manifest urls into separate function 2020-05-23 23:20:13 +02:00
derrod cddc58c46e README update and whitespace fixes 2020-05-23 19:02:13 +02:00
derrod 3d03d1a15d [cli] Apply strtobool to NO_WINE env var 2020-05-23 19:01:30 +02:00
derrod e4e4a0b7df [core] Add "no_wine" config option 2020-05-23 18:35:58 +02:00
derrod c52cd09eb7 [cli/core] Add env var for wrapper and fix priority
Priority should always be command line > env var > config
2020-05-23 18:33:11 +02:00
derrod 6c9e3a1d62 [cli/core] Add flag to disable WINE 2020-05-23 18:29:43 +02:00
derrod 76a0ef6be7 [cli] Treat misc. verification failures as missing 2020-05-23 16:57:06 +02:00
derrod 1ac1875a86 [models/utils] Catch and log exception when opening file fails 2020-05-23 16:55:18 +02:00
derrod e9a959e3a7 [core] Strip leading slashes from executable path
Fixes #42 and launching Hyper Light Drifter
2020-05-23 12:43:37 +02:00
derrod c7d3846118 [cli] Do not print help for repair alias 2020-05-22 14:39:01 +02:00
derrod 61c2db9b60 Bump version to 0.0.14 2020-05-22 14:34:03 +02:00
derrod de0b53710a [cli] Do not include timestamp in threaded logger 2020-05-22 14:31:59 +02:00
derrod 6b88d93576 [downloader] Clean up progress and other logging 2020-05-22 14:31:49 +02:00
derrod d62b45f899 [cli] Add message notifying users about the resumability of the downloads 2020-05-22 09:54:12 +02:00
derrod 38f5bbd934 [cli/core/models] Add support for importing already installed games
Fixes #10 though will need further improvement.
2020-05-20 14:06:55 +02:00
derrod 0d6bcf5950 [cli/core] Add support for launching games with a wrapper 2020-05-20 12:49:51 +02:00
derrod c904bbfa19 [cli/core] Add repair command/flag
Fixes #27
2020-05-20 12:44:45 +02:00
derrod 8ab63f0665 [downloader] Make resume file version-agnostic
This may result in less-optimal situations since
it effectively also disables patching. But it does
allow us to re-use the resume file mechanisms for
repairing broken installs.
2020-05-20 12:05:26 +02:00
derrod 9cc5d071d0 [utils] Return hashes from validate_files 2020-05-20 12:03:44 +02:00
derrod 5b2ebada78 [cli/utils/models] Add "verify-game" command to check game install 2020-05-19 18:29:16 +02:00
derrod 1622b415ea [core/utils] Move lfs helpers to utils 2020-05-19 17:45:46 +02:00
derrod 6278a21c77 [cli] sync-saves: Fix crash if metadata is missing 2020-05-19 16:14:20 +02:00
derrod 724ef4848c [downloader] Check if files in resume file actually exist
Also improves logging to make it obvious to users that a
resume file is being used.
2020-05-19 16:14:01 +02:00
derrod b89afeaefd [downloader] Check for success before adding to resume file 2020-05-19 14:46:59 +02:00
derrod 8cda65fd3e [core] Use and save existing base urls for manifest overrides 2020-05-19 14:44:45 +02:00
derrod 59f2ebb211 [core] Apply expanduser to config values as well 2020-05-18 10:59:38 +02:00
derrod 39f0d4c831 [cli/core/api] Allow setting locale/language
Fixes #35 as far as I can tell
2020-05-18 10:58:23 +02:00
derrod 812590db7c [cli] Fix crash if metadata does not have customAttributes 2020-05-17 15:36:34 +02:00
derrod ecf6572e5f [utils] Show warning if savegame got truncated during packing 2020-05-16 16:55:30 +02:00
derrod 099e222a80 [core] Return platform specific version if override is used 2020-05-16 16:48:45 +02:00
derrod 297d3b7690 Bump version to 0.0.13 2020-05-16 13:58:13 +02:00
derrod 7d919c1f2a [cli] Fix launch command on Windows 2020-05-16 13:57:57 +02:00
derrod 730eaebec9 [cli/core/models] Fix a whole bunch of cloud save issues
- Games that didn't already have cloud saves weren't synced
- Games that didn't have local saves didn't behave correctly
- Games that only had local saves also didn't work correctly
2020-05-16 12:50:28 +02:00
derrod 03c503b4e6 [core/utils] Show warning/info if no save files have been found
This should alert users in cases the exclude/include filters fail
2020-05-16 12:29:33 +02:00
derrod 8a60d1c436 Bum version to 0.0.12 and update README 2020-05-16 12:20:10 +02:00
derrod 8f656c5a25 [cli] Add flag to disable save game filtering 2020-05-16 12:19:44 +02:00
derrod 2ba036a654 [core/utils] Implement save game file filters 2020-05-16 12:19:06 +02:00
derrod e88a369feb [core] Honor existing installation directory
This prevents an issue where changing the base
path later on would cause an update to be written
to the wrong directory (or cause crashes).
2020-05-16 11:01:13 +02:00
derrod 532e1df237 [core] Show error if old manifest can't be loaded
Also prevents crashes.
2020-05-16 10:52:09 +02:00
derrod 289a1aa9e8 [core] Log if game installation directory does not exist 2020-05-15 12:38:27 +02:00
derrod 90dce6bd71 Version 0.0.11 2020-05-15 10:28:12 +02:00
derrod 0a41a043ac [api/downloader] Update user-agent 2020-05-15 10:25:39 +02:00
derrod d6abbcc694 Cleanup! (Remove shebangs, unused files) 2020-05-15 07:01:30 +02:00
derrod b6a701708b [lfs] Honor XDG_CONFIG_HOME env variables 2020-05-15 06:52:58 +02:00
derrod b55600f3e3 [cli] Allow specifying save path at install time
Also some minor cleanup
2020-05-14 16:40:27 +02:00
derrod 0f01e404a4 [cli/core/downloader] Support multiple filter arguments
Fixes #20
2020-05-14 16:32:08 +02:00
derrod d648d29810 [cli] Automatic DLC installation and cloud save notice 2020-05-14 16:04:03 +02:00
derrod 98df2a0a38 [cli/core/models/utils] Add basic cloud save syncing support 2020-05-14 14:52:33 +02:00
derrod 0df80773c0 [cli] Add --code and --delete options to auth command
--code allows specifying an exchange code directly, e.g.
       when the web authentication is handled by an external
       application.
--delete simply deletes the current authentication data.
2020-05-12 20:01:25 +02:00
derrod 36c1a9591f [utils] Add helper for packing save data
This helper creates manifests + chunks from
a given directory for uploading to the EOS
save game storage service.
2020-05-12 04:03:03 +02:00
derrod ffe65b5b86 [api] Add method for deleting cloud saves 2020-05-12 04:02:06 +02:00
derrod 6cfe7a74ea [models] Allow initializing ChunkPart values 2020-05-12 04:01:46 +02:00
derrod b0f5ea15a3 [models] return chunk/manifest bytes written 2020-05-12 03:59:21 +02:00
derrod 2945c6c91f [cli/core] Add flags/env vars to override WINE binary/prefix 2020-05-12 02:31:01 +02:00
derrod f9d56b8d0d [cli] Sort savegames by manifest and app name 2020-05-12 02:22:10 +02:00
derrod 8ae0fff1d7 [models] Support __setitem__ in CustomFields 2020-05-09 11:04:57 +02:00
derrod 8328a8ebaa [models] Calculate group_num based on GUID 2020-05-09 11:04:29 +02:00
derrod 17ea65d2da [models] Raise exception when chunk data too large 2020-05-09 11:03:54 +02:00
derrod 2c3bfdfd3a [models] Use random GUID when creating Chunk() 2020-05-09 11:03:14 +02:00
derrod 3257b869e2 [models] Add get_chunk_by_path to CDL 2020-05-09 11:02:31 +02:00
derrod d94d07a26b [models] Support file objects in manifest/chunk serialization 2020-05-09 11:01:54 +02:00
derrod 60845fce48 [models] JSON manifest do not support serialization 2020-05-09 11:00:41 +02:00
derrod ddd115812b [utils] Fix typo in rolling hash function 2020-05-09 11:00:13 +02:00
derrod 3329bdf9af [models] Set default meta feature level to 17 2020-05-09 04:26:44 +02:00
derrod bdd2a14350 [models] Add Chunk serialisation 2020-05-06 19:50:40 +02:00
derrod 5d91b2b59f [utils] Add FRollingHash implementation
Seems to be a variation on CRC-64-ECMA.
This python version is of course very slow.
That should not be a big issue however, since
it is only required for serialising rather
small save game data.
2020-05-06 19:49:45 +02:00
derrod efed0f07da [models] Set default manifest version to 17
This is what EGS currently delivers, and it also
appears there's a shorter header for some lower
versions so for compatibilities' sake just use 17.
2020-05-06 18:26:00 +02:00
derrod d10fa6c65c [models] Support manifest serialization 2020-05-06 18:21:26 +02:00
derrod 31530692ef [api/cli/core] Add extremely basic support for cloud saves
Currently only supports downloading all saves to a folder,
in the future it should support automatically extracting save
files to the proper directory (at least on Windows).
2020-05-06 15:40:04 +02:00
derrod 693ad3cefc Version 0.0.10 2020-05-05 16:27:14 +02:00
derrod b1ba25e2e0 [downloader] Improve reordering optimizations
With some titles such as Metro Exodus there is
even more duplication across files. While this
change does not manage to reduce the limit to
below the default 1 GiB limit, it does bring
it down by about 512 MiB.
2020-05-05 16:23:51 +02:00
derrod 67859fb4ac [downloader] Clean up unused parameter 2020-05-05 16:13:08 +02:00
derrod ac5856afe1 [utils] Apply reorder opts to Metro Exodus 2020-05-05 16:04:22 +02:00
derrod fefd414b8b [cli] Add --no-install alias for --download-only 2020-05-05 16:03:24 +02:00
derrod 9f7133362c [downloader] Make sure timeout is not None
Hopefully fixes #22
2020-05-05 16:03:12 +02:00
derrod 0e86791237 [downloader] Reformat manager 2020-05-05 13:21:55 +02:00
derrod 6f8da36947 [downloader] Update logging (more debug/cleanup) 2020-05-05 13:21:06 +02:00
derrod 27f11466d5 Version 0.0.9 2020-05-04 19:51:03 +02:00
derrod e54d13be37 [core] Add warning for EQU8 anti-cheat 2020-05-04 19:50:56 +02:00
derrod 441c619db0 [core] Fix disk space check 2020-05-04 19:50:44 +02:00
derrod 84bb14f252 Bump version to 0.0.8
This is to make sure downstream packages are upgraded
from the broken 0.0.7 release.
2020-05-04 16:33:24 +02:00
derrod 8e93b4923d Version 0.0.7 2020-05-04 14:30:15 +02:00
derrod 3a08d526d5 [cli] Update CLI descriptions 2020-05-04 14:25:00 +02:00
derrod 4d0ac96bdc [cli/utils] Add aliases to download command
Eventually the "download" command will be changed to
set the --no-install flag by default and "update" will
become --update-only. For now remain backwards compatible
to give people a chance to adjust their scripts and habits.

Fixes #18
2020-05-04 14:21:25 +02:00
derrod bd3095a6be [utils] Add new helper for game specific workaround
In the future we might extend this with other features,
such as specific post-install things that some games
may require to work or preconfigured WINE settings.
2020-05-04 14:08:35 +02:00
derrod df55f18a78 [cli/core/downloader] Increase timeout and make it configurable
Fixes #16
2020-05-04 14:08:26 +02:00
derrod 69383c4788 [cli/core/downloader/utils] Add download reordering optimization
This is an optimization that aims to fix issues with some titles
such as World War Z that have lots of duplicated files resulting
in a very high runtime cache requirement.

The basic idea is to group files that share lots of chunks together
so the data can be removed from the cache sooner.

For most games this has little to no effect. For some titles with heavy
duplication it can reduce the RAM usage significantly however. For
instance the RAM requirements for World War Z are reduced from 5.3 GiB
to 499 MiB.

Partially fixes #17
2020-05-04 14:06:25 +02:00
derrod 3f27ea0296 [downloader] Fix formatting of required cache size
Scientific notation is cool and all but not
particularly useful to most people.
2020-05-02 22:02:53 +02:00
derrod 261d0c636f [cli/core] Add some more logging 2020-05-01 19:57:42 +02:00
derrod 20a477d20f [core] Always get all base urls 2020-05-01 19:57:22 +02:00
derrod 5eb1b69c05 [models] Fix JSON manifest chunkinfo sha hash
This needs to be bytes() for __repr__() to work.
2020-05-01 15:15:39 +02:00
derrod e976d44fb9 [cli] Fix help metavar for install tags 2020-05-01 15:08:48 +02:00
derrod 5557dc63ae [cli] only print install tags if present
Most games don't seem to use them anyway.
2020-05-01 14:36:50 +02:00
derrod 9b5620ca30 [cli/core/downloader] Support filtering by install tags
Also adds tsv option for list-files and fixes
no_install not being set with --exclude.

Install tags are only present in some titles, I'm not
entirely sure how EGL uses them. Perhaps to allow one
manifest to be used on different platforms? Or to only
download extra assets when the user wants to?

Either way, it's another filtering feature that may be
useful, though for now it's mostly another toy to explore
EPIC's distribution system with.
2020-05-01 14:34:34 +02:00
derrod 531af3f586 [cli/core/downloader] Add --exclude option to ignore files when downloading
Useful to exclude unnecessary files such as redistributables.

Can be used together with --prefix to exclude files that would
still match the specified --prefix.
2020-05-01 10:43:55 +02:00
derrod c287649e07 [cli] Make app name optional for "list-files"
If reading from a file/url the app name is not necessary.
2020-04-30 12:31:23 +02:00
derrod dc68617212 [cli] Change --prefix-filter to --prefix 2020-04-30 12:23:23 +02:00
derrod 5a197fe6a9 Version 0.0.6
'Residue Processing' is a fitting codename given all the cleanup...
2020-04-30 12:08:22 +02:00
derrod 39bfb47d75 [cli] Add csv/tsv option to list commands
Closes #6 and #13
2020-04-30 12:03:23 +02:00
derrod 31bf74b33d [cli] Set no_install flag when using --prefix options 2020-04-30 11:49:33 +02:00
derrod c9392ca22c [models] Clear raw data in manifest after it has been read
Minor optimization to save some RAM, especially for JSON manifests.
2020-04-30 11:44:43 +02:00
derrod 7dacd7ba35 [cli/core] Fix manifest saving/loading
The refactoring didn't take into account that the raw
manifest data still needs to be accessible. Since I did
not want to modify the manifest model to hold the raw
data (waste of RAM), just make the methods return the
raw data again (at least for now)
2020-04-30 11:42:09 +02:00
derrod 8b63c482c1 [cli] Add new "list-files" command to list files in a manifest
Useful for use with the new --prefix option to search for which
prefix to use for the files you want to download.

Also supports creating a file usable with sha1sum/hashcheck to
verify a local installation manually as well as outputting the
list in csv format for other uses.
2020-04-30 11:14:18 +02:00
derrod 6788b1257c [core] Refactor manifest loading 2020-04-30 11:10:34 +02:00
derrod 8f7db143a6 [downloader] Greatly simplify download task creation
This is a change to something that was so massively stupid and
overcomplicated that I feel like I need to explain and justify myself:

After figuring out the format for manifests and spending countless
hours staring at IDA/Ghidra I kinda was sick of that, so I decided to
figure out what to do with the manifest myself by playing around with
it, which was also a lot more fun than looking through disassembly.

When looking at the chunks and files it quickly became obvious that the
way they're created is by concatenating all files into 1 MiB chunks that
can be downloaded and reassmebled (mostly) sequentially. What I did not
know was how the order of files in this "stream" was determined.

In playing around with it I came up with the old method: essentially
forming a chain of files, because each file's end generally pointed to
the start of the next file. And it worked great! At least until now...

Yesterday somebody alerted me to a game where this failed and it took me
a bit to figure out. Essentially the chaining had failed because
multiple files started at the same offset, but some of them would follow
another chain that never went back to the chunk it started at,
effectively skipping those files. This was rather annoying to deal with,
I came up with a workaround but it wasn't pretty. So I decided to jump
back into IDA/Ghidra and find out how Epic does it for real.

Well it took me a while, but thanks to symbols (yay macOS!) and a decent
decompiler in Ghidra even a noob like me was able to find it eventually.
The answer is as simple as it can be: the files are sorted alphabetically
(case-insensitive).

So really all I ever had to do was to sort files alphabetically and then
run through them to create the list of tasks.

I feel so stupid.

P.S.: I tested a few games and for the most part the resulting file
processing order is identical between the old and the new method. The
cases where it differs is when there's heavy de-duplication happening
(e.g. Diabotical's small model files) but the runtime cache size remains
the same so both methods are equally efficient, the old one just can't
handle certain cases.
2020-04-30 11:05:26 +02:00
derrod ef0ea26372 [cli/core/downloader] Add support for filtering downloaded files by prefix 2020-04-29 22:08:28 +02:00
derrod d61ce7dc6d [models] Support manifests metas with build ids 2020-04-29 21:39:14 +02:00
derrod 6e5e281c82 [core] Fix pre-installation warnings
- Make errors unique
- FNA/XNA games don't seem to really work with WINE.
2020-04-29 15:41:21 +02:00
derrod 209ba2dd81 [core] Remove unnecessary OVT path adjustments
Not only does this not work (path.join() will not
actually add Z: on non-Windows), it's also not necessary.

Confirmed to work with Detroit: Become Human (Demo) and
Just Cause 4.
2020-04-29 15:16:17 +02:00
derrod 63ff306fbf [cli] Fix offline flag 2020-04-29 14:05:30 +02:00
derrod ba7133d7d6 [cli] clean up imports 2020-04-29 10:56:47 +02:00
derrod eaf77abe97 Version 0.0.5 2020-04-28 15:58:34 +02:00
derrod 9613ad34ba [core] Log when manifest/base url is being overridden by the user 2020-04-28 15:56:52 +02:00
derrod 2eac83f6d1 [models] Add missing flags to FileManifests 2020-04-28 15:55:19 +02:00
derrod 8251db22d2 [cli/core] Allow overriding platform and UE filter in list-games 2020-04-28 15:32:38 +02:00
derrod e0b4769af2 [cli/core] Add option to override platform when downloading
This can be used to download Mac or 32-bit builds if desired.

For example: legendary download Corydalis --platform Mac
Will download the Slime Rancher macOS build.

Closes #12
2020-04-28 15:12:17 +02:00
derrod 79dc7d03a4 [api] Allow specifying label and platform in API requests 2020-04-28 14:51:00 +02:00
derrod f5861546b4 [core] Support manifest URLs with CDN authentication 2020-04-28 07:57:10 +02:00
derrod e822a8f7bf [core] Fix OwnershipToken path for WINE
Fixes #2
2020-04-28 06:28:23 +02:00
derrod 89fe49aa4d [core] Add warning for BattlEye anticheat
Closes #8
2020-04-28 06:20:25 +02:00
derrod 2be1d367df [cli] Add version and release codename to help 2020-04-28 06:14:17 +02:00
derrod 0d08263afa [lfs] Return empty installed list if installed is None
Fixes #9
2020-04-28 06:13:03 +02:00
derrod e44a00d37f [downloader] Cap worker processes at 16 2020-04-28 06:12:30 +02:00
derrod 7bf517aa00 [models] Fix build id string creation 2020-04-27 14:31:12 +02:00
derrod 1da92fe341 Version 0.0.4 2020-04-26 14:58:40 +02:00
derrod 1b3ef31963 [cli/core] Fix config offline and environment overrides 2020-04-26 14:58:09 +02:00
derrod b9b459d527 [cli] Fix missing space breaking URL in log message 2020-04-26 13:37:35 +02:00
derrod 6895f25fbb Version 0.0.3 2020-04-26 13:24:15 +02:00
derrod f4b1605b92 [core] Minor improvements for DLC/logging 2020-04-26 13:20:54 +02:00
derrod 50bd35683f [cli] Minor adjustments to parser setup and readability 2020-04-26 13:20:11 +02:00
derrod 0485a728e3 [cli/downloader] Migrate to Queue based logging for subprocesses 2020-04-26 13:19:28 +02:00
derrod 035e23b964 [core/lfs] Clean up local manifest saving/loading 2020-04-25 23:06:46 +02:00
derrod 8f23770e43 [core] Add warning for games that are not marked for offline use 2020-04-25 22:54:18 +02:00
derrod ec97cef264 [core] Add additional warning for Ownership Token requirement 2020-04-25 12:20:55 +02:00
derrod c20619d6e7 [cli] Rework CLI
- Class instead of giant main() function
- Uses subparsers for commands (cleaner)
- Will make future enhancements easier
2020-04-25 12:20:14 +02:00
derrod 96602d1890 [downloader/models] Minor code cleanups 2020-04-25 10:18:45 +02:00
derrod f1885639ae [downloader] Remove unnecessary imports 2020-04-25 09:25:12 +02:00
derrod 0e81b87fac [cli] Simplify "is game installed" check 2020-04-24 06:38:11 +02:00
derrod d8b629a66d [cli] Simplify manual login procedure 2020-04-24 06:37:40 +02:00
derrod a59107e503 [core/lfs] Load correct old manifest file after aborted installation
If a user were to start and then abort an installation previously
we would have loaded the downloaded new manifest, rather than the
one of the installed version. By explicitly setting the version
we can avoid this.
2020-04-24 06:29:22 +02:00
derrod 78d745b03f [downloader] Fix log message and close shared memory on exit 2020-04-21 20:26:17 +02:00
derrod 04cc72d154 [downloader] Make read speed actually work (somewhat) 2020-04-21 20:25:26 +02:00
derrod a8a0be5bd2 [downloader] Fix file patching for real this time
Missed this one m(
2020-04-21 20:18:19 +02:00
derrod be8e0169d4 [downloader] Check if resume file actually exists before trying to delete it 2020-04-21 20:05:03 +02:00
derrod 0b6824ba58 [core] Add status queue parameter for UI updates 2020-04-21 20:01:00 +02:00
derrod c388c0d516 [cli/core] Add overrides for old manifest and install dir 2020-04-21 19:59:58 +02:00
derrod c9961f4435 [downloader] Fix patching games with reused chunks 2020-04-21 19:56:34 +02:00
derrod a2197aec12 [models] Add build id to manifest meta 2020-04-21 16:55:47 +02:00
derrod 988be667df [core] Simplify game installation directory code 2020-04-20 01:27:41 +02:00
derrod c2ae5b7367 [core] Allow default env/wine overrides in config 2020-04-20 01:27:36 +02:00
derrod 92a0003e6f [core/lfs] Fix old manifest saving and install version saving 2020-04-20 01:27:28 +02:00
derrod feed5735d4 [downloader] Remove resume file after installation finishes 2020-04-20 01:27:22 +02:00
derrod 0b2917d1eb [cli] Ask for verification before installing/uninstalling 2020-04-20 01:27:16 +02:00
derrod 662f6e7bd0 [cli/core/models] Add basic support for DLCs 2020-04-20 01:27:06 +02:00
derrod 0031e5908a [api/core] Overhaul session resume and verify session validity 2020-04-20 01:27:01 +02:00
derrod 5eb51dfd11 [api/core/models] Add support for "Ownership Token"
Ownership verification tokens appear to be part of EPIC's DRM scheme,
they're basically just a JSON file with a token in it that's downloaded
from their API before launching.

This fixes launching games such as Just Cause 4.
2020-04-20 01:26:44 +02:00
derrod ce28ce2914 [core] Fix session reuse not checking if expiry is after now
Since total_seconds() just returns a positive number with the difference
we have to make sure we're actually still before the expiry time.
2020-04-20 01:25:59 +02:00
derrod e00e534f2c First public test version of legendary
Unfortunately the history from before this commit is lost to time. And
that's probably for the best.
2020-04-14 15:40:41 +02:00