Crate upm_lib

Source
Expand description

The universal package manager library (upm-lib) provides an abstraction to perform simple commands with any package manager. Currently there are no frontends implemented, but the functionality is exposed for frontends to utilize. Feel free to implement a frontend!

If you want to do something with a particular package manager then this probably isn’t the library for you. If you want to query multiple package managers at once to search for a package provided by multiple sources, then this is the library for you. This is common for language specific binaries that are provided by language package managers and system package managers.

Since certain package managers such as NPM allow installation in a user’s home directory or somewhere accessible for all users, there is a distinction between installation and removal of packages on a system-wide level and a local level.

It is expected that the frontend would load in the different package managers from configuration files as discussed in PackageManager.

Versioning is provided by the Version struct. Version is used in place of semver due to the need to support non-semantic versions.

Structs§

  • Information on a package from a particular package manager
  • The representation of a package manager. Includes the name of the package manager, a path to reference scripts from, and commands in string form (or scripts to call package manager commands and properly format the output).
  • A simple representation of a version string. For semantic versioning Steve Klabnik’s semver crate is preferable. But non-semantic versioning is also permitted in this struct.

Enums§

  • Provide a single type to exclude or solely include certain packagemanager names.

Functions§

  • Get a vector of any package managers specified in the given directory.
  • Read the configuration directories listed from highest precedence to lowest with the option to explicitly exclude or include certain package managers. If the include variant of ManagerSpecifier is used then only the specified packagemanager names will be returned if they exist.