• 
      

    Add API for working with data from a package repository.

    Review Request #7693 — Created Oct. 11, 2015 and submitted — Latest diff uploaded

    Information

    rbpkg
    master

    Reviewers

    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.