mirror of
https://github.com/nushell/nushell.git
synced 2025-04-26 14:18:19 +02:00
Properly error when 'source' argument can't be found (#2836)
This commit is contained in:
parent
15d49e4096
commit
328b09fe04
@ -189,8 +189,9 @@ pub(crate) async fn run_internal_command(
|
|||||||
InputStream::from_stream(futures::stream::iter(vec![]))
|
InputStream::from_stream(futures::stream::iter(vec![]))
|
||||||
}
|
}
|
||||||
CommandAction::SourceScript(filename) => {
|
CommandAction::SourceScript(filename) => {
|
||||||
let contents = std::fs::read_to_string(&filename);
|
let contents = std::fs::read_to_string(&filename.item);
|
||||||
if let Ok(contents) = contents {
|
match contents {
|
||||||
|
Ok(contents) => {
|
||||||
let result = crate::script::run_script_standalone(
|
let result = crate::script::run_script_standalone(
|
||||||
contents, true, &context, false,
|
contents, true, &context, false,
|
||||||
)
|
)
|
||||||
@ -198,17 +199,21 @@ pub(crate) async fn run_internal_command(
|
|||||||
|
|
||||||
if let Err(err) = result {
|
if let Err(err) = result {
|
||||||
return InputStream::one(
|
return InputStream::one(
|
||||||
UntaggedValue::Error(err.into()).into_untagged_value(),
|
UntaggedValue::Error(err.into())
|
||||||
|
.into_untagged_value(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
InputStream::from_stream(futures::stream::iter(vec![]))
|
InputStream::from_stream(futures::stream::iter(vec![]))
|
||||||
} else {
|
}
|
||||||
InputStream::one(
|
Err(_) => {
|
||||||
UntaggedValue::Error(ShellError::untagged_runtime_error(
|
context.error(ShellError::labeled_error(
|
||||||
format!("could not source '{}'", filename),
|
"Can't load file to source",
|
||||||
))
|
"can't load file",
|
||||||
.into_untagged_value(),
|
filename.span(),
|
||||||
)
|
));
|
||||||
|
|
||||||
|
InputStream::from_stream(futures::stream::iter(vec![]))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CommandAction::AddPlugins(path) => {
|
CommandAction::AddPlugins(path) => {
|
||||||
|
@ -43,6 +43,6 @@ pub async fn source(args: CommandArgs) -> Result<OutputStream, ShellError> {
|
|||||||
let (SourceArgs { filename }, _) = args.process().await?;
|
let (SourceArgs { filename }, _) = args.process().await?;
|
||||||
|
|
||||||
Ok(OutputStream::one(ReturnSuccess::action(
|
Ok(OutputStream::one(ReturnSuccess::action(
|
||||||
CommandAction::SourceScript(filename.item),
|
CommandAction::SourceScript(filename),
|
||||||
)))
|
)))
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use crate::value::Value;
|
use crate::value::Value;
|
||||||
use nu_errors::ShellError;
|
use nu_errors::ShellError;
|
||||||
use nu_source::{b, DebugDocBuilder, PrettyDebug};
|
use nu_source::{b, DebugDocBuilder, PrettyDebug, Tagged};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
/// The inner set of actions for the command processor. Each denotes a way to change state in the processor without changing it directly from the command itself.
|
/// The inner set of actions for the command processor. Each denotes a way to change state in the processor without changing it directly from the command itself.
|
||||||
@ -27,7 +27,7 @@ pub enum CommandAction {
|
|||||||
/// Add plugins from path given
|
/// Add plugins from path given
|
||||||
AddPlugins(String),
|
AddPlugins(String),
|
||||||
/// Run the given script in the current context (given filename)
|
/// Run the given script in the current context (given filename)
|
||||||
SourceScript(String),
|
SourceScript(Tagged<String>),
|
||||||
/// Go to the previous shell in the shell ring buffer
|
/// Go to the previous shell in the shell ring buffer
|
||||||
PreviousShell,
|
PreviousShell,
|
||||||
/// Go to the next shell in the shell ring buffer
|
/// Go to the next shell in the shell ring buffer
|
||||||
|
Loading…
Reference in New Issue
Block a user