Source path including tilda (#3059)

* Use expand_path to handle the path including tilda

* Publish path::expand_path for using in nu-command

* cargo fmt

Co-authored-by: Wataru Yamaguchi <nagisamark2@gmail.com>
This commit is contained in:
WatsonThink 2021-02-15 17:41:49 +09:00 committed by GitHub
parent 48a90fea70
commit 0795d56c1c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 2 deletions

View file

@ -2,6 +2,7 @@ use crate::prelude::*;
use nu_engine::WholeStreamCommand;
use nu_errors::ShellError;
use nu_parser::expand_path;
use nu_protocol::{Signature, SyntaxShape};
use nu_source::Tagged;
@ -46,7 +47,7 @@ pub async fn source(args: CommandArgs) -> Result<OutputStream, ShellError> {
// Note: this is a special case for setting the context from a command
// In this case, if we don't set it now, we'll lose the scope that this
// variable should be set into.
let contents = std::fs::read_to_string(&filename.item);
let contents = std::fs::read_to_string(expand_path(&filename.item).into_owned());
match contents {
Ok(contents) => {
let result = crate::script::run_script_standalone(contents, true, &ctx, false).await;

View file

@ -15,6 +15,7 @@ pub use lex::lexer::{lex, parse_block};
pub use lex::tokens::{LiteBlock, LiteCommand, LiteGroup, LitePipeline};
pub use parse::{classify_block, garbage, parse, parse_full_column_path, parse_math_expression};
pub use path::expand_ndots;
pub use path::expand_path;
pub use scope::ParserScope;
pub use shapes::shapes;
pub use signature::{Signature, SignatureRegistry};

View file

@ -1788,7 +1788,9 @@ fn parse_call(
)),
);
}
if let Ok(contents) = std::fs::read_to_string(&lite_cmd.parts[1].item) {
if let Ok(contents) =
std::fs::read_to_string(expand_path(&lite_cmd.parts[1].item).into_owned())
{
let _ = parse(&contents, 0, scope);
} else {
return (