1use crate::utils;
2use colored::*;
3
4const DESCRIPTION: &str = "Zoi - Universal Package Manager & Environment Setup Tool.\n Part of the Zillowe Development Suite (ZDS)";
5const AUTHOR: &str = "Zusty < Zillowe Foundation";
6const HOMEPAGE: &str = "https://zillowe.qzz.io/zds/zoi";
7const DOCS: &str = "https://zillowe.qzz.io/docs/zds/zoi";
8const GITREPO: &str = "https://gitlab.com/Zillowe/Zillwen/Zusty/Zoi";
9const EMAIL: &str = "contact@zillowe.qzz.io";
10const LICENSE: &str = "Apache 2.0";
11
12pub fn run(branch: &str, status: &str, number: &str, commit: &str) {
13 let full_version_string = utils::format_version_full(branch, status, number, commit);
14
15 println!("\n {}\n", DESCRIPTION.green());
16
17 println!(" {:<12}{}", "Version:".cyan(), full_version_string);
18 println!(" {:<12}{}", "Author:".cyan(), AUTHOR);
19 println!(" {:<12}{}", "Homepage:".cyan(), HOMEPAGE);
20 println!(" {:<12}{}", "Docs:".cyan(), DOCS);
21 println!(" {:<12}{}", "Email:".cyan(), EMAIL);
22 println!(" {:<12}{}", "GitLab:".cyan(), GITREPO);
23 println!(" {:<12}{}", "License:".cyan(), LICENSE);
24
25 let posthog_host = option_env!("POSTHOG_API_HOST");
26 let zoi_registry = option_env!("ZOI_DEFAULT_REGISTRY");
27 let about_packager_author = option_env!("ZOI_ABOUT_PACKAGER_AUTHOR");
28 let about_packager_email = option_env!("ZOI_ABOUT_PACKAGER_EMAIL");
29 let about_packager_homepage = option_env!("ZOI_ABOUT_PACKAGER_HOMEPAGE");
30
31 let has_build_info =
32 posthog_host.is_some_and(|s| !s.is_empty()) || zoi_registry.is_some_and(|s| !s.is_empty());
33
34 if has_build_info {
35 println!("\n {}", "Build Information".green());
36 if let Some(host) = posthog_host
37 && !host.is_empty()
38 {
39 println!(" {:<19}{}", "Telemetry Host:".cyan(), host);
40 }
41 if let Some(registry) = zoi_registry
42 && !registry.is_empty()
43 {
44 println!(" {:<19}{}", "Default Registry:".cyan(), registry);
45 }
46 }
47
48 let has_packager_info = about_packager_author.is_some_and(|s| !s.is_empty())
49 || about_packager_email.is_some_and(|s| !s.is_empty())
50 || about_packager_homepage.is_some_and(|s| !s.is_empty());
51
52 if has_packager_info {
53 println!("\n {}", "Packager Information".green());
54 if let Some(author) = about_packager_author
55 && !author.is_empty()
56 {
57 println!(" {:<19}{}", "Packager:".cyan(), author);
58 }
59 if let Some(email) = about_packager_email
60 && !email.is_empty()
61 {
62 println!(" {:<19}{}", "Email:".cyan(), email);
63 }
64 if let Some(homepage) = about_packager_homepage
65 && !homepage.is_empty()
66 {
67 println!(" {:<19}{}", "Homepage:".cyan(), homepage);
68 }
69 }
70
71 println!();
72}