Support mods with restricted download
Some mods are available through distribution platforms (such as Nexus Mods) that do not support directly downloading them through a fixed URL.
To better support such mods, we should make it possible to indicate in the pybuild that the mod cannot be directly downloaded, and provide a facility for prompting the user to manually download an archive and place it in the cache dir during the installation process (similar to what Portage's RESTRICT="fetch" e.g. https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-java/oracle-jre-bin/oracle-jre-bin-1.8.0.202.ebuild).
This is technically already possible via the NO_DOWNLOAD field and manually prompting the user and extracting the download in the prepare function, however this is not a very concise way of doing this. I propose the following two improvements:
- Replacing the NO_DOWNLOAD field with the fetch option in the RESTRICT field in the way that portage does to better enable further such restrictions in future
- Adding a nofetch function that is called if RESTRICT="fetch" is set, is run prior to attempting downloading the mod/fetch it from the cache, and waits until the user enters input indicating that they have downloaded the mod. The no-confirm argument should cause portmod to skip the prompt (though not the message) and exit with an error if the download cannot be found in the cache.