//! The `set` builtin — set shell options and positional parameters.
//! Also `shift` — shift positional parameters.

use crate::{Builtin, ShellEnvironment};

pub struct Set;

impl Builtin for Set {
    fn name(&self) -> &str {
        "set"
    }

    fn execute(&self, _args: &[&str], _env: &mut dyn ShellEnvironment) -> i32 {
        // Minimal implementation: ignore options for now.
        // A full implementation would handle set -e, set -x, etc.
        0
    }
}

pub struct Shift;

impl Builtin for Shift {
    fn name(&self) -> &str {
        "shift"
    }

    fn execute(&self, _args: &[&str], _env: &mut dyn ShellEnvironment) -> i32 {
        // Shift needs access to positional params which isn't in the trait.
        // The executor handles this directly.
        0
    }
}
