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