Commit graph

740 commits

Author SHA1 Message Date
derrod d7360eef3e [utils] Remove unnecessary JS callback
This seems to be no longer used or required for the webview login to work.
2022-02-02 18:36:08 +01:00
derrod 7ac9ec7b5f [cli] sync-saves: Skip unconfigured games when using --yes 2022-01-26 14:12:48 +01:00
derrod b7ad4daeb2 Bump version 2022-01-23 13:11:05 +01:00
derrod 869c749908 [core] Return empty games list if assets empty 2022-01-21 17:47:54 +01:00
derrod 3793601de3 [cli] Add --migrate flag to egl-sync command
This will import the games into Legendary and then remove them from EGL.

Also updates info messages for --unlink.
2022-01-20 14:19:20 +01:00
derrod 858d2f98e6 [cli] Move user parameters before EGL parameters
Some games appear to fail parsing the command line correctly otherwise.
2022-01-18 16:11:07 +01:00
derrod 158b28eaff [core] Add "epicsandboxid" launch parameter
EGL seems to have added this at some point.
Omitting it doesn't seem to break anything.
But better safe than sorry.
2022-01-18 16:10:12 +01:00
derrod 778ecacbd3 [core] Apply disable_https to manifest downloads as well
Since we know the hash ahead of time this is relatively low-risk.
Delta manifests don't have an associated API call that would tell us
the hash, so still use HTTPS for those unless the base url is overridden.
2022-01-18 10:25:04 +01:00
derrod 180692195f [core] Catch FileNotFoundError when removing synced EGL manifest 2022-01-18 10:16:06 +01:00
derrod 3bc819e567 [core] Check install directory for write access
Fixes #395
2022-01-10 17:14:30 +01:00
derrod 742d3a3b05 [core] Verify CDN manifest hash 2022-01-10 17:00:45 +01:00
derrod cf95da395c [cli] Error out if no overlay installs found 2022-01-10 16:28:42 +01:00
derrod 66a30d6b2a [cli] Log Uplay activation errors in API response 2022-01-10 14:42:01 +01:00
derrod e6da49d0bf Bump version 2022-01-10 00:50:50 +01:00
derrod f21ecf1eda [cli] Fix old command name aliases not actually working 2022-01-10 00:41:11 +01:00
derrod a25de242d9 [cli/core/models] Add config option for pre-launch command 2022-01-09 14:21:11 +01:00
derrod 4ab0c99a0f Bump version 2022-01-08 22:30:24 +01:00
derrod 49cc8db22f [core] Add None check to get_game_tip() 2022-01-08 22:10:01 +01:00
derrod be4c1b1cda [cli] Re-add missing f-String prefix 2022-01-08 16:53:15 +01:00
derrod 1c6e83e9f8 [cli] Make game compatibility tip more obvious 2022-01-08 16:50:17 +01:00
derrod a48bad9999 [cli] Show app-compatible bottles as recommended rather than default 2022-01-07 17:35:04 +01:00
derrod 710f5d07d7 [cli] Also add some additional whitespace to install command output 2022-01-07 17:24:30 +01:00
derrod 8d28945e8b [cli/core] Optionally show link to wiki article on game install
This is supposed to make setup easier for games with know issues.
Perhaps in the future this can also be shown on launch.
2022-01-07 16:38:52 +01:00
derrod ed1cbfc87e [cli] Select default app based on app compatibility 2022-01-07 16:30:04 +01:00
derrod f7f13ed749 [cli] Add "move" command to move existing game installations 2022-01-07 16:22:24 +01:00
derrod ce68ae87bf [cli] Drop unnecessary "game(s)" from command names
Aliases make sure that users can still use legendary as usual,
but they may be removed in the future
2022-01-07 16:22:24 +01:00
derrod 58bd76c39e [cli/utils] Reintroduce custom parser for hidden aliases
I don't want to break people's muscle memory, but I also don't want
to have the help output be messier than it needs to be.
2022-01-07 14:32:36 +01:00
derrod cf8bccc569 [core] Final adjustments to default path, separate config option for Mac 2022-01-07 13:51:25 +01:00
derrod 8f2d42892b [cli/utils] Remove custom subparser (no longer required)
Apparently this was *never* required? I just didn't know?

Genuinely I have no idea what made me add this.
2022-01-05 19:56:01 +01:00
derrod df1c3e6a3c [core] Handle legacy AppData paths on Linux and Mac 2022-01-05 19:56:01 +01:00
derrod 48baba6adc [core] Try to resolve legacy AppData paths when using CrossOver 2022-01-05 19:56:01 +01:00
derrod 557724339d [utils] Fix case-insensitive path searcher 2022-01-05 19:56:00 +01:00
derrod b30de01cc7 [core] Also look for CrossOver bottle in get_save_path 2022-01-05 19:56:00 +01:00
derrod 586aeaf6de [cli] Do not set a default bottle choice if known names not found 2022-01-05 19:56:00 +01:00
derrod 9bcfb15cf8 [cli] Use two spaces instead of tabs in CrossOver choice lists 2022-01-05 19:56:00 +01:00
derrod ba1e05af53 [cli] Add option to disable CX version check 2022-01-05 14:37:51 +01:00
derrod 976b7cebf0 [cli] Add some whitespace to make console less cramped 2022-01-05 14:37:51 +01:00
derrod cc5c7a90b8 [cli] Check CX version against list rather than string 2022-01-05 14:28:31 +01:00
derrod 4bccd460ad [core] Create parent directories of symlinks if required 2022-01-05 14:24:46 +01:00
derrod ac5af04980 [utils] Fix CrossOver running check detecting the CD helper 2022-01-05 14:21:24 +01:00
derrod de3f3f93af [cli] Do not try to delete (~)/Applications on macOS
It would fail, but is not considered polite either.
2022-01-04 15:39:24 +01:00
derrod 840210040f [core] Use ~/Applications on Mac, only omit game folder for .app root dirs 2022-01-04 15:31:48 +01:00
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 bec119bc03 [cli] Accurately track verified file size 2022-01-04 12:11:46 +01:00
derrod ecb04324d5 [utils] Show speed while verifying large files 2022-01-04 12:11:24 +01:00
derrod cea5f42425 [cli] Run preqreq installers in shell mode and handle exceptions 2022-01-03 16:03:00 +01:00
derrod 9a3652086b [cli] Show average disk read speed during verification 2022-01-03 15:32:32 +01:00
derrod d3ea2c6cfd [utils] Show more verbose verification progress with large files 2022-01-03 15:02:19 +01:00
derrod cc44149e68 [cli] Fall back to "Windows" platform by default 2022-01-02 13:17:18 +01:00
derrod e44998b786 [cli] Hide and add warning to automatic bottle setup for now
Needs some more testing to see if this is actually viable.
2022-01-02 13:10:42 +01:00
derrod 8e4bb8d3dd [core] Fix required disk space calculation, once and for all 2022-01-02 13:08:14 +01:00
derrod 202f07973a [downloader/models] Calculate maximum disk space delta during installation 2022-01-02 13:06:59 +01:00
derrod 05aac59836 [cli/core] Allow bottle downloads to specify a base url 2021-12-31 21:24:47 +01:00
derrod edadf1c780 [cli] Fix argument dest for --bottle 2021-12-31 18:59:34 +01:00
derrod 0a63b8b007 [cli] Also fall back to default if no app-specific config exists 2021-12-31 18:58:36 +01:00
derrod 6a408e8404 [cli] Log prefix used / error if it doesn't exist 2021-12-31 18:56:52 +01:00
derrod 8a9ca14391 [core] Remove unnecessary os check 2021-12-31 18:56:30 +01:00
derrod 4a4e1397d4 [utils] Add missing null check 2021-12-31 18:50:05 +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 d15f05fc60 [utils] Add janky WINE registry manipulation 2021-12-31 17:31:04 +01:00
derrod 08267025b4 [cli] Stop adding registry entries that already exist 2021-12-31 17:06:44 +01:00
derrod 9469d3cb6f [cli] Add crossover parameters to skip interactive selection 2021-12-31 14:48:08 +01:00
derrod 2e6335bf09 [cli/utils] Simplify imports 2021-12-31 14:44:32 +01:00
derrod 688910bf91 [cli] Make --yes work with crossover command 2021-12-31 14:38:23 +01:00
derrod e771ccdf19 [cli] Fix conflict between timeout/third-party flags 2021-12-31 14:35:05 +01:00
derrod a4c6dee7ef [cli] Allow downloading a bottle more than once 2021-12-30 19:16:29 +01:00
derrod d70f0daa22 [utils] Fix get_integer_choice behaviour
In my defense, the original function was 100% generated by
GitHub Copilot.
2021-12-30 19:05:23 +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 3fed7d2614 [api] Treat timeout <= 0 as no timeout 2021-12-30 17:42:18 +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 8512a9a7a1 [utils] Also only allow two empty invalid inputs 2021-12-30 17:11:52 +01:00
derrod af08f5d11b [cli] Fix overlay install error message (no resume) 2021-12-30 16:25:02 +01:00
derrod dfaccba2cb [cli] Fix crossover subcommand name 2021-12-30 15:36:03 +01:00
derrod fc66f9f372 [downloader/mp] Also kill workers on interrupt if they don't exit themselves 2021-12-30 14:34:02 +01:00
derrod 2474c43b7b [cli] Move crossover setup to its own command 2021-12-30 14:16:19 +01:00
derrod 300110e2bc [cli] Add CrossOver support to Origin launch 2021-12-30 14:03:50 +01:00
derrod b8e5dac0d6 [cli] Fix wrong argument being set during import
Fixes #391
2021-12-30 12:49:07 +01:00
derrod 3cba1c8510 [cli] Sort commands alphabetically 2021-12-30 12:42:05 +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 99c97032b4 [api] Fix GQL API requests
These need to use a different User-Agent for some reason.
2021-12-29 21:14:59 +01:00
derrod 2adc0b1a3e [core] Avoid unnecessary disk writes when assets didn't change 2021-12-29 20:29:07 +01:00
derrod 0d491aed90 [cli] Improve CrossOver option help text 2021-12-29 13:21:34 +01:00
derrod a0da79bc2c [cli] Add support for launching with CrossOver on macOS 2021-12-29 13:21:34 +01:00
derrod f0f4b545f5 [utils] Add get_int_choice helper 2021-12-29 13:21:34 +01:00
derrod 3d877185b0 [core] Add support for launching via CrossOver 2021-12-29 13:21:34 +01:00
derrod b5a2fba896 [utils] Add helpers for CrossOver on macOS 2021-12-29 13:21:34 +01:00
derrod 33b89f5e9a [cli] Suggest "info" command to check for platform support
rather than having the user search through a potentially very long
games list...
2021-12-29 13:21:34 +01:00
Wok 75f2da576b [api] Fix wrong attribute name (#388) 2021-12-29 13:21:34 +01:00
derrod d2a6f16060 [cli] Fix log level for launch message 2021-12-29 11:56:16 +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 e5ba44ecfa [cli] Show both current and new version in Overlay update notice 2021-12-28 18:17:13 +01:00
derrod b5120fa99d [lfs] Cache overlay info in memory to avoid unnecessary reads 2021-12-28 18:14:59 +01:00
derrod 4a743dc1ca [cli] Fix overlay install path check on install 2021-12-28 17:51:35 +01:00
derrod c7030c480e [lfs] Fix log message 2021-12-28 17:48:55 +01:00
derrod cb69d7c9d7 [utils] Add more debug logging 2021-12-28 17:48:45 +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 21d62dcd76 [downloader/mp] Fix status message formatting for odd cache usage 2021-12-28 17:39:10 +01:00
derrod b6cb31df8b [cli/models/utils] Move strtobool into legendary utils
Fixes deprecation warning on Python 3.10+
2021-12-28 17:37:26 +01:00
derrod 1fd8acdee4 [cli] Use argparse choices instead of manual check 2021-12-28 14:21:11 +01:00
derrod 599e4766b2 [cli] Fix some formatting 2021-12-28 14:03:26 +01:00
derrod e60c3f7aa7 [utils] Add EOS Overlay utilities
- Registry adding/removal code
- Dummy Game()s for downloading
2021-12-28 13:55:10 +01:00
derrod a4c1f0e670 [utils] Add Windows registry helpers 2021-12-28 13:53:59 +01:00
derrod d941b9d61e [api] Fix API URL and add some comments clarifying argument names 2021-12-28 11:12:54 +01:00
derrod 6b91c5779b [cli] Add get-token flag to get bearer token rather than exchange code 2021-12-28 10:57:22 +01:00
derrod fbb4acbc88 [core] Add option to force refresh token instead of session resumption 2021-12-28 10:57:22 +01:00
derrod ed0ac1e0b2 [api] Add currently unused artifact APIs found in EOS Windows service 2021-12-28 10:57:22 +01:00
derrod 3c831da310 [api] Add support for anonymous EOS sessions
These can be used to download the launcher and overlay/service updates
without actually having to authenticate an account.
2021-12-28 10:11:26 +01:00
derrod 335619ff79 [cli] Do not override platform in "info" command
Also improve missing asset error.
2021-12-28 10:09:08 +01:00
derrod 363ac15faa [cli] Error out if no asset exists for specified platform 2021-12-28 10:04:37 +01:00
derrod d61946d15d [lfs] Explicitly set UTF-8 encoding for EGL files
Should fix #383
2021-12-23 07:22:41 +01:00
derrod 352d3d2d0d [cli] Hide -c/--config-file option
Using it can cause a bunch of problems, and I don't want to
encourage its use, so deprecate/hide it for now, then remove
it once I have a better solution.
2021-12-22 08:28:23 +01:00
derrod 0e72950382 [cli] Add -H/--full-help and only show command list by default
The full help has gotten too long, just print the commands by default.
2021-12-22 08:24:23 +01:00
derrod 11850228a8 Bump version 2021-12-22 00:05:48 +01:00
derrod 8c087fc90e [cli] Add external activation to "info" 2021-12-21 23:59:00 +01:00
derrod 508c6a3a58 [cli] Add "get-token" debug command 2021-12-21 23:58:40 +01:00
derrod 71633333b7 [cli] Remove non-functional Origin activation on Linux 2021-12-21 23:28:24 +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 6c35504058 [cli] Fix wrong type in cleanup command
Fixes #378
2021-12-14 14:30:33 +01:00
derrod fa02ed396e Bump version (hotfix #2) 2021-12-12 23:34:10 +01:00
derrod 48cab6af57 [cli] Also activate Ubisoft DLC (untested) 2021-12-11 18:50:30 +01:00
derrod 01ec2ccd89 [cli] Error out if no game files are found, suggest corrected path 2021-12-11 16:34:07 +01:00
derrod 797598322d [cli] Fix checking for game executable on import 2021-12-11 16:23:12 +01:00
derrod 803fc46249 Bump version (hotfix) 2021-12-08 00:49:31 +01:00
derrod 57d88b2db4 [core] Fix non-threaded metadata updates 2021-12-08 00:44:24 +01:00
derrod 6106433153 [cli] Disable SDL for Mac titles 2021-12-08 00:22:44 +01:00
derrod e0ad2171bf [cli] Add notice about Ubisoft activation to list-games 2021-12-06 19:33:55 +01:00
derrod db5cd43047 [cli] Add Origin activation process to "activate" command 2021-12-06 19:33:36 +01:00
derrod eb8bc3713b [cli] Rename --include-non-installable to -T/--third-party 2021-12-06 19:31:39 +01:00
derrod 9d18ef03fa [cli/core/models] Add property for partner link id/type 2021-12-06 18:10:30 +01:00
derrod 4dd495e2f5 [cli] Add aliases for --uplay 2021-12-06 13:20:48 +01:00
derrod 8c50f051a7 Bump version 2021-12-03 23:02:12 +01:00
derrod 82376e3d57 [cli] Allow setting default platform via config 2021-12-03 21:01:30 +01:00
derrod 694a275dac [core] Fix platform linking warning 2021-12-03 18:08:21 +01:00
derrod e11dd8734f [cli] Make pre-installation check results stand out more 2021-12-03 18:01:24 +01:00
derrod db1a6706e4 [cli] I a word when opening the auth/link URLs 2021-12-03 17:54:14 +01:00
derrod e1b5245252 [cli] Improve Ubisoft activation messaging 2021-12-03 17:23:24 +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 e71ab3155e [cli/api/models] Add "activate" command to redeem Uplay games 2021-12-03 14:07:57 +01:00
derrod a8e35e9f3b [cli] Show download url for PyInstaller build updates 2021-12-03 12:47:07 +01:00