Profiles
I'd previously said that profiles wouldn't be necessary, however I think they may be a useful tool for letting users choose a default configuration. The most obvious way that this could be used at the moment is to let users choose between base data files.
E.g. we could have:
- default/openmw/1.0/
- default/openmw/1.0/morrowind
- default/openmw/1.0/morrowind+tribunal
- default/openmw/1.0/morrowind+bloodmoon
- default/openmw/1.0/morrowind+tribunal+bloodmoon
- default/tes3mp/1.0/
- default/tes3mp/1.0/morrowind
- default/tes3mp/1.0/morrowind+tribunal
- default/tes3mp/1.0/morrowind+bloodmoon
- default/tes3mp/1.0/morrowind+tribunal+bloodmoon
Selecting a profile would, at this point, just choose your architecture (openmw/tes3mp) and default values for the tribunal and bloodmoon global use flags.
I imagine that ideas for other profiles will come up once more gets added to the repository, however I think that basic support for this would be useful for v2.0 rather than manually having to configure architecture and tribunal/bloodmoon flags.
Requires the following features as a bare minimum (there are also a number of other files that can be included in profiles according to the PMS, but we can add them as needed):
-
creation of omwselect script for choosing profiles -
parsing of profiles.yaml for creating profile list -
high-level code for traversing the profile tree using parents files -
support for mod.use.force files (to force base/morrowind[tribunal,bloodmoon]
etc. -
support for mods
file in the profile dir that lists the mods in the system set, and support for automatically including the system set in the world set. -
support for a defaults.cfg in the profiles that includes default values for the user's config file, such as for USE
,ACCEPT_KEYWORDS
,ARCH
andTEXTURE_SIZE
. While I considered using yaml, ConfigParser does support bash-like variable substitution. -
Make the section headers in config files optional, prepending them with a default section header. -
Combine config files in such a way that way files can refer to variables defined elsewhere (and the user config can make use of profile defined variables such as ARCH).