mod commands;
mod config;
pub(crate) mod dirs;
mod error;
mod format;
mod install_scope;
pub mod scaffold;
mod templates;
mod util;
pub use error::CargoTruceError;
#[cfg(target_os = "windows")]
mod packaging_windows;
#[cfg(target_os = "windows")]
mod windows_manifest;
#[cfg(target_os = "windows")]
pub(crate) use commands::install::aax::build_aax_template;
#[cfg(target_os = "windows")]
pub(crate) use commands::package::PkgFormat;
#[cfg(target_os = "macos")]
pub(crate) use config::installer_identity;
pub(crate) use config::{
Config, PluginDef, application_identity, deployment_target, load_config, read_build_env,
resolve_aax_sdk_path,
};
#[cfg(target_os = "macos")]
pub(crate) use config::{
ios_appex_provisioning_profile, ios_application_identity, ios_provisioning_profile, ios_team_id,
};
#[cfg(any(target_os = "macos", test))]
pub(crate) use util::tmp_verify;
pub(crate) use util::{
cargo_build, cargo_build_debug, check_cmd, codesign_bundle, confirm_prompt,
detect_default_features, find_on_path, is_debug_profile, log_output, log_skip, project_root,
read_standalone_bin_name, release_lib, run_sudo, set_build_profile, set_debug_profile,
tag_fail, tag_ok, tag_warn, take_outputs, take_skipped, verify_shell_profile_declared,
vprintln,
};
#[cfg(target_os = "macos")]
pub(crate) use util::tmp_dir;
#[cfg(any(target_os = "macos", target_os = "windows"))]
pub(crate) use util::tmp_manifests;
pub(crate) use util::tmp_lv2;
pub(crate) use util::read_workspace_version;
pub(crate) use util::release_lib_for_target;
pub(crate) use util::tag_info;
#[cfg(any(target_os = "macos", target_os = "windows"))]
pub(crate) use util::{rustup_has_target, tmp_aax_template};
#[cfg(target_os = "macos")]
pub(crate) use config::MacosPackagingConfig;
#[cfg(target_os = "macos")]
pub(crate) use util::{
MacArch, cargo_build_for_arch, cargo_build_multi_arch, copy_dir_recursive, extract_team_id,
is_production_identity, lipo_into, locate_wraptool_macos, pace_sign_aax_macos, run_codesign,
run_quiet, run_silent, tmp_au_v3,
};
#[cfg(target_os = "windows")]
pub(crate) use util::{
cargo_rustc_bin, common_program_files, locate_cmake, locate_msvc_cl, locate_ninja,
locate_vcvars64, program_files, tmp_scripts, vs_install_paths, which_exe,
};
use std::process::ExitCode;
pub type Res = std::result::Result<(), CargoTruceError>;
pub type BoxErr = CargoTruceError;
#[must_use]
pub fn run(args: &[String]) -> ExitCode {
let mut filtered: Vec<String> = Vec::with_capacity(args.len());
for a in args {
if a == "-v" || a == "--verbose" {
util::set_verbose(true);
} else {
filtered.push(a.clone());
}
}
let args = &filtered[..];
let cmd = args.first().map_or("", std::string::String::as_str);
let result = match cmd {
"install" => commands::install::cmd_install(&args[1..]),
"build" => commands::build::cmd_build(&args[1..]),
"package" => commands::package::cmd_package(&args[1..]),
"uninstall" => commands::uninstall::cmd_uninstall(&args[1..]),
"run" => commands::run::cmd_run(&args[1..]),
"screenshot" => commands::screenshot::cmd_screenshot(&args[1..]),
"status" => commands::status::cmd_status(&args[1..]),
"reset-au" => commands::reset_au::cmd_reset_au(&args[1..]),
"reset-aax" => commands::reset_aax::cmd_reset_aax(&args[1..]),
"validate" => commands::validate::cmd_validate(&args[1..]),
"doctor" => commands::doctor::cmd_doctor(&args[1..]),
"log-stream-au" => commands::log_stream_au::cmd_log_stream_au(&args[1..]),
other => Err(format!("unknown command: {other:?}").into()),
};
match result {
Ok(()) => ExitCode::SUCCESS,
Err(e) => {
eprintln!("Error: {e}");
ExitCode::FAILURE
}
}
}