|
| 1 | +use serde::{Deserialize, Serialize}; |
| 2 | + |
| 3 | +/// Configuration for the chainload action. |
| 4 | +pub mod chainload; |
| 5 | + |
| 6 | +/// Configuration for the edera action. |
| 7 | +pub mod edera; |
| 8 | + |
| 9 | +/// Configuration for the print action. |
| 10 | +pub mod print; |
| 11 | + |
| 12 | +/// Declares an action that sprout can execute. |
| 13 | +/// Actions allow configuring sprout's internal runtime mechanisms with values |
| 14 | +/// that you can specify via other concepts. |
| 15 | +/// |
| 16 | +/// Actions are the main work that Sprout gets done, like booting Linux. |
| 17 | +#[derive(Serialize, Deserialize, Debug, Default, Clone)] |
| 18 | +pub struct ActionDeclaration { |
| 19 | + /// Chainload to another EFI application. |
| 20 | + /// This allows you to load any EFI application, either to boot an operating system |
| 21 | + /// or to perform more EFI actions and return to sprout. |
| 22 | + #[serde(default)] |
| 23 | + pub chainload: Option<chainload::ChainloadConfiguration>, |
| 24 | + /// Print a string to the EFI console. |
| 25 | + #[serde(default)] |
| 26 | + pub print: Option<print::PrintConfiguration>, |
| 27 | + /// Boot the Edera hypervisor and the root operating system. |
| 28 | + /// This action is an extension on top of the Xen EFI stub that |
| 29 | + /// is specific to Edera. |
| 30 | + #[serde(default, rename = "edera")] |
| 31 | + pub edera: Option<edera::EderaConfiguration>, |
| 32 | +} |
0 commit comments