reactive_graph/tooling/update/
release_info.rs

1use crate::shared::output_format::RenderTable;
2use crate::tooling::update::REPO_NAME;
3use crate::tooling::update::REPO_OWNER;
4use crate::tooling::update::args::UpdateArgs;
5use crate::tooling::update::args::UpdateInfoArgs;
6use crate::tooling::update::args::UpdateListArgs;
7use crate::tooling::update::release::Release;
8use crate::tooling::update::release_tag::RELEASE_TAG_NIGHTLY;
9use crate::tooling::update::release_tag::ReleaseTag;
10use crate::tooling::update::update_from_github;
11use anyhow::Result;
12use self_update::cargo_crate_version;
13
14pub fn print_release_info(args: &UpdateArgs, info_args: &UpdateInfoArgs) -> Result<()> {
15    let release_update = update_from_github(args)?;
16    let release_info = match ReleaseTag::from(args) {
17        ReleaseTag::Nightly => release_update.get_release_version(RELEASE_TAG_NIGHTLY),
18        ReleaseTag::Latest => release_update.get_latest_release(),
19        ReleaseTag::Current => release_update.get_release_version(cargo_crate_version!()),
20        ReleaseTag::Version(version) => release_update.get_release_version(&version),
21    }?;
22    vec![Release::from(&release_info)].print_table_and_exit(&info_args.output_format)
23}
24
25pub fn print_release_list(args: &UpdateListArgs) -> Result<()> {
26    self_update::backends::github::ReleaseList::configure()
27        .repo_owner(REPO_OWNER)
28        .repo_name(REPO_NAME)
29        .build()?
30        .fetch()?
31        .iter()
32        .map(Release::from)
33        .collect::<Vec<Release>>()
34        .print_table_and_exit(&args.output_format);
35}