Add API for working with data from a package repository.
Review Request #7693 — Created Oct. 11, 2015 and submitted — Latest diff uploaded
This introduces a set of classes for serializing/deserializing package
data stored in a repository, and classes for interacting with the
repository. It can be used to query packages, the available versions,
installation instructions, and more.Each entry in the repository is a
PackageBundle
, which bundles together
a list of channels (PackageChannel
). Each of these manages state for a
range of versions (1.0.x, 1.5.x, 2.0.x, etc.), and may also be mapped to
one or more aliases (beta, stable, etc.).Each channel lists all available releases (
PackageChannel
), and also
contains rules (PackageRules
) on how to install any given version.These objects are populated with data from the repository through
deserialization class methods that they provide. That data comes from a
PackageDataLoader
subclass, which knows how to fetch and deserialize
JSON data from a backend (the main package repository, a testing
repository, etc.).Currently, there's no data loader implemented to talk to any
HTTPS-backed repository, nor are there any classes for
managing/installing packages beyond fetching data on them. Those will
come in future changes.
Unit tests pass.
Implemented a test command locally, and used it to introspect package data.