use std::path::Path;
use cargo_metadata::Metadata;
use chrono::Local;
pub(crate) fn current_datetime() -> String {
let now = Local::now();
now.format("%Y-%m-%d %H:%M:%S").to_string()
}
pub(crate) fn cargo_rerun_if_changed(metadata: &Metadata, program_dir: &Path) {
let dirs = vec![
program_dir.join("src"),
program_dir.join("bin"),
program_dir.join("build.rs"),
program_dir.join("Cargo.toml"),
];
for dir in dirs {
if dir.exists() {
println!("cargo::rerun-if-changed={}", dir.canonicalize().unwrap().display());
}
}
println!("cargo:rerun-if-changed={}", metadata.workspace_root.join("Cargo.lock").as_str());
for package in &metadata.packages {
for dependency in &package.dependencies {
if let Some(path) = &dependency.path {
println!("cargo:rerun-if-changed={}", path.as_str());
}
}
}
}