1#![doc = include_str!("../README.md")]
2
3pub(crate) mod cargo;
4pub(crate) mod cli;
5pub(crate) mod error;
6pub(crate) mod git;
7pub(crate) mod manifest;
8pub(crate) mod packages;
9pub(crate) mod task;
10pub(crate) mod version;
11
12pub use cargo::Cargo;
13pub use cli::{Action, Cli};
14pub use git::{Git, GitBuilder, GitFile, GitFiles, NoRootDirSet, OutputExt};
15pub use manifest::error::{
16 CargoFileError, CargoFileErrorKind, ItemType, VersionLocationErrorKind, VersionlocationError,
17};
18pub use manifest::generate_packages;
19pub use manifest::toml_file::{CargoFile, ReadToml, UnreadToml};
20pub use manifest::version_location::{VersionLocation, VersionType};
21pub use miette::Result;
22pub use packages::{Package, PackageError, PackageName, Packages};
23pub use task::{Task, TaskError, Tasks};
24pub use version::{Bumpable, Setable};
25
26use miette::{IntoDiagnostic, bail};
27use tracing::Level;
28use tracing_subscriber::util::SubscriberInitExt;
29
30pub static FOOTER: &str = "If the bug continues, raise an issue on github: https://github.com/Ozy-Viking/cargo_update_version/issues";
31
32pub fn setup_tracing(args: &Cli) -> miette::Result<()> {
33 let app_level = match args.tracing_level() {
34 Some(l) => l,
35 None => bail!(
36 help = "Raise issue in github please or try a different verbosity level.",
37 "Tracing level not set somehow."
38 ),
39 };
40
41 let target = tracing_subscriber::filter::Targets::new()
42 .with_target(module_path!(), app_level)
43 .with_default(Level::ERROR);
44
45 let env_filter = tracing_subscriber::EnvFilter::try_from_default_env()
46 .unwrap_or_else(|_| tracing_subscriber::EnvFilter::new(target.to_string()));
47
48 #[allow(unused_mut)]
49 let mut builder = tracing_subscriber::fmt()
50 .without_time()
51 .with_env_filter(env_filter);
52 #[cfg(debug_assertions)]
53 {
54 builder = builder.with_line_number(true).with_file(true)
55 }
56 builder.finish().try_init().into_diagnostic()?;
57 Ok(())
58}
59
60#[macro_export]
61macro_rules! current_span {
62 () => {
63 tracing::span::Span::current()
64 };
65}
66
67#[macro_export]
68macro_rules! display_path {
69 ($path:ident) => {
70 $path.as_os_str().display()
71 };
72}