mirror of
https://github.com/nushell/nushell.git
synced 2025-04-19 02:38:20 +02:00
Rename the Path and Pattern primitives (#2889)
* Rename the Path primitive to FilePath * Rename glob pattern also * more fun * Fix the Windows path methods
This commit is contained in:
parent
2dcb16870b
commit
0e13d9fbaa
@ -134,7 +134,7 @@ pub async fn autoview(context: RunnableContext) -> Result<OutputStream, ShellErr
|
|||||||
out!("{}", s);
|
out!("{}", s);
|
||||||
}
|
}
|
||||||
Value {
|
Value {
|
||||||
value: UntaggedValue::Primitive(Primitive::Path(s)),
|
value: UntaggedValue::Primitive(Primitive::FilePath(s)),
|
||||||
..
|
..
|
||||||
} => {
|
} => {
|
||||||
out!("{}", s.display());
|
out!("{}", s.display());
|
||||||
|
@ -23,7 +23,7 @@ impl WholeStreamCommand for Cd {
|
|||||||
fn signature(&self) -> Signature {
|
fn signature(&self) -> Signature {
|
||||||
Signature::build("cd").optional(
|
Signature::build("cd").optional(
|
||||||
"directory",
|
"directory",
|
||||||
SyntaxShape::Path,
|
SyntaxShape::FilePath,
|
||||||
"the directory to change to",
|
"the directory to change to",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ impl WholeStreamCommand for SubCommand {
|
|||||||
fn signature(&self) -> Signature {
|
fn signature(&self) -> Signature {
|
||||||
Signature::build("config load").required(
|
Signature::build("config load").required(
|
||||||
"load",
|
"load",
|
||||||
SyntaxShape::Path,
|
SyntaxShape::FilePath,
|
||||||
"Path to load the config from",
|
"Path to load the config from",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,6 @@ pub async fn path(args: CommandArgs) -> Result<OutputStream, ShellError> {
|
|||||||
let path = config::default_path()?;
|
let path = config::default_path()?;
|
||||||
|
|
||||||
Ok(OutputStream::one(ReturnSuccess::value(
|
Ok(OutputStream::one(ReturnSuccess::value(
|
||||||
UntaggedValue::Primitive(Primitive::Path(path)).into_value(args.call_info.name_tag),
|
UntaggedValue::Primitive(Primitive::FilePath(path)).into_value(args.call_info.name_tag),
|
||||||
)))
|
)))
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,8 @@ impl WholeStreamCommand for Cpy {
|
|||||||
|
|
||||||
fn signature(&self) -> Signature {
|
fn signature(&self) -> Signature {
|
||||||
Signature::build("cp")
|
Signature::build("cp")
|
||||||
.required("src", SyntaxShape::Pattern, "the place to copy from")
|
.required("src", SyntaxShape::GlobPattern, "the place to copy from")
|
||||||
.required("dst", SyntaxShape::Path, "the place to copy to")
|
.required("dst", SyntaxShape::FilePath, "the place to copy to")
|
||||||
.switch(
|
.switch(
|
||||||
"recursive",
|
"recursive",
|
||||||
"copy recursively through subdirectories",
|
"copy recursively through subdirectories",
|
||||||
|
@ -38,7 +38,7 @@ impl WholeStreamCommand for Du {
|
|||||||
|
|
||||||
fn signature(&self) -> Signature {
|
fn signature(&self) -> Signature {
|
||||||
Signature::build(NAME)
|
Signature::build(NAME)
|
||||||
.optional("path", SyntaxShape::Pattern, "starting directory")
|
.optional("path", SyntaxShape::GlobPattern, "starting directory")
|
||||||
.switch(
|
.switch(
|
||||||
"all",
|
"all",
|
||||||
"Output file sizes as well as directory sizes",
|
"Output file sizes as well as directory sizes",
|
||||||
@ -51,7 +51,7 @@ impl WholeStreamCommand for Du {
|
|||||||
)
|
)
|
||||||
.named(
|
.named(
|
||||||
"exclude",
|
"exclude",
|
||||||
SyntaxShape::Pattern,
|
SyntaxShape::GlobPattern,
|
||||||
"Exclude these file names",
|
"Exclude these file names",
|
||||||
Some('x'),
|
Some('x'),
|
||||||
)
|
)
|
||||||
@ -347,7 +347,7 @@ impl From<DirInfo> for Value {
|
|||||||
|
|
||||||
r.insert(
|
r.insert(
|
||||||
"path".to_string(),
|
"path".to_string(),
|
||||||
UntaggedValue::path(d.path).into_value(&d.tag),
|
UntaggedValue::filepath(d.path).into_value(&d.tag),
|
||||||
);
|
);
|
||||||
|
|
||||||
r.insert(
|
r.insert(
|
||||||
@ -389,7 +389,7 @@ impl From<FileInfo> for Value {
|
|||||||
|
|
||||||
r.insert(
|
r.insert(
|
||||||
"path".to_string(),
|
"path".to_string(),
|
||||||
UntaggedValue::path(f.path).into_value(&f.tag),
|
UntaggedValue::filepath(f.path).into_value(&f.tag),
|
||||||
);
|
);
|
||||||
|
|
||||||
r.insert(
|
r.insert(
|
||||||
|
@ -27,7 +27,7 @@ impl WholeStreamCommand for Enter {
|
|||||||
Signature::build("enter")
|
Signature::build("enter")
|
||||||
.required(
|
.required(
|
||||||
"location",
|
"location",
|
||||||
SyntaxShape::Path,
|
SyntaxShape::FilePath,
|
||||||
"the location to create a new shell from",
|
"the location to create a new shell from",
|
||||||
)
|
)
|
||||||
.named(
|
.named(
|
||||||
|
@ -21,8 +21,11 @@ impl WholeStreamCommand for Exec {
|
|||||||
|
|
||||||
fn signature(&self) -> Signature {
|
fn signature(&self) -> Signature {
|
||||||
Signature::build("exec")
|
Signature::build("exec")
|
||||||
.required("command", SyntaxShape::Path, "the command to execute")
|
.required("command", SyntaxShape::FilePath, "the command to execute")
|
||||||
.rest(SyntaxShape::Pattern, "any additional arguments for command")
|
.rest(
|
||||||
|
SyntaxShape::GlobPattern,
|
||||||
|
"any additional arguments for command",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn usage(&self) -> &str {
|
fn usage(&self) -> &str {
|
||||||
|
@ -28,7 +28,7 @@ impl WholeStreamCommand for Ls {
|
|||||||
Signature::build("ls")
|
Signature::build("ls")
|
||||||
.optional(
|
.optional(
|
||||||
"path",
|
"path",
|
||||||
SyntaxShape::Pattern,
|
SyntaxShape::GlobPattern,
|
||||||
"a path to get the directory contents from",
|
"a path to get the directory contents from",
|
||||||
)
|
)
|
||||||
.switch("all", "Show hidden files", Some('a'))
|
.switch("all", "Show hidden files", Some('a'))
|
||||||
|
@ -22,7 +22,10 @@ impl WholeStreamCommand for Mkdir {
|
|||||||
|
|
||||||
fn signature(&self) -> Signature {
|
fn signature(&self) -> Signature {
|
||||||
Signature::build("mkdir")
|
Signature::build("mkdir")
|
||||||
.rest(SyntaxShape::Path, "the name(s) of the path(s) to create")
|
.rest(
|
||||||
|
SyntaxShape::FilePath,
|
||||||
|
"the name(s) of the path(s) to create",
|
||||||
|
)
|
||||||
.switch("show-created-paths", "show the path(s) created.", Some('s'))
|
.switch("show-created-paths", "show the path(s) created.", Some('s'))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,12 +23,12 @@ impl WholeStreamCommand for Mv {
|
|||||||
Signature::build("mv")
|
Signature::build("mv")
|
||||||
.required(
|
.required(
|
||||||
"source",
|
"source",
|
||||||
SyntaxShape::Pattern,
|
SyntaxShape::GlobPattern,
|
||||||
"the location to move files/directories from",
|
"the location to move files/directories from",
|
||||||
)
|
)
|
||||||
.required(
|
.required(
|
||||||
"destination",
|
"destination",
|
||||||
SyntaxShape::Path,
|
SyntaxShape::FilePath,
|
||||||
"the location to move files/directories to",
|
"the location to move files/directories to",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ impl WholeStreamCommand for SubCommand {
|
|||||||
fn signature(&self) -> Signature {
|
fn signature(&self) -> Signature {
|
||||||
Signature::build("nu plugin").named(
|
Signature::build("nu plugin").named(
|
||||||
"load",
|
"load",
|
||||||
SyntaxShape::Path,
|
SyntaxShape::FilePath,
|
||||||
"a path to load the plugins from",
|
"a path to load the plugins from",
|
||||||
Some('l'),
|
Some('l'),
|
||||||
)
|
)
|
||||||
|
@ -29,7 +29,7 @@ impl WholeStreamCommand for Open {
|
|||||||
Signature::build(self.name())
|
Signature::build(self.name())
|
||||||
.required(
|
.required(
|
||||||
"path",
|
"path",
|
||||||
SyntaxShape::Path,
|
SyntaxShape::FilePath,
|
||||||
"the file path to load values from",
|
"the file path to load values from",
|
||||||
)
|
)
|
||||||
.switch(
|
.switch(
|
||||||
|
@ -59,7 +59,7 @@ impl WholeStreamCommand for PathBasename {
|
|||||||
Example {
|
Example {
|
||||||
description: "Replace basename of a path",
|
description: "Replace basename of a path",
|
||||||
example: "echo 'C:\\Users\\joe\\test.txt' | path basename -r 'spam.png'",
|
example: "echo 'C:\\Users\\joe\\test.txt' | path basename -r 'spam.png'",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path(
|
result: Some(vec![Value::from(UntaggedValue::filepath(
|
||||||
"C:\\Users\\joe\\spam.png",
|
"C:\\Users\\joe\\spam.png",
|
||||||
))]),
|
))]),
|
||||||
},
|
},
|
||||||
@ -77,7 +77,9 @@ impl WholeStreamCommand for PathBasename {
|
|||||||
Example {
|
Example {
|
||||||
description: "Replace basename of a path",
|
description: "Replace basename of a path",
|
||||||
example: "echo '/home/joe/test.txt' | path basename -r 'spam.png'",
|
example: "echo '/home/joe/test.txt' | path basename -r 'spam.png'",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path("/home/joe/spam.png"))]),
|
result: Some(vec![Value::from(UntaggedValue::filepath(
|
||||||
|
"/home/joe/spam.png",
|
||||||
|
))]),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -85,7 +87,7 @@ impl WholeStreamCommand for PathBasename {
|
|||||||
|
|
||||||
fn action(path: &Path, args: Arc<DefaultArguments>) -> UntaggedValue {
|
fn action(path: &Path, args: Arc<DefaultArguments>) -> UntaggedValue {
|
||||||
match args.replace {
|
match args.replace {
|
||||||
Some(ref basename) => UntaggedValue::path(path.with_file_name(basename)),
|
Some(ref basename) => UntaggedValue::filepath(path.with_file_name(basename)),
|
||||||
None => UntaggedValue::string(match path.file_name() {
|
None => UntaggedValue::string(match path.file_name() {
|
||||||
Some(filename) => filename.to_string_lossy(),
|
Some(filename) => filename.to_string_lossy(),
|
||||||
None => "".into(),
|
None => "".into(),
|
||||||
|
@ -69,20 +69,20 @@ impl WholeStreamCommand for PathDirname {
|
|||||||
Example {
|
Example {
|
||||||
description: "Get dirname of a path",
|
description: "Get dirname of a path",
|
||||||
example: "echo 'C:\\Users\\joe\\code\\test.txt' | path dirname",
|
example: "echo 'C:\\Users\\joe\\code\\test.txt' | path dirname",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path(
|
result: Some(vec![Value::from(UntaggedValue::filepath(
|
||||||
"C:\\Users\\joe\\code",
|
"C:\\Users\\joe\\code",
|
||||||
))]),
|
))]),
|
||||||
},
|
},
|
||||||
Example {
|
Example {
|
||||||
description: "Set how many levels up to skip",
|
description: "Set how many levels up to skip",
|
||||||
example: "echo 'C:\\Users\\joe\\code\\test.txt' | path dirname -n 2",
|
example: "echo 'C:\\Users\\joe\\code\\test.txt' | path dirname -n 2",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path("C:\\Users\\joe"))]),
|
result: Some(vec![Value::from(UntaggedValue::filepath("C:\\Users\\joe"))]),
|
||||||
},
|
},
|
||||||
Example {
|
Example {
|
||||||
description: "Replace the part that would be returned with custom string",
|
description: "Replace the part that would be returned with custom string",
|
||||||
example:
|
example:
|
||||||
"echo 'C:\\Users\\joe\\code\\test.txt' | path dirname -n 2 -r C:\\Users\\viking",
|
"echo 'C:\\Users\\joe\\code\\test.txt' | path dirname -n 2 -r C:\\Users\\viking",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path(
|
result: Some(vec![Value::from(UntaggedValue::filepath(
|
||||||
"C:\\Users\\viking\\code\\test.txt",
|
"C:\\Users\\viking\\code\\test.txt",
|
||||||
))]),
|
))]),
|
||||||
},
|
},
|
||||||
@ -95,17 +95,17 @@ impl WholeStreamCommand for PathDirname {
|
|||||||
Example {
|
Example {
|
||||||
description: "Get dirname of a path",
|
description: "Get dirname of a path",
|
||||||
example: "echo '/home/joe/code/test.txt' | path dirname",
|
example: "echo '/home/joe/code/test.txt' | path dirname",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path("/home/joe/code"))]),
|
result: Some(vec![Value::from(UntaggedValue::filepath("/home/joe/code"))]),
|
||||||
},
|
},
|
||||||
Example {
|
Example {
|
||||||
description: "Set how many levels up to skip",
|
description: "Set how many levels up to skip",
|
||||||
example: "echo '/home/joe/code/test.txt' | path dirname -n 2",
|
example: "echo '/home/joe/code/test.txt' | path dirname -n 2",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path("/home/joe"))]),
|
result: Some(vec![Value::from(UntaggedValue::filepath("/home/joe"))]),
|
||||||
},
|
},
|
||||||
Example {
|
Example {
|
||||||
description: "Replace the part that would be returned with custom string",
|
description: "Replace the part that would be returned with custom string",
|
||||||
example: "echo '/home/joe/code/test.txt' | path dirname -n 2 -r /home/viking",
|
example: "echo '/home/joe/code/test.txt' | path dirname -n 2 -r /home/viking",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path(
|
result: Some(vec![Value::from(UntaggedValue::filepath(
|
||||||
"/home/viking/code/test.txt",
|
"/home/viking/code/test.txt",
|
||||||
))]),
|
))]),
|
||||||
},
|
},
|
||||||
@ -132,12 +132,12 @@ fn action(path: &Path, args: Arc<DefaultArguments>) -> UntaggedValue {
|
|||||||
Some(ref newdir) => {
|
Some(ref newdir) => {
|
||||||
let remainder = path.strip_prefix(dirname).unwrap_or(dirname);
|
let remainder = path.strip_prefix(dirname).unwrap_or(dirname);
|
||||||
if !remainder.as_os_str().is_empty() {
|
if !remainder.as_os_str().is_empty() {
|
||||||
UntaggedValue::path(Path::new(newdir).join(remainder))
|
UntaggedValue::filepath(Path::new(newdir).join(remainder))
|
||||||
} else {
|
} else {
|
||||||
UntaggedValue::path(Path::new(newdir))
|
UntaggedValue::filepath(Path::new(newdir))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => UntaggedValue::path(dirname),
|
None => UntaggedValue::filepath(dirname),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ fn action(path: &Path, _args: Arc<DefaultArguments>) -> UntaggedValue {
|
|||||||
let ps = path.to_string_lossy();
|
let ps = path.to_string_lossy();
|
||||||
let expanded = shellexpand::tilde(&ps);
|
let expanded = shellexpand::tilde(&ps);
|
||||||
let path: &Path = expanded.as_ref().as_ref();
|
let path: &Path = expanded.as_ref().as_ref();
|
||||||
UntaggedValue::path(dunce::canonicalize(path).unwrap_or_else(|_| PathBuf::from(path)))
|
UntaggedValue::filepath(dunce::canonicalize(path).unwrap_or_else(|_| PathBuf::from(path)))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -63,12 +63,12 @@ impl WholeStreamCommand for PathExtension {
|
|||||||
Example {
|
Example {
|
||||||
description: "Replace an extension with a custom string",
|
description: "Replace an extension with a custom string",
|
||||||
example: "echo 'test.txt' | path extension -r md",
|
example: "echo 'test.txt' | path extension -r md",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path("test.md"))]),
|
result: Some(vec![Value::from(UntaggedValue::filepath("test.md"))]),
|
||||||
},
|
},
|
||||||
Example {
|
Example {
|
||||||
description: "To replace more complex extensions:",
|
description: "To replace more complex extensions:",
|
||||||
example: "echo 'test.tar.gz' | path extension -r '' | path extension -r txt",
|
example: "echo 'test.tar.gz' | path extension -r '' | path extension -r txt",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path("test.txt"))]),
|
result: Some(vec![Value::from(UntaggedValue::filepath("test.txt"))]),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ impl WholeStreamCommand for PathExtension {
|
|||||||
|
|
||||||
fn action(path: &Path, args: Arc<DefaultArguments>) -> UntaggedValue {
|
fn action(path: &Path, args: Arc<DefaultArguments>) -> UntaggedValue {
|
||||||
match args.replace {
|
match args.replace {
|
||||||
Some(ref extension) => UntaggedValue::path(path.with_extension(extension)),
|
Some(ref extension) => UntaggedValue::filepath(path.with_extension(extension)),
|
||||||
None => UntaggedValue::string(match path.extension() {
|
None => UntaggedValue::string(match path.extension() {
|
||||||
Some(extension) => extension.to_string_lossy(),
|
Some(extension) => extension.to_string_lossy(),
|
||||||
None => "".into(),
|
None => "".into(),
|
||||||
|
@ -86,7 +86,7 @@ impl WholeStreamCommand for PathFilestem {
|
|||||||
Example {
|
Example {
|
||||||
description: "Replace the filestem that would be returned",
|
description: "Replace the filestem that would be returned",
|
||||||
example: "echo 'C:\\Users\\joe\\bacon_lettuce.egg.gz' | path filestem -p bacon_ -s .egg.gz -r spam",
|
example: "echo 'C:\\Users\\joe\\bacon_lettuce.egg.gz' | path filestem -p bacon_ -s .egg.gz -r spam",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path("C:\\Users\\joe\\bacon_spam.egg.gz"))]),
|
result: Some(vec![Value::from(UntaggedValue::filepath("C:\\Users\\joe\\bacon_spam.egg.gz"))]),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -107,7 +107,7 @@ impl WholeStreamCommand for PathFilestem {
|
|||||||
Example {
|
Example {
|
||||||
description: "Replace the filestem that would be returned",
|
description: "Replace the filestem that would be returned",
|
||||||
example: "echo '/home/joe/bacon_lettuce.egg.gz' | path filestem -p bacon_ -s .egg.gz -r spam",
|
example: "echo '/home/joe/bacon_lettuce.egg.gz' | path filestem -p bacon_ -s .egg.gz -r spam",
|
||||||
result: Some(vec![Value::from(UntaggedValue::path("/home/joe/bacon_spam.egg.gz"))]),
|
result: Some(vec![Value::from(UntaggedValue::filepath("/home/joe/bacon_spam.egg.gz"))]),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -152,7 +152,7 @@ fn action(path: &Path, args: Arc<DefaultArguments>) -> UntaggedValue {
|
|||||||
match args.replace {
|
match args.replace {
|
||||||
Some(ref replace) => {
|
Some(ref replace) => {
|
||||||
let new_name = prefix + replace + &suffix;
|
let new_name = prefix + replace + &suffix;
|
||||||
UntaggedValue::path(path.with_file_name(&new_name))
|
UntaggedValue::filepath(path.with_file_name(&new_name))
|
||||||
}
|
}
|
||||||
None => UntaggedValue::string(stem),
|
None => UntaggedValue::string(stem),
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ where
|
|||||||
F: Fn(&Path, Arc<DefaultArguments>) -> UntaggedValue + Send + 'static,
|
F: Fn(&Path, Arc<DefaultArguments>) -> UntaggedValue + Send + 'static,
|
||||||
{
|
{
|
||||||
let v = match &v.value {
|
let v = match &v.value {
|
||||||
UntaggedValue::Primitive(Primitive::Path(buf)) => action(buf, args).into_value(v.tag()),
|
UntaggedValue::Primitive(Primitive::FilePath(buf)) => action(buf, args).into_value(v.tag()),
|
||||||
UntaggedValue::Primitive(Primitive::String(s)) => {
|
UntaggedValue::Primitive(Primitive::String(s)) => {
|
||||||
action(s.as_ref(), args).into_value(v.tag())
|
action(s.as_ref(), args).into_value(v.tag())
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ impl WholeStreamCommand for Remove {
|
|||||||
)
|
)
|
||||||
.switch("recursive", "delete subdirectories recursively", Some('r'))
|
.switch("recursive", "delete subdirectories recursively", Some('r'))
|
||||||
.switch("force", "suppress error when no file", Some('f'))
|
.switch("force", "suppress error when no file", Some('f'))
|
||||||
.rest(SyntaxShape::Pattern, "the file path(s) to remove")
|
.rest(SyntaxShape::GlobPattern, "the file path(s) to remove")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn usage(&self) -> &str {
|
fn usage(&self) -> &str {
|
||||||
|
@ -140,7 +140,11 @@ impl WholeStreamCommand for Save {
|
|||||||
|
|
||||||
fn signature(&self) -> Signature {
|
fn signature(&self) -> Signature {
|
||||||
Signature::build("save")
|
Signature::build("save")
|
||||||
.optional("path", SyntaxShape::Path, "the path to save contents to")
|
.optional(
|
||||||
|
"path",
|
||||||
|
SyntaxShape::FilePath,
|
||||||
|
"the path to save contents to",
|
||||||
|
)
|
||||||
.switch(
|
.switch(
|
||||||
"raw",
|
"raw",
|
||||||
"treat values as-is rather than auto-converting based on file extension",
|
"treat values as-is rather than auto-converting based on file extension",
|
||||||
|
@ -112,8 +112,8 @@ pub fn clone_tagged_value(v: &Value) -> Value {
|
|||||||
UntaggedValue::Primitive(Primitive::Int(i)) => {
|
UntaggedValue::Primitive(Primitive::Int(i)) => {
|
||||||
UntaggedValue::Primitive(Primitive::Int(i.clone()))
|
UntaggedValue::Primitive(Primitive::Int(i.clone()))
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::Path(x)) => {
|
UntaggedValue::Primitive(Primitive::FilePath(x)) => {
|
||||||
UntaggedValue::Primitive(Primitive::Path(x.clone()))
|
UntaggedValue::Primitive(Primitive::FilePath(x.clone()))
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::Filesize(b)) => {
|
UntaggedValue::Primitive(Primitive::Filesize(b)) => {
|
||||||
UntaggedValue::Primitive(Primitive::Filesize(*b))
|
UntaggedValue::Primitive(Primitive::Filesize(*b))
|
||||||
@ -136,7 +136,7 @@ fn to_string_tagged_value(v: &Value) -> Result<String, ShellError> {
|
|||||||
| UntaggedValue::Primitive(Primitive::Filesize(_))
|
| UntaggedValue::Primitive(Primitive::Filesize(_))
|
||||||
| UntaggedValue::Primitive(Primitive::Boolean(_))
|
| UntaggedValue::Primitive(Primitive::Boolean(_))
|
||||||
| UntaggedValue::Primitive(Primitive::Decimal(_))
|
| UntaggedValue::Primitive(Primitive::Decimal(_))
|
||||||
| UntaggedValue::Primitive(Primitive::Path(_))
|
| UntaggedValue::Primitive(Primitive::FilePath(_))
|
||||||
| UntaggedValue::Primitive(Primitive::Int(_)) => as_string(v),
|
| UntaggedValue::Primitive(Primitive::Int(_)) => as_string(v),
|
||||||
UntaggedValue::Primitive(Primitive::Date(d)) => Ok(d.to_string()),
|
UntaggedValue::Primitive(Primitive::Date(d)) => Ok(d.to_string()),
|
||||||
UntaggedValue::Primitive(Primitive::Nothing) => Ok(String::new()),
|
UntaggedValue::Primitive(Primitive::Nothing) => Ok(String::new()),
|
||||||
|
@ -96,7 +96,7 @@ pub fn value_to_json_value(v: &Value) -> Result<serde_json::Value, ShellError> {
|
|||||||
)?))
|
)?))
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::Nothing) => serde_json::Value::Null,
|
UntaggedValue::Primitive(Primitive::Nothing) => serde_json::Value::Null,
|
||||||
UntaggedValue::Primitive(Primitive::Pattern(s)) => serde_json::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::GlobPattern(s)) => serde_json::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::String(s)) => serde_json::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::String(s)) => serde_json::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => serde_json::Value::Array(
|
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => serde_json::Value::Array(
|
||||||
path.iter()
|
path.iter()
|
||||||
@ -113,7 +113,7 @@ pub fn value_to_json_value(v: &Value) -> Result<serde_json::Value, ShellError> {
|
|||||||
})
|
})
|
||||||
.collect::<Result<Vec<serde_json::Value>, ShellError>>()?,
|
.collect::<Result<Vec<serde_json::Value>, ShellError>>()?,
|
||||||
),
|
),
|
||||||
UntaggedValue::Primitive(Primitive::Path(s)) => {
|
UntaggedValue::Primitive(Primitive::FilePath(s)) => {
|
||||||
serde_json::Value::String(s.display().to_string())
|
serde_json::Value::String(s.display().to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,9 +58,9 @@ fn helper(v: &Value) -> Result<toml::Value, ShellError> {
|
|||||||
UntaggedValue::Primitive(Primitive::Nothing) => {
|
UntaggedValue::Primitive(Primitive::Nothing) => {
|
||||||
toml::Value::String("<Nothing>".to_string())
|
toml::Value::String("<Nothing>".to_string())
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::Pattern(s)) => toml::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::GlobPattern(s)) => toml::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::String(s)) => toml::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::String(s)) => toml::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::Path(s)) => {
|
UntaggedValue::Primitive(Primitive::FilePath(s)) => {
|
||||||
toml::Value::String(s.display().to_string())
|
toml::Value::String(s.display().to_string())
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => toml::Value::Array(
|
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => toml::Value::Array(
|
||||||
|
@ -58,7 +58,7 @@ pub fn value_to_yaml_value(v: &Value) -> Result<serde_yaml::Value, ShellError> {
|
|||||||
)?))
|
)?))
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::Nothing) => serde_yaml::Value::Null,
|
UntaggedValue::Primitive(Primitive::Nothing) => serde_yaml::Value::Null,
|
||||||
UntaggedValue::Primitive(Primitive::Pattern(s)) => serde_yaml::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::GlobPattern(s)) => serde_yaml::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::String(s)) => serde_yaml::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::String(s)) => serde_yaml::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => {
|
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => {
|
||||||
let mut out = vec![];
|
let mut out = vec![];
|
||||||
@ -79,7 +79,7 @@ pub fn value_to_yaml_value(v: &Value) -> Result<serde_yaml::Value, ShellError> {
|
|||||||
|
|
||||||
serde_yaml::Value::Sequence(out)
|
serde_yaml::Value::Sequence(out)
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::Path(s)) => {
|
UntaggedValue::Primitive(Primitive::FilePath(s)) => {
|
||||||
serde_yaml::Value::String(s.display().to_string())
|
serde_yaml::Value::String(s.display().to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,10 +23,10 @@ impl WholeStreamCommand for Touch {
|
|||||||
Signature::build("touch")
|
Signature::build("touch")
|
||||||
.required(
|
.required(
|
||||||
"filename",
|
"filename",
|
||||||
SyntaxShape::Path,
|
SyntaxShape::FilePath,
|
||||||
"the path of the file you want to create",
|
"the path of the file you want to create",
|
||||||
)
|
)
|
||||||
.rest(SyntaxShape::Path, "additional files to create")
|
.rest(SyntaxShape::FilePath, "additional files to create")
|
||||||
}
|
}
|
||||||
fn usage(&self) -> &str {
|
fn usage(&self) -> &str {
|
||||||
"creates one or more files"
|
"creates one or more files"
|
||||||
|
@ -60,7 +60,7 @@ macro_rules! entry_path {
|
|||||||
($arg:expr, $path:expr, $tag:expr) => {
|
($arg:expr, $path:expr, $tag:expr) => {
|
||||||
entry(
|
entry(
|
||||||
$arg.clone(),
|
$arg.clone(),
|
||||||
UntaggedValue::Primitive(Primitive::Path($path)).into_value($tag.clone()),
|
UntaggedValue::Primitive(Primitive::FilePath($path)).into_value($tag.clone()),
|
||||||
false,
|
false,
|
||||||
$tag,
|
$tag,
|
||||||
)
|
)
|
||||||
|
@ -425,7 +425,7 @@ impl<'de, 'a> de::Deserializer<'de> for &'a mut ConfigDeserializer<'de> {
|
|||||||
..
|
..
|
||||||
} => visit::<Tagged<bool>, _>(false.tagged(tag), name, fields, visitor),
|
} => visit::<Tagged<bool>, _>(false.tagged(tag), name, fields, visitor),
|
||||||
Value {
|
Value {
|
||||||
value: UntaggedValue::Primitive(Primitive::Path(p)),
|
value: UntaggedValue::Primitive(Primitive::FilePath(p)),
|
||||||
..
|
..
|
||||||
} => visit::<Tagged<PathBuf>, _>(p.tagged(tag), name, fields, visitor),
|
} => visit::<Tagged<PathBuf>, _>(p.tagged(tag), name, fields, visitor),
|
||||||
Value {
|
Value {
|
||||||
|
@ -29,7 +29,7 @@ pub(crate) async fn evaluate_baseline_expr(
|
|||||||
"Invalid external word".spanned(tag.span),
|
"Invalid external word".spanned(tag.span),
|
||||||
ArgumentError::InvalidExternalWord,
|
ArgumentError::InvalidExternalWord,
|
||||||
)),
|
)),
|
||||||
Expression::FilePath(path) => Ok(UntaggedValue::path(path.clone()).into_value(tag)),
|
Expression::FilePath(path) => Ok(UntaggedValue::filepath(path.clone()).into_value(tag)),
|
||||||
Expression::Synthetic(hir::Synthetic::String(s)) => {
|
Expression::Synthetic(hir::Synthetic::String(s)) => {
|
||||||
Ok(UntaggedValue::string(s).into_untagged_value())
|
Ok(UntaggedValue::string(s).into_untagged_value())
|
||||||
}
|
}
|
||||||
@ -213,7 +213,7 @@ fn evaluate_literal(literal: &hir::Literal, span: Span) -> Value {
|
|||||||
},
|
},
|
||||||
hir::Literal::Size(int, unit) => unit.compute(&int).into_value(span),
|
hir::Literal::Size(int, unit) => unit.compute(&int).into_value(span),
|
||||||
hir::Literal::String(string) => UntaggedValue::string(string).into_value(span),
|
hir::Literal::String(string) => UntaggedValue::string(string).into_value(span),
|
||||||
hir::Literal::GlobPattern(pattern) => UntaggedValue::pattern(pattern).into_value(span),
|
hir::Literal::GlobPattern(pattern) => UntaggedValue::glob_pattern(pattern).into_value(span),
|
||||||
hir::Literal::Bare(bare) => UntaggedValue::string(bare.clone()).into_value(span),
|
hir::Literal::Bare(bare) => UntaggedValue::string(bare.clone()).into_value(span),
|
||||||
hir::Literal::Operator(_) => unimplemented!("Not sure what to do with operator yet"),
|
hir::Literal::Operator(_) => unimplemented!("Not sure what to do with operator yet"),
|
||||||
}
|
}
|
||||||
|
@ -23,30 +23,33 @@ pub fn nu(env: &IndexMap<String, String>, tag: impl Into<Tag>) -> Result<Value,
|
|||||||
let path = std::env::var_os("PATH");
|
let path = std::env::var_os("PATH");
|
||||||
if let Some(paths) = path {
|
if let Some(paths) = path {
|
||||||
for path in std::env::split_paths(&paths) {
|
for path in std::env::split_paths(&paths) {
|
||||||
table.push(UntaggedValue::path(path).into_value(&tag));
|
table.push(UntaggedValue::filepath(path).into_value(&tag));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nu_dict.insert_value("path", UntaggedValue::table(&table).into_value(&tag));
|
nu_dict.insert_value("path", UntaggedValue::table(&table).into_value(&tag));
|
||||||
|
|
||||||
let path = std::env::current_dir()?;
|
let path = std::env::current_dir()?;
|
||||||
nu_dict.insert_value("cwd", UntaggedValue::path(path).into_value(&tag));
|
nu_dict.insert_value("cwd", UntaggedValue::filepath(path).into_value(&tag));
|
||||||
|
|
||||||
if let Some(home) = crate::shell::filesystem_shell::homedir_if_possible() {
|
if let Some(home) = crate::shell::filesystem_shell::homedir_if_possible() {
|
||||||
nu_dict.insert_value("home-dir", UntaggedValue::path(home).into_value(&tag));
|
nu_dict.insert_value("home-dir", UntaggedValue::filepath(home).into_value(&tag));
|
||||||
}
|
}
|
||||||
|
|
||||||
let temp = std::env::temp_dir();
|
let temp = std::env::temp_dir();
|
||||||
nu_dict.insert_value("temp-dir", UntaggedValue::path(temp).into_value(&tag));
|
nu_dict.insert_value("temp-dir", UntaggedValue::filepath(temp).into_value(&tag));
|
||||||
|
|
||||||
let config = nu_data::config::default_path()?;
|
let config = nu_data::config::default_path()?;
|
||||||
nu_dict.insert_value("config-path", UntaggedValue::path(config).into_value(&tag));
|
nu_dict.insert_value(
|
||||||
|
"config-path",
|
||||||
|
UntaggedValue::filepath(config).into_value(&tag),
|
||||||
|
);
|
||||||
|
|
||||||
#[cfg(feature = "rustyline-support")]
|
#[cfg(feature = "rustyline-support")]
|
||||||
{
|
{
|
||||||
let keybinding_path = crate::keybinding::keybinding_path()?;
|
let keybinding_path = crate::keybinding::keybinding_path()?;
|
||||||
nu_dict.insert_value(
|
nu_dict.insert_value(
|
||||||
"keybinding-path",
|
"keybinding-path",
|
||||||
UntaggedValue::path(keybinding_path).into_value(&tag),
|
UntaggedValue::filepath(keybinding_path).into_value(&tag),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +57,7 @@ pub fn nu(env: &IndexMap<String, String>, tag: impl Into<Tag>) -> Result<Value,
|
|||||||
let history = crate::commands::history::history_path(&config);
|
let history = crate::commands::history::history_path(&config);
|
||||||
nu_dict.insert_value(
|
nu_dict.insert_value(
|
||||||
"history-path",
|
"history-path",
|
||||||
UntaggedValue::path(history).into_value(&tag),
|
UntaggedValue::filepath(history).into_value(&tag),
|
||||||
);
|
);
|
||||||
|
|
||||||
Ok(nu_dict.into_value())
|
Ok(nu_dict.into_value())
|
||||||
|
@ -979,7 +979,7 @@ pub(crate) fn dir_entry_dict(
|
|||||||
)
|
)
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
dict.insert_untagged("name", UntaggedValue::path(name));
|
dict.insert_untagged("name", UntaggedValue::filepath(name));
|
||||||
|
|
||||||
if let Some(md) = metadata {
|
if let Some(md) = metadata {
|
||||||
dict.insert_untagged("type", get_file_type(md));
|
dict.insert_untagged("type", get_file_type(md));
|
||||||
|
@ -296,7 +296,7 @@ fn get_shape_of_expr(expr: &SpannedExpression) -> Option<SyntaxShape> {
|
|||||||
Expression::Boolean(_) => Some(SyntaxShape::String),
|
Expression::Boolean(_) => Some(SyntaxShape::String),
|
||||||
|
|
||||||
Expression::Path(_) => Some(SyntaxShape::ColumnPath),
|
Expression::Path(_) => Some(SyntaxShape::ColumnPath),
|
||||||
Expression::FilePath(_) => Some(SyntaxShape::Path),
|
Expression::FilePath(_) => Some(SyntaxShape::FilePath),
|
||||||
Expression::Block(_) => Some(SyntaxShape::Block),
|
Expression::Block(_) => Some(SyntaxShape::Block),
|
||||||
Expression::ExternalCommand(_) => Some(SyntaxShape::String),
|
Expression::ExternalCommand(_) => Some(SyntaxShape::String),
|
||||||
Expression::Table(_, _) => Some(SyntaxShape::Table),
|
Expression::Table(_, _) => Some(SyntaxShape::Table),
|
||||||
|
@ -149,10 +149,10 @@ pub fn coerce_compare_primitive(
|
|||||||
(Date(left), Date(right)) => CompareValues::Date(*left, *right),
|
(Date(left), Date(right)) => CompareValues::Date(*left, *right),
|
||||||
(Date(left), Duration(right)) => CompareValues::DateDuration(*left, right.clone()),
|
(Date(left), Duration(right)) => CompareValues::DateDuration(*left, right.clone()),
|
||||||
(Boolean(left), Boolean(right)) => CompareValues::Booleans(*left, *right),
|
(Boolean(left), Boolean(right)) => CompareValues::Booleans(*left, *right),
|
||||||
(Path(left), String(right)) => {
|
(FilePath(left), String(right)) => {
|
||||||
CompareValues::String(left.as_path().display().to_string(), right.clone())
|
CompareValues::String(left.as_path().display().to_string(), right.clone())
|
||||||
}
|
}
|
||||||
(String(left), Path(right)) => {
|
(String(left), FilePath(right)) => {
|
||||||
CompareValues::String(left.clone(), right.as_path().display().to_string())
|
CompareValues::String(left.clone(), right.as_path().display().to_string())
|
||||||
}
|
}
|
||||||
_ => return Err((left.type_name(), right.type_name())),
|
_ => return Err((left.type_name(), right.type_name())),
|
||||||
|
@ -29,11 +29,11 @@ pub enum InlineShape {
|
|||||||
String(String),
|
String(String),
|
||||||
Line(String),
|
Line(String),
|
||||||
ColumnPath(ColumnPath),
|
ColumnPath(ColumnPath),
|
||||||
Pattern(String),
|
GlobPattern(String),
|
||||||
Boolean(bool),
|
Boolean(bool),
|
||||||
Date(DateTime<FixedOffset>),
|
Date(DateTime<FixedOffset>),
|
||||||
Duration(BigInt),
|
Duration(BigInt),
|
||||||
Path(PathBuf),
|
FilePath(PathBuf),
|
||||||
Binary(usize),
|
Binary(usize),
|
||||||
|
|
||||||
Row(Row),
|
Row(Row),
|
||||||
@ -72,11 +72,11 @@ impl InlineShape {
|
|||||||
Primitive::Filesize(bytesize) => InlineShape::Bytesize(*bytesize),
|
Primitive::Filesize(bytesize) => InlineShape::Bytesize(*bytesize),
|
||||||
Primitive::String(string) => InlineShape::String(string.clone()),
|
Primitive::String(string) => InlineShape::String(string.clone()),
|
||||||
Primitive::ColumnPath(path) => InlineShape::ColumnPath(path.clone()),
|
Primitive::ColumnPath(path) => InlineShape::ColumnPath(path.clone()),
|
||||||
Primitive::Pattern(pattern) => InlineShape::Pattern(pattern.clone()),
|
Primitive::GlobPattern(pattern) => InlineShape::GlobPattern(pattern.clone()),
|
||||||
Primitive::Boolean(boolean) => InlineShape::Boolean(*boolean),
|
Primitive::Boolean(boolean) => InlineShape::Boolean(*boolean),
|
||||||
Primitive::Date(date) => InlineShape::Date(*date),
|
Primitive::Date(date) => InlineShape::Date(*date),
|
||||||
Primitive::Duration(duration) => InlineShape::Duration(duration.clone()),
|
Primitive::Duration(duration) => InlineShape::Duration(duration.clone()),
|
||||||
Primitive::Path(path) => InlineShape::Path(path.clone()),
|
Primitive::FilePath(path) => InlineShape::FilePath(path.clone()),
|
||||||
Primitive::Binary(b) => InlineShape::Binary(b.len()),
|
Primitive::Binary(b) => InlineShape::Binary(b.len()),
|
||||||
Primitive::BeginningOfStream => InlineShape::BeginningOfStream,
|
Primitive::BeginningOfStream => InlineShape::BeginningOfStream,
|
||||||
Primitive::EndOfStream => InlineShape::EndOfStream,
|
Primitive::EndOfStream => InlineShape::EndOfStream,
|
||||||
@ -208,7 +208,7 @@ impl PrettyDebug for FormatInlineShape {
|
|||||||
InlineShape::ColumnPath(path) => {
|
InlineShape::ColumnPath(path) => {
|
||||||
b::intersperse(path.iter().map(|member| member.pretty()), b::keyword("."))
|
b::intersperse(path.iter().map(|member| member.pretty()), b::keyword("."))
|
||||||
}
|
}
|
||||||
InlineShape::Pattern(pattern) => b::primitive(pattern),
|
InlineShape::GlobPattern(pattern) => b::primitive(pattern),
|
||||||
InlineShape::Boolean(boolean) => b::primitive(
|
InlineShape::Boolean(boolean) => b::primitive(
|
||||||
match (boolean, column) {
|
match (boolean, column) {
|
||||||
(true, None) => "Yes",
|
(true, None) => "Yes",
|
||||||
@ -225,7 +225,7 @@ impl PrettyDebug for FormatInlineShape {
|
|||||||
&Primitive::Duration(duration.clone()),
|
&Primitive::Duration(duration.clone()),
|
||||||
None,
|
None,
|
||||||
)),
|
)),
|
||||||
InlineShape::Path(path) => b::primitive(path.display()),
|
InlineShape::FilePath(path) => b::primitive(path.display()),
|
||||||
InlineShape::Binary(length) => b::opaque(format!("<binary: {} bytes>", length)),
|
InlineShape::Binary(length) => b::opaque(format!("<binary: {} bytes>", length)),
|
||||||
InlineShape::Row(row) => b::delimit(
|
InlineShape::Row(row) => b::delimit(
|
||||||
"[",
|
"[",
|
||||||
|
@ -81,9 +81,9 @@ fn helper(v: &Value) -> Result<toml::Value, ShellError> {
|
|||||||
UntaggedValue::Primitive(Primitive::Nothing) => {
|
UntaggedValue::Primitive(Primitive::Nothing) => {
|
||||||
toml::Value::String("<Nothing>".to_string())
|
toml::Value::String("<Nothing>".to_string())
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::Pattern(s)) => toml::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::GlobPattern(s)) => toml::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::String(s)) => toml::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::String(s)) => toml::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::Path(s)) => {
|
UntaggedValue::Primitive(Primitive::FilePath(s)) => {
|
||||||
toml::Value::String(s.display().to_string())
|
toml::Value::String(s.display().to_string())
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => toml::Value::Array(
|
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => toml::Value::Array(
|
||||||
|
@ -91,12 +91,12 @@ pub fn string_to_lookup_value(str_prim: &str) -> String {
|
|||||||
"primitive_string" => "Primitive::String".to_string(),
|
"primitive_string" => "Primitive::String".to_string(),
|
||||||
"primitive_line" => "Primitive::Line".to_string(),
|
"primitive_line" => "Primitive::Line".to_string(),
|
||||||
"primitive_columnpath" => "Primitive::ColumnPath".to_string(),
|
"primitive_columnpath" => "Primitive::ColumnPath".to_string(),
|
||||||
"primitive_pattern" => "Primitive::Pattern".to_string(),
|
"primitive_pattern" => "Primitive::GlobPattern".to_string(),
|
||||||
"primitive_boolean" => "Primitive::Boolean".to_string(),
|
"primitive_boolean" => "Primitive::Boolean".to_string(),
|
||||||
"primitive_date" => "Primitive::Date".to_string(),
|
"primitive_date" => "Primitive::Date".to_string(),
|
||||||
"primitive_duration" => "Primitive::Duration".to_string(),
|
"primitive_duration" => "Primitive::Duration".to_string(),
|
||||||
"primitive_range" => "Primitive::Range".to_string(),
|
"primitive_range" => "Primitive::Range".to_string(),
|
||||||
"primitive_path" => "Primitive::Path".to_string(),
|
"primitive_path" => "Primitive::FilePath".to_string(),
|
||||||
"primitive_binary" => "Primitive::Binary".to_string(),
|
"primitive_binary" => "Primitive::Binary".to_string(),
|
||||||
"separator_color" => "separator_color".to_string(),
|
"separator_color" => "separator_color".to_string(),
|
||||||
"header_align" => "header_align".to_string(),
|
"header_align" => "header_align".to_string(),
|
||||||
@ -269,8 +269,8 @@ pub fn style_primitive(primitive: &str, color_hm: &HashMap<String, Style>) -> Te
|
|||||||
None => TextStyle::basic_left(),
|
None => TextStyle::basic_left(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"Pattern" => {
|
"GlobPattern" => {
|
||||||
let style = color_hm.get("Primitive::Pattern");
|
let style = color_hm.get("Primitive::GlobPattern");
|
||||||
match style {
|
match style {
|
||||||
Some(s) => TextStyle::with_style(Alignment::Left, *s),
|
Some(s) => TextStyle::with_style(Alignment::Left, *s),
|
||||||
None => TextStyle::basic_left(),
|
None => TextStyle::basic_left(),
|
||||||
@ -304,8 +304,8 @@ pub fn style_primitive(primitive: &str, color_hm: &HashMap<String, Style>) -> Te
|
|||||||
None => TextStyle::basic_left(),
|
None => TextStyle::basic_left(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"Path" => {
|
"FilePath" => {
|
||||||
let style = color_hm.get("Primitive::Path");
|
let style = color_hm.get("Primitive::FilePath");
|
||||||
match style {
|
match style {
|
||||||
Some(s) => TextStyle::with_style(Alignment::Left, *s),
|
Some(s) => TextStyle::with_style(Alignment::Left, *s),
|
||||||
None => TextStyle::basic_left(),
|
None => TextStyle::basic_left(),
|
||||||
|
@ -36,7 +36,7 @@ impl ExtractType for std::path::PathBuf {
|
|||||||
|
|
||||||
match &value {
|
match &value {
|
||||||
Value {
|
Value {
|
||||||
value: UntaggedValue::Primitive(Primitive::Path(p)),
|
value: UntaggedValue::Primitive(Primitive::FilePath(p)),
|
||||||
..
|
..
|
||||||
} => Ok(p.clone()),
|
} => Ok(p.clone()),
|
||||||
other => Err(ShellError::type_error("Path", other.spanned_type_name())),
|
other => Err(ShellError::type_error("Path", other.spanned_type_name())),
|
||||||
|
@ -816,11 +816,11 @@ fn parse_arg(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SyntaxShape::Pattern => {
|
SyntaxShape::GlobPattern => {
|
||||||
let trimmed = trim_quotes(&lite_arg.item);
|
let trimmed = trim_quotes(&lite_arg.item);
|
||||||
let expanded = expand_path(&trimmed).to_string();
|
let expanded = expand_path(&trimmed).to_string();
|
||||||
(
|
(
|
||||||
SpannedExpression::new(Expression::pattern(expanded), lite_arg.span),
|
SpannedExpression::new(Expression::glob_pattern(expanded), lite_arg.span),
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -828,7 +828,7 @@ fn parse_arg(
|
|||||||
SyntaxShape::Range => parse_range(&lite_arg, scope),
|
SyntaxShape::Range => parse_range(&lite_arg, scope),
|
||||||
SyntaxShape::Operator => parse_operator(&lite_arg),
|
SyntaxShape::Operator => parse_operator(&lite_arg),
|
||||||
SyntaxShape::Unit => parse_unit(&lite_arg),
|
SyntaxShape::Unit => parse_unit(&lite_arg),
|
||||||
SyntaxShape::Path => {
|
SyntaxShape::FilePath => {
|
||||||
let trimmed = trim_quotes(&lite_arg.item);
|
let trimmed = trim_quotes(&lite_arg.item);
|
||||||
let expanded = expand_path(&trimmed).to_string();
|
let expanded = expand_path(&trimmed).to_string();
|
||||||
let path = Path::new(&expanded);
|
let path = Path::new(&expanded);
|
||||||
@ -2077,11 +2077,11 @@ fn parse_signature(
|
|||||||
let shape = match parts[1] {
|
let shape = match parts[1] {
|
||||||
"int" => SyntaxShape::Int,
|
"int" => SyntaxShape::Int,
|
||||||
"string" => SyntaxShape::String,
|
"string" => SyntaxShape::String,
|
||||||
"path" => SyntaxShape::Path,
|
"path" => SyntaxShape::FilePath,
|
||||||
"table" => SyntaxShape::Table,
|
"table" => SyntaxShape::Table,
|
||||||
"unit" => SyntaxShape::Unit,
|
"unit" => SyntaxShape::Unit,
|
||||||
"number" => SyntaxShape::Number,
|
"number" => SyntaxShape::Number,
|
||||||
"pattern" => SyntaxShape::Pattern,
|
"pattern" => SyntaxShape::GlobPattern,
|
||||||
"range" => SyntaxShape::Range,
|
"range" => SyntaxShape::Range,
|
||||||
"block" => SyntaxShape::Block,
|
"block" => SyntaxShape::Block,
|
||||||
"any" => SyntaxShape::Any,
|
"any" => SyntaxShape::Any,
|
||||||
@ -2105,11 +2105,11 @@ fn parse_signature(
|
|||||||
let shape = match parts[1] {
|
let shape = match parts[1] {
|
||||||
"int" => SyntaxShape::Int,
|
"int" => SyntaxShape::Int,
|
||||||
"string" => SyntaxShape::String,
|
"string" => SyntaxShape::String,
|
||||||
"path" => SyntaxShape::Path,
|
"path" => SyntaxShape::FilePath,
|
||||||
"table" => SyntaxShape::Table,
|
"table" => SyntaxShape::Table,
|
||||||
"unit" => SyntaxShape::Unit,
|
"unit" => SyntaxShape::Unit,
|
||||||
"number" => SyntaxShape::Number,
|
"number" => SyntaxShape::Number,
|
||||||
"pattern" => SyntaxShape::Pattern,
|
"pattern" => SyntaxShape::GlobPattern,
|
||||||
"range" => SyntaxShape::Range,
|
"range" => SyntaxShape::Range,
|
||||||
"block" => SyntaxShape::Block,
|
"block" => SyntaxShape::Block,
|
||||||
"any" => SyntaxShape::Any,
|
"any" => SyntaxShape::Any,
|
||||||
|
@ -1092,7 +1092,7 @@ impl Expression {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn pattern(p: String) -> Expression {
|
pub fn glob_pattern(p: String) -> Expression {
|
||||||
Expression::Literal(Literal::GlobPattern(p))
|
Expression::Literal(Literal::GlobPattern(p))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,9 +19,9 @@ pub enum SyntaxShape {
|
|||||||
/// Only an integer value is allowed
|
/// Only an integer value is allowed
|
||||||
Int,
|
Int,
|
||||||
/// A filepath is allowed
|
/// A filepath is allowed
|
||||||
Path,
|
FilePath,
|
||||||
/// A glob pattern is allowed, eg `foo*`
|
/// A glob pattern is allowed, eg `foo*`
|
||||||
Pattern,
|
GlobPattern,
|
||||||
/// A block is allowed, eg `{start this thing}`
|
/// A block is allowed, eg `{start this thing}`
|
||||||
Block,
|
Block,
|
||||||
/// A table is allowed, eg `[first second]`
|
/// A table is allowed, eg `[first second]`
|
||||||
@ -48,8 +48,8 @@ impl PrettyDebug for SyntaxShape {
|
|||||||
SyntaxShape::Number => "number",
|
SyntaxShape::Number => "number",
|
||||||
SyntaxShape::Range => "range",
|
SyntaxShape::Range => "range",
|
||||||
SyntaxShape::Int => "integer",
|
SyntaxShape::Int => "integer",
|
||||||
SyntaxShape::Path => "file path",
|
SyntaxShape::FilePath => "file path",
|
||||||
SyntaxShape::Pattern => "pattern",
|
SyntaxShape::GlobPattern => "pattern",
|
||||||
SyntaxShape::Block => "block",
|
SyntaxShape::Block => "block",
|
||||||
SyntaxShape::Table => "table",
|
SyntaxShape::Table => "table",
|
||||||
SyntaxShape::Unit => "unit",
|
SyntaxShape::Unit => "unit",
|
||||||
|
@ -43,7 +43,7 @@ pub enum Type {
|
|||||||
/// A path through a table
|
/// A path through a table
|
||||||
ColumnPath,
|
ColumnPath,
|
||||||
/// A glob pattern (like foo*)
|
/// A glob pattern (like foo*)
|
||||||
Pattern,
|
GlobPattern,
|
||||||
/// A boolean value
|
/// A boolean value
|
||||||
Boolean,
|
Boolean,
|
||||||
/// A date value (in UTC)
|
/// A date value (in UTC)
|
||||||
@ -51,7 +51,7 @@ pub enum Type {
|
|||||||
/// A data duration value
|
/// A data duration value
|
||||||
Duration,
|
Duration,
|
||||||
/// A filepath value
|
/// A filepath value
|
||||||
Path,
|
FilePath,
|
||||||
/// A binary (non-text) buffer value
|
/// A binary (non-text) buffer value
|
||||||
Binary,
|
Binary,
|
||||||
|
|
||||||
@ -141,11 +141,11 @@ impl Type {
|
|||||||
Primitive::Filesize(_) => Type::Filesize,
|
Primitive::Filesize(_) => Type::Filesize,
|
||||||
Primitive::String(_) => Type::String,
|
Primitive::String(_) => Type::String,
|
||||||
Primitive::ColumnPath(_) => Type::ColumnPath,
|
Primitive::ColumnPath(_) => Type::ColumnPath,
|
||||||
Primitive::Pattern(_) => Type::Pattern,
|
Primitive::GlobPattern(_) => Type::GlobPattern,
|
||||||
Primitive::Boolean(_) => Type::Boolean,
|
Primitive::Boolean(_) => Type::Boolean,
|
||||||
Primitive::Date(_) => Type::Date,
|
Primitive::Date(_) => Type::Date,
|
||||||
Primitive::Duration(_) => Type::Duration,
|
Primitive::Duration(_) => Type::Duration,
|
||||||
Primitive::Path(_) => Type::Path,
|
Primitive::FilePath(_) => Type::FilePath,
|
||||||
Primitive::Binary(_) => Type::Binary,
|
Primitive::Binary(_) => Type::Binary,
|
||||||
Primitive::BeginningOfStream => Type::BeginningOfStream,
|
Primitive::BeginningOfStream => Type::BeginningOfStream,
|
||||||
Primitive::EndOfStream => Type::EndOfStream,
|
Primitive::EndOfStream => Type::EndOfStream,
|
||||||
@ -223,11 +223,11 @@ impl PrettyDebug for Type {
|
|||||||
Type::String => ty("string"),
|
Type::String => ty("string"),
|
||||||
Type::Line => ty("line"),
|
Type::Line => ty("line"),
|
||||||
Type::ColumnPath => ty("column-path"),
|
Type::ColumnPath => ty("column-path"),
|
||||||
Type::Pattern => ty("pattern"),
|
Type::GlobPattern => ty("pattern"),
|
||||||
Type::Boolean => ty("boolean"),
|
Type::Boolean => ty("boolean"),
|
||||||
Type::Date => ty("date"),
|
Type::Date => ty("date"),
|
||||||
Type::Duration => ty("duration"),
|
Type::Duration => ty("duration"),
|
||||||
Type::Path => ty("path"),
|
Type::FilePath => ty("path"),
|
||||||
Type::Binary => ty("binary"),
|
Type::Binary => ty("binary"),
|
||||||
Type::Error => b::error("error"),
|
Type::Error => b::error("error"),
|
||||||
Type::BeginningOfStream => b::keyword("beginning-of-stream"),
|
Type::BeginningOfStream => b::keyword("beginning-of-stream"),
|
||||||
|
@ -175,13 +175,13 @@ impl UntaggedValue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Helper for creating glob pattern values
|
/// Helper for creating glob pattern values
|
||||||
pub fn pattern(s: impl Into<String>) -> UntaggedValue {
|
pub fn glob_pattern(s: impl Into<String>) -> UntaggedValue {
|
||||||
UntaggedValue::Primitive(Primitive::String(s.into()))
|
UntaggedValue::Primitive(Primitive::String(s.into()))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Helper for creating filepath values
|
/// Helper for creating filepath values
|
||||||
pub fn path(s: impl Into<PathBuf>) -> UntaggedValue {
|
pub fn filepath(s: impl Into<PathBuf>) -> UntaggedValue {
|
||||||
UntaggedValue::Primitive(Primitive::Path(s.into()))
|
UntaggedValue::Primitive(Primitive::FilePath(s.into()))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Helper for creating filesize values
|
/// Helper for creating filesize values
|
||||||
@ -312,7 +312,7 @@ impl Value {
|
|||||||
pub fn as_string(&self) -> Result<String, ShellError> {
|
pub fn as_string(&self) -> Result<String, ShellError> {
|
||||||
match &self.value {
|
match &self.value {
|
||||||
UntaggedValue::Primitive(Primitive::String(string)) => Ok(string.clone()),
|
UntaggedValue::Primitive(Primitive::String(string)) => Ok(string.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::Path(path)) => {
|
UntaggedValue::Primitive(Primitive::FilePath(path)) => {
|
||||||
Ok(path.to_string_lossy().to_string())
|
Ok(path.to_string_lossy().to_string())
|
||||||
}
|
}
|
||||||
_ => Err(ShellError::type_error("string", self.spanned_type_name())),
|
_ => Err(ShellError::type_error("string", self.spanned_type_name())),
|
||||||
@ -327,7 +327,7 @@ impl Value {
|
|||||||
UntaggedValue::Primitive(Primitive::Decimal(x)) => format!("{}", x),
|
UntaggedValue::Primitive(Primitive::Decimal(x)) => format!("{}", x),
|
||||||
UntaggedValue::Primitive(Primitive::Int(x)) => format!("{}", x),
|
UntaggedValue::Primitive(Primitive::Int(x)) => format!("{}", x),
|
||||||
UntaggedValue::Primitive(Primitive::Filesize(x)) => format!("{}", x),
|
UntaggedValue::Primitive(Primitive::Filesize(x)) => format!("{}", x),
|
||||||
UntaggedValue::Primitive(Primitive::Path(x)) => format!("{}", x.display()),
|
UntaggedValue::Primitive(Primitive::FilePath(x)) => format!("{}", x.display()),
|
||||||
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => {
|
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => {
|
||||||
let joined: String = path
|
let joined: String = path
|
||||||
.iter()
|
.iter()
|
||||||
@ -364,7 +364,7 @@ impl Value {
|
|||||||
/// View the Value as a path, if possible
|
/// View the Value as a path, if possible
|
||||||
pub fn as_path(&self) -> Result<PathBuf, ShellError> {
|
pub fn as_path(&self) -> Result<PathBuf, ShellError> {
|
||||||
match &self.value {
|
match &self.value {
|
||||||
UntaggedValue::Primitive(Primitive::Path(path)) => Ok(path.clone()),
|
UntaggedValue::Primitive(Primitive::FilePath(path)) => Ok(path.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::String(path_str)) => Ok(PathBuf::from(&path_str)),
|
UntaggedValue::Primitive(Primitive::String(path_str)) => Ok(PathBuf::from(&path_str)),
|
||||||
_ => Err(ShellError::type_error("Path", self.spanned_type_name())),
|
_ => Err(ShellError::type_error("Path", self.spanned_type_name())),
|
||||||
}
|
}
|
||||||
@ -623,13 +623,13 @@ impl StringExt for String {
|
|||||||
|
|
||||||
fn to_pattern_value(&self, the_tag: Tag) -> Value {
|
fn to_pattern_value(&self, the_tag: Tag) -> Value {
|
||||||
Value {
|
Value {
|
||||||
value: UntaggedValue::Primitive(Primitive::Pattern(self.to_string())),
|
value: UntaggedValue::Primitive(Primitive::GlobPattern(self.to_string())),
|
||||||
tag: the_tag,
|
tag: the_tag,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_pattern_untagged_value(&self) -> UntaggedValue {
|
fn to_pattern_untagged_value(&self) -> UntaggedValue {
|
||||||
UntaggedValue::pattern(self)
|
UntaggedValue::glob_pattern(self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -682,13 +682,13 @@ impl StrExt for &str {
|
|||||||
|
|
||||||
fn to_pattern_value(&self, the_tag: Tag) -> Value {
|
fn to_pattern_value(&self, the_tag: Tag) -> Value {
|
||||||
Value {
|
Value {
|
||||||
value: UntaggedValue::Primitive(Primitive::Pattern(self.to_string())),
|
value: UntaggedValue::Primitive(Primitive::GlobPattern(self.to_string())),
|
||||||
tag: the_tag,
|
tag: the_tag,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_pattern_untagged_value(&self) -> UntaggedValue {
|
fn to_pattern_untagged_value(&self) -> UntaggedValue {
|
||||||
UntaggedValue::pattern(*self)
|
UntaggedValue::glob_pattern(*self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -830,7 +830,7 @@ impl PathBufExt for PathBuf {
|
|||||||
fn to_value(&self, the_tag: Tag) -> Value {
|
fn to_value(&self, the_tag: Tag) -> Value {
|
||||||
let pb = self.clone();
|
let pb = self.clone();
|
||||||
Value {
|
Value {
|
||||||
value: UntaggedValue::Primitive(Primitive::Path(pb)),
|
value: UntaggedValue::Primitive(Primitive::FilePath(pb)),
|
||||||
tag: the_tag,
|
tag: the_tag,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -842,7 +842,7 @@ impl PathBufExt for PathBuf {
|
|||||||
.len();
|
.len();
|
||||||
let pb = self.clone();
|
let pb = self.clone();
|
||||||
Value {
|
Value {
|
||||||
value: UntaggedValue::Primitive(Primitive::Path(pb)),
|
value: UntaggedValue::Primitive(Primitive::FilePath(pb)),
|
||||||
tag: Tag {
|
tag: Tag {
|
||||||
anchor: None,
|
anchor: None,
|
||||||
span: Span::new(0, end),
|
span: Span::new(0, end),
|
||||||
@ -852,7 +852,7 @@ impl PathBufExt for PathBuf {
|
|||||||
|
|
||||||
fn to_untagged_value(&self) -> UntaggedValue {
|
fn to_untagged_value(&self) -> UntaggedValue {
|
||||||
let pb = self.clone();
|
let pb = self.clone();
|
||||||
UntaggedValue::path(pb)
|
UntaggedValue::filepath(pb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -988,7 +988,7 @@ mod tests {
|
|||||||
let a_pattern = r"[a-zA-Z0-9 ]";
|
let a_pattern = r"[a-zA-Z0-9 ]";
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
a_pattern.to_pattern_untagged_value(),
|
a_pattern.to_pattern_untagged_value(),
|
||||||
UntaggedValue::pattern(a_pattern)
|
UntaggedValue::glob_pattern(a_pattern)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,11 +36,11 @@ impl PrettyType for Primitive {
|
|||||||
Primitive::Filesize(_) => ty("filesize"),
|
Primitive::Filesize(_) => ty("filesize"),
|
||||||
Primitive::String(_) => ty("string"),
|
Primitive::String(_) => ty("string"),
|
||||||
Primitive::ColumnPath(_) => ty("column-path"),
|
Primitive::ColumnPath(_) => ty("column-path"),
|
||||||
Primitive::Pattern(_) => ty("pattern"),
|
Primitive::GlobPattern(_) => ty("pattern"),
|
||||||
Primitive::Boolean(_) => ty("boolean"),
|
Primitive::Boolean(_) => ty("boolean"),
|
||||||
Primitive::Date(_) => ty("date"),
|
Primitive::Date(_) => ty("date"),
|
||||||
Primitive::Duration(_) => ty("duration"),
|
Primitive::Duration(_) => ty("duration"),
|
||||||
Primitive::Path(_) => ty("path"),
|
Primitive::FilePath(_) => ty("path"),
|
||||||
Primitive::Binary(_) => ty("binary"),
|
Primitive::Binary(_) => ty("binary"),
|
||||||
Primitive::BeginningOfStream => b::keyword("beginning-of-stream"),
|
Primitive::BeginningOfStream => b::keyword("beginning-of-stream"),
|
||||||
Primitive::EndOfStream => b::keyword("end-of-stream"),
|
Primitive::EndOfStream => b::keyword("end-of-stream"),
|
||||||
@ -73,14 +73,14 @@ impl PrettyDebug for Primitive {
|
|||||||
Primitive::Filesize(bytes) => primitive_doc(bytes, "filesize"),
|
Primitive::Filesize(bytes) => primitive_doc(bytes, "filesize"),
|
||||||
Primitive::String(string) => prim(string),
|
Primitive::String(string) => prim(string),
|
||||||
Primitive::ColumnPath(path) => path.pretty(),
|
Primitive::ColumnPath(path) => path.pretty(),
|
||||||
Primitive::Pattern(pattern) => primitive_doc(pattern, "pattern"),
|
Primitive::GlobPattern(pattern) => primitive_doc(pattern, "pattern"),
|
||||||
Primitive::Boolean(boolean) => match boolean {
|
Primitive::Boolean(boolean) => match boolean {
|
||||||
true => b::primitive("$yes"),
|
true => b::primitive("$yes"),
|
||||||
false => b::primitive("$no"),
|
false => b::primitive("$no"),
|
||||||
},
|
},
|
||||||
Primitive::Date(date) => primitive_doc(date, "date"),
|
Primitive::Date(date) => primitive_doc(date, "date"),
|
||||||
Primitive::Duration(duration) => primitive_doc(duration, "nanoseconds"),
|
Primitive::Duration(duration) => primitive_doc(duration, "nanoseconds"),
|
||||||
Primitive::Path(path) => primitive_doc(path, "path"),
|
Primitive::FilePath(path) => primitive_doc(path, "path"),
|
||||||
Primitive::Binary(_) => b::opaque("binary"),
|
Primitive::Binary(_) => b::opaque("binary"),
|
||||||
Primitive::BeginningOfStream => b::keyword("beginning-of-stream"),
|
Primitive::BeginningOfStream => b::keyword("beginning-of-stream"),
|
||||||
Primitive::EndOfStream => b::keyword("end-of-stream"),
|
Primitive::EndOfStream => b::keyword("end-of-stream"),
|
||||||
|
@ -37,7 +37,7 @@ pub enum Primitive {
|
|||||||
/// A path to travel to reach a value in a table
|
/// A path to travel to reach a value in a table
|
||||||
ColumnPath(ColumnPath),
|
ColumnPath(ColumnPath),
|
||||||
/// A glob pattern, eg foo*
|
/// A glob pattern, eg foo*
|
||||||
Pattern(String),
|
GlobPattern(String),
|
||||||
/// A boolean value
|
/// A boolean value
|
||||||
Boolean(bool),
|
Boolean(bool),
|
||||||
/// A date value
|
/// A date value
|
||||||
@ -48,7 +48,7 @@ pub enum Primitive {
|
|||||||
/// A range of values
|
/// A range of values
|
||||||
Range(Box<Range>),
|
Range(Box<Range>),
|
||||||
/// A file path
|
/// A file path
|
||||||
Path(PathBuf),
|
FilePath(PathBuf),
|
||||||
/// A vector of raw binary data
|
/// A vector of raw binary data
|
||||||
#[serde(with = "serde_bytes")]
|
#[serde(with = "serde_bytes")]
|
||||||
Binary(Vec<u8>),
|
Binary(Vec<u8>),
|
||||||
@ -234,11 +234,11 @@ impl ShellTypeName for Primitive {
|
|||||||
Primitive::Filesize(_) => "filesize(in bytes)",
|
Primitive::Filesize(_) => "filesize(in bytes)",
|
||||||
Primitive::String(_) => "string",
|
Primitive::String(_) => "string",
|
||||||
Primitive::ColumnPath(_) => "column path",
|
Primitive::ColumnPath(_) => "column path",
|
||||||
Primitive::Pattern(_) => "pattern",
|
Primitive::GlobPattern(_) => "pattern",
|
||||||
Primitive::Boolean(_) => "boolean",
|
Primitive::Boolean(_) => "boolean",
|
||||||
Primitive::Date(_) => "date",
|
Primitive::Date(_) => "date",
|
||||||
Primitive::Duration(_) => "duration",
|
Primitive::Duration(_) => "duration",
|
||||||
Primitive::Path(_) => "file path",
|
Primitive::FilePath(_) => "file path",
|
||||||
Primitive::Binary(_) => "binary",
|
Primitive::Binary(_) => "binary",
|
||||||
Primitive::BeginningOfStream => "marker<beginning of stream>",
|
Primitive::BeginningOfStream => "marker<beginning of stream>",
|
||||||
Primitive::EndOfStream => "marker<end of stream>",
|
Primitive::EndOfStream => "marker<end of stream>",
|
||||||
@ -252,7 +252,7 @@ pub fn format_primitive(primitive: &Primitive, field_name: Option<&String>) -> S
|
|||||||
Primitive::Nothing => String::new(),
|
Primitive::Nothing => String::new(),
|
||||||
Primitive::BeginningOfStream => String::new(),
|
Primitive::BeginningOfStream => String::new(),
|
||||||
Primitive::EndOfStream => String::new(),
|
Primitive::EndOfStream => String::new(),
|
||||||
Primitive::Path(p) => format!("{}", p.display()),
|
Primitive::FilePath(p) => format!("{}", p.display()),
|
||||||
Primitive::Filesize(num_bytes) => {
|
Primitive::Filesize(num_bytes) => {
|
||||||
let byte = byte_unit::Byte::from_bytes(*num_bytes as u128);
|
let byte = byte_unit::Byte::from_bytes(*num_bytes as u128);
|
||||||
|
|
||||||
@ -289,7 +289,7 @@ pub fn format_primitive(primitive: &Primitive, field_name: Option<&String>) -> S
|
|||||||
},
|
},
|
||||||
format_primitive(&range.to.0.item, None)
|
format_primitive(&range.to.0.item, None)
|
||||||
),
|
),
|
||||||
Primitive::Pattern(s) => s.to_string(),
|
Primitive::GlobPattern(s) => s.to_string(),
|
||||||
Primitive::String(s) => s.to_owned(),
|
Primitive::String(s) => s.to_owned(),
|
||||||
Primitive::ColumnPath(p) => {
|
Primitive::ColumnPath(p) => {
|
||||||
let mut members = p.iter();
|
let mut members = p.iter();
|
||||||
|
@ -680,7 +680,7 @@ pub fn as_string(value: &Value) -> Result<String, ShellError> {
|
|||||||
UntaggedValue::Primitive(Primitive::Decimal(x)) => Ok(format!("{}", x)),
|
UntaggedValue::Primitive(Primitive::Decimal(x)) => Ok(format!("{}", x)),
|
||||||
UntaggedValue::Primitive(Primitive::Int(x)) => Ok(format!("{}", x)),
|
UntaggedValue::Primitive(Primitive::Int(x)) => Ok(format!("{}", x)),
|
||||||
UntaggedValue::Primitive(Primitive::Filesize(x)) => Ok(format!("{}", x)),
|
UntaggedValue::Primitive(Primitive::Filesize(x)) => Ok(format!("{}", x)),
|
||||||
UntaggedValue::Primitive(Primitive::Path(x)) => Ok(format!("{}", x.display())),
|
UntaggedValue::Primitive(Primitive::FilePath(x)) => Ok(format!("{}", x.display())),
|
||||||
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => Ok(path
|
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => Ok(path
|
||||||
.iter()
|
.iter()
|
||||||
.map(|member| match &member.unspanned {
|
.map(|member| match &member.unspanned {
|
||||||
|
@ -378,7 +378,7 @@ pub fn value_to_json_value(v: &Value) -> Result<serde_json::Value, ShellError> {
|
|||||||
)?))
|
)?))
|
||||||
}
|
}
|
||||||
UntaggedValue::Primitive(Primitive::Nothing) => serde_json::Value::Null,
|
UntaggedValue::Primitive(Primitive::Nothing) => serde_json::Value::Null,
|
||||||
UntaggedValue::Primitive(Primitive::Pattern(s)) => serde_json::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::GlobPattern(s)) => serde_json::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::String(s)) => serde_json::Value::String(s.clone()),
|
UntaggedValue::Primitive(Primitive::String(s)) => serde_json::Value::String(s.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => serde_json::Value::Array(
|
UntaggedValue::Primitive(Primitive::ColumnPath(path)) => serde_json::Value::Array(
|
||||||
path.iter()
|
path.iter()
|
||||||
@ -395,7 +395,7 @@ pub fn value_to_json_value(v: &Value) -> Result<serde_json::Value, ShellError> {
|
|||||||
})
|
})
|
||||||
.collect::<Result<Vec<serde_json::Value>, ShellError>>()?,
|
.collect::<Result<Vec<serde_json::Value>, ShellError>>()?,
|
||||||
),
|
),
|
||||||
UntaggedValue::Primitive(Primitive::Path(s)) => {
|
UntaggedValue::Primitive(Primitive::FilePath(s)) => {
|
||||||
serde_json::Value::String(s.display().to_string())
|
serde_json::Value::String(s.display().to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,8 +56,8 @@ pub fn value_to_bson_value(v: &Value) -> Result<Bson, ShellError> {
|
|||||||
})
|
})
|
||||||
.collect::<Result<Vec<Bson>, ShellError>>()?,
|
.collect::<Result<Vec<Bson>, ShellError>>()?,
|
||||||
),
|
),
|
||||||
UntaggedValue::Primitive(Primitive::Pattern(p)) => Bson::String(p.clone()),
|
UntaggedValue::Primitive(Primitive::GlobPattern(p)) => Bson::String(p.clone()),
|
||||||
UntaggedValue::Primitive(Primitive::Path(s)) => Bson::String(s.display().to_string()),
|
UntaggedValue::Primitive(Primitive::FilePath(s)) => Bson::String(s.display().to_string()),
|
||||||
UntaggedValue::Table(l) => Bson::Array(
|
UntaggedValue::Table(l) => Bson::Array(
|
||||||
l.iter()
|
l.iter()
|
||||||
.map(|x| value_to_bson_value(x))
|
.map(|x| value_to_bson_value(x))
|
||||||
|
@ -45,12 +45,12 @@ fn nu_value_to_sqlite_string(v: Value) -> String {
|
|||||||
Primitive::Duration(i) => format!("{}", i),
|
Primitive::Duration(i) => format!("{}", i),
|
||||||
Primitive::Decimal(f) => format!("{}", f),
|
Primitive::Decimal(f) => format!("{}", f),
|
||||||
Primitive::Filesize(u) => format!("{}", u),
|
Primitive::Filesize(u) => format!("{}", u),
|
||||||
Primitive::Pattern(s) => format!("'{}'", s.replace("'", "''")),
|
Primitive::GlobPattern(s) => format!("'{}'", s.replace("'", "''")),
|
||||||
Primitive::String(s) => format!("'{}'", s.replace("'", "''")),
|
Primitive::String(s) => format!("'{}'", s.replace("'", "''")),
|
||||||
Primitive::Boolean(true) => "1".into(),
|
Primitive::Boolean(true) => "1".into(),
|
||||||
Primitive::Boolean(_) => "0".into(),
|
Primitive::Boolean(_) => "0".into(),
|
||||||
Primitive::Date(d) => format!("'{}'", d),
|
Primitive::Date(d) => format!("'{}'", d),
|
||||||
Primitive::Path(p) => format!("'{}'", p.display().to_string().replace("'", "''")),
|
Primitive::FilePath(p) => format!("'{}'", p.display().to_string().replace("'", "''")),
|
||||||
Primitive::Binary(u) => format!("x'{}'", encode(u)),
|
Primitive::Binary(u) => format!("x'{}'", encode(u)),
|
||||||
Primitive::BeginningOfStream
|
Primitive::BeginningOfStream
|
||||||
| Primitive::EndOfStream
|
| Primitive::EndOfStream
|
||||||
|
Loading…
Reference in New Issue
Block a user