Remove EvaluationContext::from_args (#3604)

This commit is contained in:
JT 2021-06-11 18:35:21 +12:00 committed by GitHub
parent 8ac572ed27
commit b9ca3b2039
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 45 additions and 60 deletions

View file

@ -52,7 +52,7 @@ impl WholeStreamCommand for Command {
}
fn all(args: CommandArgs) -> Result<OutputStream, ShellError> {
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let tag = args.call_info.name_tag.clone();
let all_args = AllArgs {
predicate: args.req(0)?,

View file

@ -52,7 +52,7 @@ impl WholeStreamCommand for Command {
}
fn any(args: CommandArgs) -> Result<OutputStream, ShellError> {
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let tag = args.call_info.name_tag.clone();
let any_args = AnyArgs {
predicate: args.req(0)?,

View file

@ -23,7 +23,7 @@ impl WholeStreamCommand for AutoenvTrust {
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
let tag = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let file_to_trust = match args.call_info.evaluate(&ctx)?.args.nth(0) {
Some(Value {

View file

@ -27,7 +27,7 @@ impl WholeStreamCommand for AutoenvUnTrust {
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
let tag = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let file_to_untrust = match args.call_info.evaluate(&ctx)?.args.nth(0) {
Some(Value {
value: UntaggedValue::Primitive(Primitive::String(ref path)),

View file

@ -71,7 +71,7 @@ impl WholeStreamCommand for Benchmark {
fn benchmark(args: CommandArgs) -> Result<OutputStream, ShellError> {
let tag = args.call_info.args.span;
let mut context = EvaluationContext::from_args(&args);
let mut context = args.context.clone();
let scope = args.scope().clone();
let cmd_args = BenchmarkArgs {

View file

@ -33,7 +33,7 @@ impl WholeStreamCommand for SubCommand {
pub fn clear(args: CommandArgs) -> Result<OutputStream, ShellError> {
let name = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let result = if let Some(global_cfg) = &mut args.configs().lock().global_config {
global_cfg.vars.clear();

View file

@ -37,7 +37,7 @@ impl WholeStreamCommand for SubCommand {
pub fn get(args: CommandArgs) -> Result<OutputStream, ShellError> {
let name = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let column_path = args.req(0)?;

View file

@ -38,7 +38,7 @@ impl WholeStreamCommand for SubCommand {
pub fn remove(args: CommandArgs) -> Result<OutputStream, ShellError> {
let name = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let remove: Tagged<String> = args.req(0)?;
let key = remove.to_string();

View file

@ -52,7 +52,7 @@ impl WholeStreamCommand for SubCommand {
pub fn set(args: CommandArgs) -> Result<OutputStream, ShellError> {
let name = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let column_path = args.req(0)?;
let mut value: Value = args.req(1)?;

View file

@ -38,7 +38,7 @@ impl WholeStreamCommand for SubCommand {
pub fn set_into(args: CommandArgs) -> Result<OutputStream, ShellError> {
let name = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let set_into: Tagged<String> = args.req(0)?;

View file

@ -42,7 +42,7 @@ impl WholeStreamCommand for EachWindow {
}
fn run(&self, mut args: CommandArgs) -> Result<OutputStream, ShellError> {
let context = Arc::new(EvaluationContext::from_args(&args));
let context = Arc::new(args.context.clone());
let external_redirection = args.call_info.args.external_redirection;
let window_size: Tagged<usize> = args.req(0)?;

View file

@ -82,23 +82,21 @@ impl WholeStreamCommand for Command {
fn is_empty(args: CommandArgs) -> Result<ActionStream, ShellError> {
let tag = args.call_info.name_tag.clone();
let name_tag = Arc::new(args.call_info.name_tag.clone());
let context = Arc::new(EvaluationContext::from_args(&args));
let context = args.context.clone();
let block: Option<CapturedBlock> = args.get_flag("block")?;
let columns: Vec<ColumnPath> = args.rest(0)?;
let input = args.input;
if input.is_empty() {
let stream = vec![UntaggedValue::Primitive(Primitive::Nothing).into_value(tag)].into_iter();
let stream =
vec![UntaggedValue::Primitive(Primitive::Nothing).into_value(&tag)].into_iter();
return Ok(InputStream::from_stream(stream)
.map(move |input| {
let tag = name_tag.clone();
let context = context.clone();
let columns = vec![];
match process_row(context, input, &block, columns, tag) {
match process_row(&context, input, &block, columns) {
Ok(s) => s,
Err(e) => ActionStream::one(Err(e)),
}
@ -109,11 +107,9 @@ fn is_empty(args: CommandArgs) -> Result<ActionStream, ShellError> {
Ok(input
.map(move |input| {
let tag = name_tag.clone();
let context = context.clone();
let columns = columns.clone();
match process_row(context, input, &block, columns, tag) {
match process_row(&context, input, &block, columns) {
Ok(s) => s,
Err(e) => ActionStream::one(Err(e)),
}
@ -123,13 +119,11 @@ fn is_empty(args: CommandArgs) -> Result<ActionStream, ShellError> {
}
fn process_row(
context: Arc<EvaluationContext>,
context: &EvaluationContext,
input: Value,
default_block: &Option<CapturedBlock>,
column_paths: Vec<ColumnPath>,
tag: Arc<Tag>,
) -> Result<ActionStream, ShellError> {
let _tag = &*tag;
let mut out = Arc::new(None);
let results = Arc::make_mut(&mut out);

View file

@ -66,8 +66,8 @@ impl WholeStreamCommand for ForIn {
}
pub fn process_row(
captured_block: Arc<Box<CapturedBlock>>,
context: Arc<EvaluationContext>,
captured_block: &CapturedBlock,
context: &EvaluationContext,
input: Value,
var_name: &str,
external_redirection: ExternalRedirection,
@ -108,12 +108,12 @@ pub(crate) fn make_indexed_item(index: usize, item: Value) -> Value {
dict.into_value()
}
fn for_in(raw_args: CommandArgs) -> Result<OutputStream, ShellError> {
let context = Arc::new(EvaluationContext::from_args(&raw_args));
let external_redirection = raw_args.call_info.args.external_redirection;
fn for_in(args: CommandArgs) -> Result<OutputStream, ShellError> {
let context = args.context.clone();
let external_redirection = args.call_info.args.external_redirection;
//
let numbered: bool = raw_args.call_info.switch_present("numbered");
let positional = raw_args
let numbered: bool = args.call_info.switch_present("numbered");
let positional = args
.call_info
.args
.positional
@ -126,17 +126,14 @@ fn for_in(raw_args: CommandArgs) -> Result<OutputStream, ShellError> {
FromValue::from_value(&evaluate_baseline_expr(&positional[3], &context)?)?;
let input = crate::commands::echo::expand_value_to_stream(rhs);
let block = Arc::new(Box::new(block));
if numbered {
Ok(input
.enumerate()
.map(move |input| {
let block = block.clone();
let context = context.clone();
let row = make_indexed_item(input.0, input.1);
match process_row(block, context, row, &var_name, external_redirection) {
match process_row(&block, &context, row, &var_name, external_redirection) {
Ok(s) => s,
Err(e) => OutputStream::one(Value::error(e)),
}
@ -147,9 +144,8 @@ fn for_in(raw_args: CommandArgs) -> Result<OutputStream, ShellError> {
Ok(input
.map(move |input| {
let block = block.clone();
let context = context.clone();
match process_row(block, context, input, &var_name, external_redirection) {
match process_row(&block, &context, input, &var_name, external_redirection) {
Ok(s) => s,
Err(e) => OutputStream::one(Value::error(e)),
}

View file

@ -39,7 +39,7 @@ impl WholeStreamCommand for Format {
}
fn format_command(args: CommandArgs) -> Result<OutputStream, ShellError> {
let ctx = Arc::new(EvaluationContext::from_args(&args));
let ctx = Arc::new(args.context.clone());
let pattern: Tagged<String> = args.req(0)?;
let format_pattern = format(&pattern);

View file

@ -125,7 +125,7 @@ enum Grouper {
pub fn group_by(args: CommandArgs) -> Result<OutputStream, ShellError> {
let name = args.call_info.name_tag.clone();
let context = Arc::new(EvaluationContext::from_args(&args));
let context = Arc::new(args.context.clone());
let grouper = args.opt(0)?;
let values: Vec<Value> = args.input.collect();

View file

@ -27,7 +27,7 @@ impl WholeStreamCommand for History {
fn history(args: CommandArgs) -> Result<ActionStream, ShellError> {
let tag = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let clear = args.has_flag("clear");

View file

@ -153,7 +153,7 @@ fn process_row(
}
fn insert(args: CommandArgs) -> Result<ActionStream, ShellError> {
let context = Arc::new(EvaluationContext::from_args(&args));
let context = Arc::new(args.context.clone());
let column: ColumnPath = args.req(0)?;
let value: Value = args.req(1)?;
let input = args.input;

View file

@ -30,7 +30,7 @@ impl WholeStreamCommand for SubCommand {
}
fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> {
let ctx = Arc::new(EvaluationContext::from_args(&args));
let ctx = Arc::new(args.context.clone());
let tag = args.call_info.name_tag.clone();
let block: CapturedBlock = args.req(0)?;

View file

@ -30,7 +30,7 @@ impl WholeStreamCommand for SubCommand {
}
fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> {
let ctx = Arc::new(EvaluationContext::from_args(&args));
let ctx = Arc::new(args.context.clone());
let tag = args.call_info.name_tag.clone();
let block: CapturedBlock = args.req(0)?;

View file

@ -55,7 +55,7 @@ impl WholeStreamCommand for Let {
}
pub fn letcmd(args: CommandArgs) -> Result<ActionStream, ShellError> {
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let positional = args
.call_info
.args

View file

@ -49,7 +49,7 @@ impl WholeStreamCommand for LetEnv {
pub fn set_env(args: CommandArgs) -> Result<ActionStream, ShellError> {
let tag = args.call_info.name_tag.clone();
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let name: Tagged<String> = args.req(0)?;
let rhs: CapturedBlock = args.req(2)?;

View file

@ -82,7 +82,7 @@ fn load_env_from_table(
}
pub fn load_env(args: CommandArgs) -> Result<ActionStream, ShellError> {
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
if let Some(values) = args.opt::<Vec<Value>>(0)? {
load_env_from_table(values, &ctx)?;

View file

@ -42,7 +42,7 @@ impl WholeStreamCommand for Merge {
}
fn merge(args: CommandArgs) -> Result<ActionStream, ShellError> {
let context = EvaluationContext::from_args(&args);
let context = &args.context;
let name_tag = args.call_info.name_tag.clone();
let block: CapturedBlock = args.req(0)?;

View file

@ -108,7 +108,7 @@ fn process_row(
fn reduce(args: CommandArgs) -> Result<ActionStream, ShellError> {
let span = args.call_info.name_tag.span;
let context = Arc::new(EvaluationContext::from_args(&args));
let context = Arc::new(args.context.clone());
let reduce_args = ReduceArgs {
block: args.req(0)?,
fold: args.get_flag("fold")?,

View file

@ -30,7 +30,7 @@ impl WholeStreamCommand for SubCommand {
}
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
let ctx = Arc::new(EvaluationContext::from_args(&args));
let ctx = Arc::new(args.context.clone());
let tag = args.call_info.name_tag.clone();
let block: CapturedBlock = args.req(0)?;

View file

@ -30,7 +30,7 @@ impl WholeStreamCommand for SubCommand {
}
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
let ctx = Arc::new(EvaluationContext::from_args(&args));
let ctx = Arc::new(args.context.clone());
let tag = args.call_info.name_tag.clone();
let block: CapturedBlock = args.req(0)?;

View file

@ -40,7 +40,7 @@ impl WholeStreamCommand for Source {
}
pub fn source(args: CommandArgs) -> Result<ActionStream, ShellError> {
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let filename: Tagged<String> = args.req(0)?;
// Note: this is a special case for setting the context from a command

View file

@ -174,7 +174,7 @@ fn process_row(
fn update(args: CommandArgs) -> Result<ActionStream, ShellError> {
let name_tag = Arc::new(args.call_info.name_tag.clone());
let context = Arc::new(EvaluationContext::from_args(&args));
let context = Arc::new(args.context.clone());
let field: ColumnPath = args.req(0)?;
let replacement: Value = args.req(1)?;

View file

@ -57,7 +57,7 @@ impl WholeStreamCommand for Command {
}
}
fn where_command(args: CommandArgs) -> Result<OutputStream, ShellError> {
let context = Arc::new(EvaluationContext::from_args(&args));
let context = Arc::new(args.context.clone());
let tag = args.call_info.name_tag.clone();
let block: CapturedBlock = args.req(0)?;

View file

@ -69,7 +69,7 @@ impl WholeStreamCommand for WithEnv {
fn with_env(args: CommandArgs) -> Result<ActionStream, ShellError> {
let external_redirection = args.call_info.args.external_redirection;
let context = EvaluationContext::from_args(&args);
let context = &args.context;
let variable: Value = args.req(0)?;
let block: CapturedBlock = args.req(1)?;

View file

@ -67,10 +67,6 @@ impl EvaluationContext {
}
}
pub fn from_args(args: &CommandArgs) -> EvaluationContext {
args.context.clone()
}
pub fn error(&self, error: ShellError) {
self.with_errors(|errors| errors.push(error))
}

View file

@ -1,7 +1,6 @@
use crate::command_args::CommandArgs;
use crate::documentation::get_full_help;
use crate::evaluate::block::run_block;
use crate::evaluation_context::EvaluationContext;
use crate::example::Example;
use nu_errors::ShellError;
use nu_parser::ParserScope;
@ -32,7 +31,7 @@ pub trait WholeStreamCommand: Send + Sync {
}
fn run(&self, args: CommandArgs) -> Result<InputStream, ShellError> {
let context = EvaluationContext::from_args(&args);
let context = args.context.clone();
let stream = self.run_with_actions(args)?;
Ok(Box::new(crate::evaluate::internal::InternalIterator {
@ -81,7 +80,7 @@ impl WholeStreamCommand for Arc<Block> {
let external_redirection = args.call_info.args.external_redirection;
let ctx = EvaluationContext::from_args(&args);
let ctx = &args.context;
let evaluated = call_info.evaluate(&ctx)?;
let input = args.input;