Skip to content

Commit 3db30cd

Browse files
committed
remove executor option from trigger config
Signed-off-by: karthik2804 <[email protected]>
1 parent 8b70a30 commit 3db30cd

File tree

1 file changed

+24
-38
lines changed

1 file changed

+24
-38
lines changed

src/lib.rs

Lines changed: 24 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ pub struct CommandTrigger {
1818
#[serde(deny_unknown_fields)]
1919
pub struct Component {
2020
pub id: String,
21-
#[serde(default)]
22-
pub executor: CommandExecutorType,
2321
}
2422

2523
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
@@ -28,20 +26,10 @@ struct TriggerMetadata {
2826
pub r#type: String,
2927
}
3028

31-
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
32-
#[serde(deny_unknown_fields, rename_all = "lowercase", tag = "type")]
33-
pub enum CommandExecutorType {
34-
#[default]
35-
Preview2,
36-
Preview1,
37-
}
38-
3929
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
4030
#[serde(deny_unknown_fields)]
4131
pub struct CommandTriggerConfig {
4232
pub component: String,
43-
#[serde(default)]
44-
pub executor: CommandExecutorType,
4533
}
4634

4735
pub enum CommandInstancePre {
@@ -67,7 +55,6 @@ impl TriggerExecutor for CommandTrigger {
6755
.trigger_configs()
6856
.map(|(_, config)| Component {
6957
id: config.component.clone(),
70-
executor: config.executor.clone(),
7158
})
7259
.collect();
7360
Ok(Self { engine, components })
@@ -85,18 +72,18 @@ impl TriggerInstancePre<RuntimeData, CommandTriggerConfig> for CommandInstancePr
8572
async fn instantiate_pre(
8673
engine: &Engine<RuntimeData>,
8774
component: &AppComponent,
88-
config: &CommandTriggerConfig,
75+
_config: &CommandTriggerConfig,
8976
) -> Result<CommandInstancePre> {
90-
if let CommandExecutorType::Preview1 = &config.executor {
77+
// Attempt to load as a component and fallback to loading a module
78+
if let Ok(comp) = component.load_component(engine).await {
79+
Ok(CommandInstancePre::Component(
80+
engine.instantiate_pre(&comp)?,
81+
))
82+
} else {
9183
let module = component.load_module(engine).await?;
9284
Ok(CommandInstancePre::Module(
9385
engine.module_instantiate_pre(&module)?,
9486
))
95-
} else {
96-
let comp = component.load_component(engine).await?;
97-
Ok(CommandInstancePre::Component(
98-
engine.instantiate_pre(&comp)?,
99-
))
10087
}
10188
}
10289

@@ -117,36 +104,35 @@ impl TriggerInstancePre<RuntimeData, CommandTriggerConfig> for CommandInstancePr
117104
impl CommandTrigger {
118105
pub async fn handle(&self) -> Result<()> {
119106
let component = &self.components[0];
120-
match component.executor {
121-
CommandExecutorType::Preview2 => {
122-
let (instance, mut store) = self.engine.prepare_instance(&component.id).await?;
123-
let CommandInstance::Component(instance) = instance else {
124-
unreachable!()
125-
};
107+
let (instance, mut store) = self.engine.prepare_instance(&component.id).await?;
108+
match instance {
109+
CommandInstance::Component(instance) => {
126110
let handler =
127111
wasmtime_wasi::preview2::command::Command::new(&mut store, &instance)?;
128112
let _ = handler.wasi_cli_run().call_run(store).await?;
129113
}
130-
CommandExecutorType::Preview1 => {
114+
CommandInstance::Module(_) => {
115+
// Toss the commandInstance we have and create a new one as the
116+
// associated store will be a preview2 store
131117
let store_builder = self
132118
.engine
133119
.store_builder(&component.id, spin_core::WasiVersion::Preview1)?;
134120
let (instance, mut store) = self
135121
.engine
136122
.prepare_instance_with_store(&component.id, store_builder)
137123
.await?;
138-
139-
let CommandInstance::Module(instance) = instance else {
140-
unreachable!()
141-
};
142-
143-
let start = instance
144-
.get_func(&mut store, "_start")
145-
.context("Expected component to export _start function")?;
146-
147-
let _ = start.call_async(&mut store, &[], &mut []).await?;
124+
if let CommandInstance::Module(instance) = instance {
125+
let start = instance
126+
.get_func(&mut store, "_start")
127+
.context("Expected component to export _start function")?;
128+
129+
let _ = start.call_async(&mut store, &[], &mut []).await?;
130+
} else {
131+
unreachable!();
132+
}
148133
}
149-
};
134+
}
135+
150136
Ok(())
151137
}
152138
}

0 commit comments

Comments
 (0)