Age | Commit message (Collapse) | Author |
|
Key-Value-Stores are not always as easy as every line containing a
key-value pair, there is also the variant that a value spans multiple
lines and is enclosed in """ (e.g. the description of some mods).
This also changes the API slightly, as we want to separate the parsing
code from the code that reads the file. This makes it easier to do
testing or to re-use the code for data that is already in-memory.
Therefore, kvstore::write now takes a writer and kvstore::save provides
the functionality that the old kvstore::write had.
|
|
|
|
Those mods might not have a mod.conf and instead define their
dependencies in depends.txt. A lot of mods in mineclone2 for example
still do that.
|
|
|
|
Especially SubcommandRequired is helpful, as without one, we're not
doing all that much.
|
|
|
|
Previously, install_mod was a huge function that did a lot of things at
once. Not only did it do the actual mod copying, it also had the
dependency resolution, user interaction, ...
Now, we've split the code and made it more re-usable. The dependency
resolution is done in Baas::install, with special "hooks" being given in
baas::Installer that allow a consumer to customize the installation and
embed the user interaction there.
The code itself is pretty much the same, it is just split up now.
|
|
|
|
This uses the workspace feature of cargo, with the benefit that
1) We can more cleanly group the binary (user facing) code from the
library
2) We can have dependencies that apply to the binary only
The first point could've been achieved without workspaces (Cargo
supports both binaries and libraries in a crate), but the second point
is what really makes this approach a lot better.
|
|
|
|
On second thought, we're just calling chown, so let's call it that.
|
|
|
|
This is useful if you run modderbaas as root but want the resulting
directories to be owned by the right uid/gid.
|
|
The function that we needed from there is very small and easily
implemented ourselves. On the other hand, fs_extra seemed to have some
weird options going on and implemented the copy in a bit of a roundabout
manner.
|
|
Apparently, the default world of minetest-server does not have a name
set (which is kind of okay because it is the only existing world
anyway). But ModderBaas needs to deal with this situation properly. In
this case, we simply take the directory name, similar to games.
|
|
Some mods do not come bundled in a separate directory, so we also
support archives that do not contain an inner directory now (e.g. the
"charcoal" mod).
|
|
|
|
|
|
This is the inital commit of a somewhat working version.
|