#[macro_export]
macro_rules! macro_generate_files {
($params:expr) => {{
use $crate::generator::generate_files;
match generate_files($params) {
Ok(_) => Ok(()),
Err(e) => Err(format!("Failed to generate files with parameters: {:?} - Error: {}", $params, e)),
}
}};
}
#[macro_export]
macro_rules! macro_generate_from_csv {
($csv_path:expr) => {{
use $crate::generators::csv::generate_from_csv;
match generate_from_csv($csv_path) {
Ok(_) => Ok(()),
Err(e) => Err(format!("Failed to generate files from CSV at: {} - Error: {}", $csv_path, e)),
}
}};
}
#[macro_export]
macro_rules! macro_generate_from_ini {
($ini_path:expr) => {{
use $crate::generators::ini::generate_from_ini;
match generate_from_ini($ini_path) {
Ok(_) => Ok(()),
Err(e) => Err(format!("Failed to generate files from INI at: {} - Error: {}", $ini_path, e)),
}
}};
}
#[macro_export]
macro_rules! macro_generate_from_json {
($json_path:expr) => {{
use $crate::generators::json::generate_from_json;
match generate_from_json($json_path) {
Ok(_) => Ok(()),
Err(e) => Err(format!("Failed to generate files from JSON at: {} - Error: {}", $json_path, e)),
}
}};
}
#[macro_export]
macro_rules! macro_generate_from_toml {
($toml_path:expr) => {{
use $crate::generators::toml::generate_from_toml;
match generate_from_toml($toml_path) {
Ok(_) => Ok(()),
Err(e) => Err(format!("Failed to generate files from TOML at: {} - Error: {}", $toml_path, e)),
}
}};
}
#[macro_export]
macro_rules! macro_generate_from_yaml {
($yaml_path:expr) => {{
use $crate::generators::yaml::generate_from_yaml;
match generate_from_yaml($yaml_path) {
Ok(_) => Ok(()),
Err(e) => Err(format!("Failed to generate files from YAML at: {} - Error: {}", $yaml_path, e)),
}
}};
}
#[macro_export]
macro_rules! macro_generate_from_args {
($args:expr) => {{
use $crate::generators::args::generate_from_args;
match generate_from_args($args) {
Ok(_) => Ok(()),
Err(e) => Err(format!("Failed to generate files from arguments: {:?} - Error: {}", $args, e)),
}
}};
}
#[macro_export]
macro_rules! macro_generate_from_config {
($path:expr, $file_type:expr) => {{
use $crate::generator::generate_from_config;
match generate_from_config($path, $file_type) {
Ok(_) => Ok(()),
Err(e) => Err(format!("Failed to generate files from {} configuration at: {} - Error: {}", $file_type, $path, e)),
}
}};
}
#[macro_export]
macro_rules! macro_execute_and_log {
($command:expr, $package:expr, $operation:expr, $start_message:expr, $complete_message:expr, $error_message:expr) => {{
use anyhow::{Context, Result as AnyResult};
$crate::log::info!("Starting operation: {}", $start_message);
std::process::Command::new("sh")
.arg("-c")
.arg($command)
.output()
.map(|output| {
if output.status.success() {
$crate::log::info!("Operation completed successfully: {}", $complete_message);
Ok(())
} else {
$crate::log::error!("Operation failed: {} - Error: {}", $error_message, String::from_utf8_lossy(&output.stderr));
Err(std::io::Error::new(std::io::ErrorKind::Other, "Command execution failed").into())
}
})
.with_context(|| {
format!(
"Failed to execute '{}' for {} on package '{}'",
stringify!($command),
$operation,
$package
)
})
}};
}
#[macro_export]
macro_rules! extract_param {
($matches:expr, $name:expr) => {
$matches.get_one::<String>($name).map(|s| s.to_owned())
};
}