IDCs / dependency-fulfiller

A manifest file based dependency fulfilment system for Vortex
GNU General Public License v3.0
5 stars 3 forks source link

Dependency fulfiller optionally checks user-defined URL for zipped JSON file #1

Open LexiconCode opened 3 years ago

LexiconCode commented 3 years ago

Greetings thank you for dependency fulfiller while giving authors credit for their work. Dependency Fulfiller could fulfill 2 different use cases that are similar but slightly different.

Dependency fulfiller could have an option for URL to grab configuration from of zipped version of the config's generated by Dependency fulfiller. I think this might be easily done by having a customizable field with a URL pointing to the configuration files generated by dependency fulfiller that's hosted by the server administrators via something like dropbox.

Not strictly necessary but how to handle user specific mods for example client-side mods that are not part of the JSON. Perhaps the end-user could define a white list to ignore certain mods? Perhaps this could happen when JSON is generated or the end user can define a ignore list when JSON is loaded. To clarify ignore certain mods not in the JSON file. This allows End-users to have some client-side mods/mods that may not be officially a part of the JSON.

From a user experience:

IDCs commented 3 years ago

Hey, this is a pretty cool idea! I'll aim to get this added in version 1.0.6

LexiconCode commented 3 years ago

Thinking on this a little further possibly as a future enhancement when exporting it could be given a name and version that is defined in the JSON.

How could this be useful? When importing a mod set generally people aren't mixing a current set up with the import of mod set. That's true of both use cases servers/mod sets.

Therefore when importing why not create a new/modify a profile based on the name that is kept up-to-date.

The tricky bit here is if it's possible to manage profiles through the extension system? it may be too difficult or impractical to implement. This could be a separate issue or it could be be rolled into this issue. However that depends if you think it's a good idea.

by chance is there a way we could be in touch voice chat on discord or something?

IDCs commented 3 years ago

So the way I envision this to work would be allowing a user to define a url to the dependencies in the settings page - he can then tick a checkbox which would enforce the mods list that the fulfiller downloads from that url. (it will download new mods, enable/disable existing mods depending on the dependency data). This must be a per profile setting for it to work properly.

I will add the ability to add a human readable name to each defined url - and the user will be able to select which url to subscribe to using a dropdown button (will display the human readable names) which will also be present in the settings page.

I feel as though adding a name and version properties to the data would needlessly overcomplicate the generation and parsing of the dependency data. From the fulfiller's perspective, all it has to do is download the data and see if the data changed in any way - if it did, apply it - simple.

Going to apologise on the voice chat front - I'm generally extremely busy and can only spare ~15 - 30 minutes on some weekends (if that). Send me your discord id and I'll get in touch with you, but I probably won't be available for voice chat until next week.

Alternatively you could drop me a message on the Nexus Mods Discord channels (Nagev)

IDCs commented 3 years ago

Hi there - took me a month to find the time to get this done... Sorry about that.

So in the settings page you'll notice I've added a select component alongside the ability to add/remove/edit existing "subscriptions" using the buttons next to the selector. image

Rather than pull an archive from a remote location which could potentially include malicious data, the url must contain json data. I hosted my data using a github gist, but it should theoretically work on any public hosting service. image

https://gist.githubusercontent.com/IDCs/6040b81013f4fd752fed2daafbf022e1/raw/7bca9d685149ccedc0a502228d72501125826438/gistfile1.txt

Once a subscription is set, all you have to do is go to the import button and "Import From Subscription". I opted NOT to force the mod selection on deployment as I think users can be quite silly and may forget that they "locked" their modlist to a certain subscription and I'd like to avoid bug reports where the user complains about Vortex not deploying all their mods. image

Going to leave this open for a while so you can get a chance to test it once I updated it on the website.

LexiconCode commented 3 years ago

This looks great. Over the next week or so when I get some free time I'll see about test to see how it works out in practice.