For the extension-manager to work correctly we'll need a manifest/metadata file that describes the extension. It will need to contain the following types of information in some parse-able format:
field
type
required
notes
extension id
string
yes
a unique identifier that contains the name, version, (and arch?)
name-major.minor.patch-arch
will also be the name of the package
extension name
string
yes
human readable name
version
string
yes
description
string
no
binary text field
dependencies
array of extension ids
no
must be previously installed or being installed at the same time
This is not the same thing as activating an extension. Installation is required for a Mediaiwiki instance to server an extension-package (as a repository.)
uninstall/ remove [extension-package]
Remove an installed extension.
This will deactivate an extension if it is activated.
activate [extension-package]
Turn an extension on.
This is analogous to the current idea of installing an extension -- the functionality of the wiki is changed in some way. This action has the possibility of altering the wiki's infrastructure in some way (installed needed database tables, for example.)
deactivate [extension-package]
Turn an extension off.
This is analogous to the current idea of uninstalling an extension. The functionality that the extension provided is now lost.
search [query]
Search for an extension-package in the list of current repositories.
Query the listed repositories for installed packages that can be downloaded, installed and activated.
list [installed, activated, all]
List the currently installed, activated, or both - extensions.
update [extension-package]
Query the repositories to see if an update is available and update an extension.
check-update [extension-package]
Check if an update is available.
update-to [extension-package] [version]
Update to a particular version.
downgrade [extension-package]
Downgrade an extension.
Might downgrade to a local, older copy of the extension, or fetch an older version.
downgrade-to [extension-package] [version]
Downgrade to a particular version.
info [extension-package]
Get the information about a particular extension.
repolist
List the repositories and their state (added/activated.)