use crate::context::*;
use crate::is_false;
use moon_config::{UnresolvedVersionSpec, VersionSpec};
use std::path::PathBuf;
use warpgate_api::api_struct;
pub use proto_pdk_api::{
DownloadPrebuiltInput, DownloadPrebuiltOutput, LoadVersionsInput, LoadVersionsOutput,
LocateExecutablesInput, LocateExecutablesOutput, NativeInstallInput, NativeInstallOutput,
NativeUninstallInput, NativeUninstallOutput, RegisterToolInput, RegisterToolOutput,
ResolveVersionInput, ResolveVersionOutput, UnpackArchiveInput,
};
api_struct!(
pub struct SetupToolchainInput {
pub configured_version: Option<UnresolvedVersionSpec>,
pub context: MoonContext,
pub toolchain_config: serde_json::Value,
pub version: Option<VersionSpec>,
}
);
api_struct!(
#[serde(default)]
pub struct SetupToolchainOutput {
#[serde(skip_serializing_if = "Vec::is_empty")]
pub changed_files: Vec<PathBuf>,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub operations: Vec<Operation>,
#[serde(skip_serializing_if = "is_false")]
pub installed: bool,
}
);
api_struct!(
pub struct TeardownToolchainInput {
pub configured_version: Option<UnresolvedVersionSpec>,
pub context: MoonContext,
pub toolchain_config: serde_json::Value,
pub version: Option<VersionSpec>,
}
);