diff --git a/crates/nu-cli/src/cli.rs b/crates/nu-cli/src/cli.rs index f9bdd85f48..164b12c80b 100644 --- a/crates/nu-cli/src/cli.rs +++ b/crates/nu-cli/src/cli.rs @@ -345,6 +345,8 @@ pub fn create_default_context( whole_stream_command(Headers), // Data processing whole_stream_command(Histogram), + whole_stream_command(Autoenv), + whole_stream_command(AutoenvTrust), whole_stream_command(Math), whole_stream_command(Average), whole_stream_command(Minimum), diff --git a/crates/nu-cli/src/commands.rs b/crates/nu-cli/src/commands.rs index 51acae5929..cda75fb276 100644 --- a/crates/nu-cli/src/commands.rs +++ b/crates/nu-cli/src/commands.rs @@ -7,6 +7,8 @@ mod to_delimited_data; pub(crate) mod alias; pub(crate) mod append; pub(crate) mod args; +pub(crate) mod autoenv; +pub(crate) mod autoenv_trust; pub(crate) mod autoview; pub(crate) mod build_string; pub(crate) mod cal; @@ -135,6 +137,8 @@ pub(crate) use command::{ pub(crate) use alias::Alias; pub(crate) use append::Append; +pub(crate) use autoenv::Autoenv; +pub(crate) use autoenv_trust::AutoenvTrust; pub(crate) use build_string::BuildString; pub(crate) use cal::Cal; pub(crate) use calc::Calc; diff --git a/crates/nu-cli/src/commands/autoenv.rs b/crates/nu-cli/src/commands/autoenv.rs index 1cbcb8db61..d2b5224527 100644 --- a/crates/nu-cli/src/commands/autoenv.rs +++ b/crates/nu-cli/src/commands/autoenv.rs @@ -1,7 +1,7 @@ use crate::commands::WholeStreamCommand; use crate::prelude::*; use nu_errors::ShellError; -use nu_protocol::{Primitive, ReturnSuccess, UntaggedValue, Value}; +use nu_protocol::{Primitive, ReturnSuccess, UntaggedValue, Value, Signature}; pub struct Autoenv; @@ -11,20 +11,29 @@ impl WholeStreamCommand for Autoenv { "autoenv" } fn usage(&self) -> &str { - "Mark a .nu-env file in a directory as trusted. Needs to be re-made after each change to the file." + // "Mark a .nu-env file in a directory as trusted. Needs to be re-run after each change to the file or its filepath." + "Manage directory specific environments" + } + fn signature(&self) -> Signature { + Signature::build("autoenv") } async fn run( &self, args: CommandArgs, registry: &CommandRegistry, ) -> Result { - allow(args, registry).await + let registry = registry.clone(); + Ok(OutputStream::one(ReturnSuccess::value( + UntaggedValue::string(crate::commands::help::get_help(&Autoenv, ®istry)) + .into_value(Tag::unknown()), + ))) } + fn examples(&self) -> Vec { vec![Example { description: "Allow .nu-env file in current directory", example: "autoenv trust", - result: "Current " + result: None }] } -} \ No newline at end of file +} diff --git a/crates/nu-cli/src/commands/autoenv_trust.rs b/crates/nu-cli/src/commands/autoenv_trust.rs new file mode 100644 index 0000000000..7a8fa652e0 --- /dev/null +++ b/crates/nu-cli/src/commands/autoenv_trust.rs @@ -0,0 +1,43 @@ +use crate::commands::WholeStreamCommand; +use crate::data::value::format_leaf; +use crate::prelude::*; +use futures::StreamExt; +use std::io::Write; +use nu_errors::ShellError; +use nu_protocol::{Primitive, ReturnSuccess, Signature, UntaggedValue, Value}; +use nu_source::AnchorLocation; +use std::fs::OpenOptions; + +pub struct AutoenvTrust; + +#[async_trait] +impl WholeStreamCommand for AutoenvTrust { + fn name(&self) -> &str { + "autoenv trust" + } + + fn signature(&self) -> Signature { + Signature::build("autoenv trust") + } + + fn usage(&self) -> &str { + "Trust a .nu-env file in the current directory" + } + + async fn run( + &self, + args: CommandArgs, + registry: &CommandRegistry, + ) -> Result { + let mut file = OpenOptions::new() + .write(true) + .append(true) + .create(true) + .open("autoenv.txt") + .unwrap(); + + write!(&mut file, "I'm here!\n").unwrap(); + let tag = args.call_info.name_tag.clone(); + Ok(OutputStream::one(ReturnSuccess::value(UntaggedValue::string("success!").into_value(tag)))) + } +} \ No newline at end of file diff --git a/crates/nu-cli/tests/commands/mod.rs b/crates/nu-cli/tests/commands/mod.rs index e131e19b21..0b7a6dd75a 100644 --- a/crates/nu-cli/tests/commands/mod.rs +++ b/crates/nu-cli/tests/commands/mod.rs @@ -1,6 +1,8 @@ mod alias; mod append; mod average; +mod autoenv; +mod autoenv_trust; mod cal; mod calc; mod cd;