ploys 0.6.0

A utility to manage projects, packages, releases and deployments.
Documentation
use ploys::project::{Error, Project};
use ploys::repository::revision::Revision;
use ploys::repository::types::github::Error as GitHubError;

#[test]
#[ignore]
fn test_project() -> Result<(), Error<GitHubError>> {
    let revision = std::env::var("GITHUB_SHA")
        .map(Revision::Sha)
        .unwrap_or_default();

    let project = match std::env::var("GITHUB_TOKEN").ok() {
        Some(token) => {
            Project::github_with_revision_and_authentication_token("ploys/ploys", revision, token)?
        }
        None => Project::github_with_revision("ploys/ploys", revision)?,
    };

    assert_eq!(project.name(), "ploys");
    assert_eq!(
        project.repository().unwrap().to_url(),
        "https://github.com/ploys/ploys".parse().unwrap()
    );

    let packages = project.packages().collect::<Vec<_>>();

    let ploys = packages.iter().find(|pkg| pkg.name() == "ploys").unwrap();

    assert_eq!(ploys.name(), "ploys");
    assert_eq!(ploys.path(), "packages/ploys");
    assert_eq!(ploys.manifest_path(), "packages/ploys/Cargo.toml");

    let ploys_api = packages
        .iter()
        .find(|pkg| pkg.name() == "ploys-api")
        .unwrap();

    assert_eq!(ploys_api.name(), "ploys-api");
    assert_eq!(ploys_api.path(), "packages/ploys-api");
    assert_eq!(ploys_api.manifest_path(), "packages/ploys-api/Cargo.toml");

    let ploys_cli = packages
        .iter()
        .find(|pkg| pkg.name() == "ploys-cli")
        .unwrap();

    assert_eq!(ploys_cli.name(), "ploys-cli");
    assert_eq!(ploys_cli.path(), "packages/ploys-cli");
    assert_eq!(ploys_cli.manifest_path(), "packages/ploys-cli/Cargo.toml");

    Ok(())
}