Commit graph

270 commits

Author SHA1 Message Date
derrod 005089ee9b [core] Adjust default install paths
- Native Mac apps should go into /Applications
- On Windows we keep %USERPROFILE%\legendary for now
- On Linux we use ~/Games/legendary now to keep the home folder more tidy
2022-01-04 15:11:43 +01:00
derrod 8e4bb8d3dd [core] Fix required disk space calculation, once and for all 2022-01-02 13:08:14 +01:00
derrod 05aac59836 [cli/core] Allow bottle downloads to specify a base url 2021-12-31 21:24:47 +01:00
derrod 8a9ca14391 [core] Remove unnecessary os check 2021-12-31 18:56:30 +01:00
derrod 0298a53315 [cli/core/utils] Add (janky) EOS overlay install support on non-Windows 2021-12-31 18:48:07 +01:00
derrod ecb230511f [core/utils] Clean up crossover bottle code a bit 2021-12-31 17:46:15 +01:00
derrod cd74af8832 [core] Fix remove_bottle parameters 2021-12-30 19:04:44 +01:00
derrod 0f481e1f31 [core/utils] Remove missing folder creation
Instead, the manifest will just use zero-byte ".keep" files in empty
folders, so they are still created when a bottle is downloaded.
2021-12-30 18:09:11 +01:00
derrod 013792f7b9 [cli/core/utils] Add experimental automatic bottle setup
Not sure if this will make it into the release yet, but
it doesn't seem like a bad idea. And it should work even
if the user has never run CrossOver.

It's quite a lot of work to package a bottle this way
(read: not including personal data, and without broken symlinks)
2021-12-30 17:21:56 +01:00
derrod 03ef95923d [api/cli/core] Make API timeout configurable 2021-12-30 12:03:43 +01:00
derrod dd099c0afd [core] Change overlay install path 2021-12-30 11:52:23 +01:00
derrod 2adc0b1a3e [core] Avoid unnecessary disk writes when assets didn't change 2021-12-29 20:29:07 +01:00
derrod 3d877185b0 [core] Add support for launching via CrossOver 2021-12-29 13:21:34 +01:00
derrod 0e4ab85b2f [core] Do not attempt to load overlay info on non-Windows systems 2021-12-29 11:32:11 +01:00
derrod bc1c27b8d2 [core] Ignore path parameter if overlay is already installed 2021-12-28 19:21:33 +01:00
derrod 8d71df0cc4 [cli/core/lfs] Add update check for installed overlay 2021-12-28 17:48:24 +01:00
derrod efaf25b9d9 [cli/core/lfs] Add EOS overlay management command/backend
- Supports installing and updating the overlay
- Supports enabling/disabling the overlay
- Can find existing EGL overlay for enabling/disabling
- Should work!
2021-12-28 17:47:48 +01:00
derrod fbb4acbc88 [core] Add option to force refresh token instead of session resumption 2021-12-28 10:57:22 +01:00
derrod 3e4c70ece2 [core] Only use installed manifest for repair if it actually exists
Fixes #380
2021-12-20 23:15:47 +01:00
derrod c3ade2994e [cli/core/utils] Re-enable SDL for Mac platform
Currently, this only affects Fortnite and UE.
2021-12-17 01:25:24 +01:00
derrod 57d88b2db4 [core] Fix non-threaded metadata updates 2021-12-08 00:44:24 +01:00
derrod 9d18ef03fa [cli/core/models] Add property for partner link id/type 2021-12-06 18:10:30 +01:00
derrod 694a275dac [core] Fix platform linking warning 2021-12-03 18:08:21 +01:00
derrod c8189460c2 [cli/core] Fix some plurals 2021-12-03 17:21:48 +01:00
derrod 1c8349a28e [core] Do not show fetching metadata message unless there's data to fetch 2021-12-03 17:14:45 +01:00
derrod 20f934dc12 [core] Avoid unnecessary copy() 2021-12-03 16:27:19 +01:00
derrod 8dadf3c1a1 [core] Do not delete unused asset information when updating
Previously this would remove asset information for platforms not
currently in-use. This change retains those, but doesn't update
them if they're not required.
2021-12-03 16:27:00 +01:00
derrod d737ca57a7 [core/egs] Use thread pool for fetching metadata 2021-12-03 16:23:48 +01:00
derrod 5671448264 [core] Rework Uplay warning 2021-12-03 14:30:01 +01:00
derrod 90a4efdfbf [core] Fix path expansion for macOS savegame variables 2021-12-02 17:05:50 +01:00
derrod 32e9ef1cd3 [core] Fix wrong property name for SaveGame 2021-12-02 16:55:02 +01:00
derrod 9511d9d65b [core] Fix metadata prune removing required data 2021-12-02 16:53:09 +01:00
derrod 6f7989ab50 [cli/core/utils/lfs] Also enable update notification on macOS 2021-12-02 16:51:48 +01:00
derrod 1dfc5aabe7 [cli/core/models/utils] macOS cloud save support 2021-12-02 15:24:01 +01:00
derrod 7151470197 [core] Fix getting game metadata for new titles 2021-12-02 15:10:54 +01:00
derrod 4fd50a93a0 [core] Always update asset information for all in-use platforms 2021-12-02 14:29:08 +01:00
derrod 356f0f84f5 [cli/core/models] Access namespace/catalog item id directly 2021-12-02 14:28:21 +01:00
derrod 42aae4eccf [core] Do not show locale error on macOS 2021-12-01 21:59:53 +01:00
derrod f00d23c8c4 [core] Cleanup imports 2021-12-01 21:58:56 +01:00
derrod 0fb3d39a0a [core] Check if game is not-None before updating asset info 2021-12-01 21:38:44 +01:00
derrod c83bf7218c [core] Remove remaining hardcoded platform strings 2021-12-01 21:30:41 +01:00
derrod 8c56bd93d5 [core/lfs] Include platform in saved manifest name 2021-12-01 21:26:21 +01:00
derrod 081cca2c19 [core] Check all platforms for metadata prune 2021-12-01 21:20:11 +01:00
derrod e8207d53cd [cli/core] Ensure update checks use the right platform(s) 2021-12-01 21:02:38 +01:00
derrod f280d53496 [cli/core/lfs] Add support for mixing platforms 2021-12-01 20:57:43 +01:00
derrod c43833146a [core] Subtract reusable size from required disk space
Fixes #362
2021-10-29 17:30:16 +02:00
derrod 33ad64f0a4 [core] Only fail if absolutely no base-url can be found
Overrides without a known base-url should work.
2021-10-28 10:34:28 +02:00
derrod aaf7e0934f [core/utils] Attempt to find save path case-insensitively 2021-10-22 04:29:39 +02:00
derrod 106ed16a49 [cli/core] Do not delete merely incomplete saves unless user says so 2021-10-21 14:27:08 +02:00
derrod 658cc94dbe [core] Include app name in clean-saves command for specific game 2021-10-21 14:11:53 +02:00
derrod 8181f9faeb [core] Log number of deleted files (if any) 2021-10-21 14:10:14 +02:00
derrod 964ee08d05 [core] Add references to "clean-saves" in error message 2021-10-21 13:28:33 +02:00
derrod 355b1107e6 [cli/core] Add "clean-saves" command to remove obsolete/broken cloud save data 2021-10-21 13:26:36 +02:00
derrod 85a275950d [core] Show warnings and error out if save data is corrupted 2021-10-21 13:26:00 +02:00
derrod d5ec14b556 [core] Fix resolving "{AppData}" in save path
Why did they decide that {AppData} should match to %LOCALAPPDATA%?
2021-10-21 12:15:44 +02:00
derrod 0ef916e9c5 [cli/lfs] Prune game metadata that's no longer needed 2021-10-16 19:44:48 +02:00
derrod 8c002a76e0 [cli/core] Replace old manual game store query with new property 2021-10-16 19:44:15 +02:00
derrod 841db6bcb6 [core] Add "asset_available" helper function 2021-10-16 18:59:18 +02:00
derrod e6bb64f16f [core] Only delete files that are actually installed (based on tags) 2021-10-12 15:24:49 +02:00
derrod 0bc543518c [core] Properly construct Origin launch URI 2021-10-10 12:30:25 +02:00
derrod 74bc2fecc0 [core] Check if base path exists, add failure condition if it doesn't 2021-10-10 08:36:36 +02:00
derrod aafba86a94 [core] Validate session expiry time before skipping login 2021-10-08 10:36:32 +02:00
derrod 9471ca41e1 [core] Do not check egstore folder for DLC 2021-10-08 10:17:15 +02:00
derrod b3b5470947 [core] Make auth() return immediately if already logged in 2021-10-08 10:15:07 +02:00
derrod b857967dfa [cli/core] Add WebView killswitch to Legendary update data
In case epic breaks it, this at least lets us disable it remotely.
2021-10-07 05:20:08 +02:00
derrod c4695d2b99 [cli/models/lfs] Clean up some old code/comments 2021-10-05 09:22:17 +02:00
derrod 8460fdfd2a [cli/core/lfs] Add support for trying multiple encryption keys
Should Epic change the key used for EGL in the future we want to
be backwards-compatible to existing (outdated) EGL installs as well
as new ones without having to push out a new release.

Also forces updating of version data before attempting the import to
get the latest key(s) and adds a log message when auth data is deleted.
2021-10-05 07:34:52 +02:00
derrod 638578283b [core/utils/lfs] Fix auth import with now encrypted EGL user data
It took way too long to find the key.
It's not even hidden, I'm just dumb.
2021-10-04 09:26:44 +02:00
derrod e7ce2e5cb7 [core] Force-refresh aliases when fetching games without assets 2021-10-02 21:21:46 +02:00
derrod 0d8b74a9e0 [cli/core/utils/lfs] Add automatic alias generation 2021-10-02 21:10:25 +02:00
derrod 7509550eb1 [cli/core] Add option to force refresh game metadata 2021-09-28 05:56:19 +02:00
derrod a1993eb568 [core] Refactor getting wine/wrapper launch command into its own function 2021-09-28 05:21:16 +02:00
derrod b5d4224664 [cli/core] Only return legendary-defined environment variables 2021-09-28 05:07:06 +02:00
derrod 888d62a96d [cli/core/models] Refactor launch parameters and add --json option
Primarily intended to make it easier for third-party applications
(mainly Heroic) to handle launch options on their own by simply
taking the necessary information from legendary and ignoring
user-defined stuff.

Also useful for debugging.
2021-09-28 04:06:54 +02:00
derrod ee2432c443 [cli/core/lfs] Allow specifying custom config file 2021-09-28 03:07:15 +02:00
derrod e881e42d5f [core] Save non-install game metadata 2021-09-18 20:02:52 +02:00
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 6b4cf6558b [core] Warn if parsing manifest-defined launch parameters fails 2021-09-09 09:55:48 +02:00
derrod 0bf7110653 [core] Move getting env vars to separate method 2021-09-08 10:37:40 +02:00
derrod b12798e6b0 [cli/core/lfs/utils] Fetch SDL data from API 2021-09-05 09:41:54 +02:00
derrod 791bc77c7c [core/lfs] Enable update notification for PyInstaller on Linux 2021-09-05 00:49:11 +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 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 d3026672d1 [core] Fix for epic authentication API changes 2021-09-03 19:16:37 +02:00
derrod a465966954 [api/cli/core/lfs] Add Legendary update check 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 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 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 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 bb3d6f9348 [core/utils] Improve minimum disk space calculation when updating 2021-06-17 15:00:34 +02: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 3c71229b7e [core] Fix missing {} around KnownFolders GUID 2020-12-26 22:01:30 +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 1a015a3ba7 [core] Only attempt to delete untagged files that exist 2020-12-18 17:01:52 +01:00
derrod 1cec4c6cb0 [core] Add method to remove untagged files 2020-12-17 15:25:01 +01:00
derrod 86ea066e8d [core] Save install tags to InstalledGame 2020-12-17 15:23:06 +01:00