use serde::{Deserialize, Serialize};

use crate::{
    action::{ActionError, Context},
    action_impl::ActionImpl,
    runlog::RunLogSource,
};

/// A dummy action that does nothing.
///
/// This is meant for testing serialization and other parts of Ambient.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Dummy;

impl ActionImpl for Dummy {
    const CARRY_OVER_ENVS: &[(&'static str, &'static str)] = &[("DUMMY", "1")];

    fn execute(&self, context: &mut Context) -> Result<(), ActionError> {
        context.runlog().debug(RunLogSource::Plan, "dummy action");
        Ok(())
    }
}
