jtsage/FS_Mod_Checker

[FEATURE] Actionable items?

Closed this issue · 2 comments

Do you have any plans to add actionable items to the passive checker?

  • Remove mods from a savegame if active & unused,
  • Download missing mods from modhub
  • Move inactive mods to a folder outside of the mods folder
  • ...

I'm really on the fence about this. So, a couple of thoughts.

1.) Move inactive, unused to a different "I-want-to-delete-these-mods" folder.

That's pretty easy. Current version has the full path of the mod, it would just be generating a folder name, probably with a date string included. I need to look at how annoying I can make the "Are you really sure" on this, and I think atomic operation is going to be the safest way forward - no "move all these".

1a.) Move broken to somewhere else

For a subset of broken. Probably just the "this is an identical copy", "this is a nonsense file". Everything else I'm really just taking a guess at - it's an educated guess, but I could still be wrong.

2.) Remove from savegame if active & unused.

This is possible. It's just removing a line from careerSavegame.xml. The question is how/when to back up the file first, should something go wrong. Again, atomic operation, no batch.

3.) Similar, remove missing mod - but...

I can do it if it's unused. Trying to edit either vehicles.xml or items.xml is not a road I'm willing to travel. I'd have no issue doing it by hand, but this only really seems feasible if I were to load the xml tree as a tree, and the library I used preserved everything (it does not. for speed it drops comments, and it does some case mangling - which is fine for pulling the data, but I'm not left with an object I could convert back to xml

4.) Download missing

I can search the web for them, but I'm not sure how to ask the modhub about them short of google with a site:... modifier. You mentioned the updater idea in #16 - which would be real cool, but is there a public API of the modhub? On a related note, how is the hash computed? It's not MD5 like I assumed.

Implemented 1 and 1a.

Still hesitating on 2 & 3 - the only "safe" way to do it is atomically, and editing the careerSavegame.xml line-by-line (the node xml parser is nice, but not nice enough to assume that writing out a parsed tree is going to be the exact format FS is expecting - it likes to collapse case - which is great for reading and finding things, but I'm assuming the giants engine cares.) And line-by-line editing doesn't really seem "safe" to me. The additional problem I have is how to manage a sane backup. For the first operation, dropping .xml, adding .bak makes sense. But what about the second operation. Or the operation the next time the program is run. I could do [date string].bak, but if the user does more than 1 or 2 entries, that's going to get excessive fast.

4 is partially implemented in the right click menu on missing mods - you can search directly on the modhub, or on google (appending "FS19" to the title of the mod, usually about as good as it gets)