
As I see it, the *package manager* is called "bpkg", while the *package manager addon* is called "package_manager". The *package manager* contains the actual package management code, and the *package manager addon* provides the interface to use it.
BlenderPackage, the Blender Package Manager (wip)
This is work-in-progress documentation for the work-in-progress package manager (the name is also a work-in-progress) As such, everything here is subject to change.
Package
A package consists of an archive containing files to be installed.
Note:
I think it would be good to always store bl_info
metadata with the package,
but how best to do this while being compatible with existing addons and future
non-addons remains an open question (perhaps we can always include an
__init__.py
even in non-addon packages?)
Repository
A repository consists of a directory containing a "repo.json" file. This
repo.json file contains metadata describing each package (bl_info
) and where
it may be retrieved from.
A repo.json file may currently be generated from a directory of addons by
running blenderpack.py <path/to/addon/dir>
.
Client
Clients "use" a repository by including its repo.json in packages listed in Clients can be configured to use multiple repositories at once.
In addition, the client maintains it's own "local repository", which is a repo.json containing installed packages.
Clients can take the following actions:
Install
Installing means downloading a single package, adding it to the local repository, and extracting/copying the package's file(s) to their destination(s).
Uninstall
Uninstalling means deleting a single package's files, then removing it from the local repository.
Note:
If some packages store user-created data (e.g. preferences), we may want to
preserve that somehow.
Upgrade
Upgrading means looking for newer addons with the same names as installed addons from the same repository.
Refresh
Refreshing means checking for modifications to the repo.json
s of the enabled
repositories. If there are modifications, then download them.
This will be done automatically before an Update.