reactive_graph_tooling/tooling/update/
release_info.rs1use 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}