-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or request
Description
- Finalize concept for update behaviour
- Review
packstate.jsonschema and implementation. - Review implementation of
updatecommand - Write tests with realistic test-scenarios
Some old notes
---Updating an existing modpack
Behaviour
TODO: use clear terminology
packstateold packstatenew packstatepackstate files/hashes
For an updated to be executed, the program performs the following steps:
- Read state information of old modpack version from
packstate.jsonfile.- Download the mrpack archive of the new modpack version if required.
- Generate state information of new modpack version from mrpack archive file.
- If any version difference of dependencies exists, cancel the update.
- (
minecraft,fabric-loader,quilt-loader,forge,neoforge) - TODO: flag for continuing anyway
- TODO: actually also keep track of and update the dependencies
- (
- For all files not changed by the update:
- If the file is stored inside the
modsdirectory and - the file is present in the old modpack version and
- the file is not present in the new modpack version, then
- create a backup of the file and delete the file.
- If the file is stored inside the
- For all files changed by the update:
- If the file is not stored inside the
modsdirectory and - the file hash is not equal to the hash in the old modpack version and
- the file hash is not equal to the hash in the new modpack version, then
- create a backup of the file and overwrite the file.
- If the file is not stored inside the
TODO: is this actually a sane behaviour for updates? mock some scenarios
TODO: correctly implemented the planned behaviour and write tests
packstate.json
To keep track of changes, mrpack-install creates a packstate.json file to store information about the state of a
modpack installation.
Example
{
"slug": "my-cool-pack",
"project-id": "TDM2I9Mu",
"version": "1.3.2",
"version-id": "TpN85eu2",
"dependencies": {
"minecraft": "1.19.2",
"fabric-loader": "0.14.10"
},
"hashes": {
"INFOS.txt": {
"sha1": "8548257fd702d58e02bd58f6bcc8affbb96a5d38",
"sha512": "cf83e1357eefb8bdf1542850d66d8007d621e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec3f63b931bd47417a81a538327af927da3e"
},
"mods/ultra-blocks-1.2.3+mc1.19.2.jar": {
"sha1": "df8e2fbabdbeea9c5acea5b1178ad3bb3d75fcf7",
"sha512": "9884fcf6e1f10c1a6e85fd41515bc2e05390c160dd9c70844d1814a0085dd42c850129b5bf175f6d89ca40b86fbe6407dc3b9a48fb8f393fbd68eafa3b9c5b8c"
}
}
}stewi1014
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or request