forked from extern/nushell
Adds unimplemented module, tests.
This commit is contained in:
parent
5ec6bac7d9
commit
648d4865b1
@ -22,6 +22,7 @@ pub(crate) mod from_csv;
|
|||||||
pub(crate) mod from_ini;
|
pub(crate) mod from_ini;
|
||||||
pub(crate) mod from_json;
|
pub(crate) mod from_json;
|
||||||
pub(crate) mod from_sqlite;
|
pub(crate) mod from_sqlite;
|
||||||
|
pub(crate) mod from_ssv;
|
||||||
pub(crate) mod from_toml;
|
pub(crate) mod from_toml;
|
||||||
pub(crate) mod from_tsv;
|
pub(crate) mod from_tsv;
|
||||||
pub(crate) mod from_url;
|
pub(crate) mod from_url;
|
||||||
@ -91,6 +92,7 @@ pub(crate) use from_ini::FromINI;
|
|||||||
pub(crate) use from_json::FromJSON;
|
pub(crate) use from_json::FromJSON;
|
||||||
pub(crate) use from_sqlite::FromDB;
|
pub(crate) use from_sqlite::FromDB;
|
||||||
pub(crate) use from_sqlite::FromSQLite;
|
pub(crate) use from_sqlite::FromSQLite;
|
||||||
|
pub(crate) use from_ssv::FromSSV;
|
||||||
pub(crate) use from_toml::FromTOML;
|
pub(crate) use from_toml::FromTOML;
|
||||||
pub(crate) use from_tsv::FromTSV;
|
pub(crate) use from_tsv::FromTSV;
|
||||||
pub(crate) use from_url::FromURL;
|
pub(crate) use from_url::FromURL;
|
||||||
|
43
src/commands/from_ssv.rs
Normal file
43
src/commands/from_ssv.rs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
use crate::commands::WholeStreamCommand;
|
||||||
|
use crate::data::{Primitive, TaggedDictBuilder, Value};
|
||||||
|
use crate::prelude::*;
|
||||||
|
|
||||||
|
pub struct FromSSV;
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
pub struct FromSSVArgs {
|
||||||
|
headerless: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
const STRING_REPRESENTATION: &str = "from-ssv";
|
||||||
|
|
||||||
|
impl WholeStreamCommand for FromSSV {
|
||||||
|
fn name(&self) -> &str {
|
||||||
|
STRING_REPRESENTATION
|
||||||
|
}
|
||||||
|
|
||||||
|
fn signature(&self) -> Signature {
|
||||||
|
Signature::build(STRING_REPRESENTATION).switch("headerless")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn usage(&self) -> &str {
|
||||||
|
"Parse text as .ssv and create a table."
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run(
|
||||||
|
&self,
|
||||||
|
args: CommandArgs,
|
||||||
|
registry: &CommandRegistry,
|
||||||
|
) -> Result<OutputStream, ShellError> {
|
||||||
|
args.process(registry, from_ssv)?.run()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn from_ssv(
|
||||||
|
FromSSVArgs {
|
||||||
|
headerless: headerless,
|
||||||
|
}: FromSSVArgs,
|
||||||
|
RunnableContext { input, name, .. }: RunnableContext,
|
||||||
|
) -> Result<OutputStream, ShellError> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
@ -355,6 +355,62 @@ fn converts_from_tsv_text_skipping_headers_to_structured_table() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn converts_from_ssv_text_to_structured_table() {
|
||||||
|
Playground::setup("filter_from_ssv_test_1", |dirs, sandbox| {
|
||||||
|
sandbox.with_files(vec![FileWithContentToBeTrimmed(
|
||||||
|
"oc_get_svc.ssv",
|
||||||
|
r#"
|
||||||
|
NAME LABELS SELECTOR IP PORT(S)
|
||||||
|
docker-registry docker-registry=default docker-registry=default 172.30.78.158 5000/TCP
|
||||||
|
kubernetes component=apiserver,provider=kubernetes <none> 172.30.0.2 443/TCP
|
||||||
|
kubernetes-ro component=apiserver,provider=kubernetes <none> 172.30.0.1 80/TCP
|
||||||
|
"#,
|
||||||
|
)]);
|
||||||
|
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: dirs.test(), h::pipeline(
|
||||||
|
r#"
|
||||||
|
open oc_get_svc.ssv
|
||||||
|
| from-ssv
|
||||||
|
| nth 0
|
||||||
|
| get NAME
|
||||||
|
| echo $it
|
||||||
|
"#
|
||||||
|
));
|
||||||
|
|
||||||
|
assert_eq!(actual, "docker-registry");
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn converts_from_ssv_text_skipping_headers_to_structured_table() {
|
||||||
|
Playground::setup("filter_from_ssv_test_2", |dirs, sandbox| {
|
||||||
|
sandbox.with_files(vec![FileWithContentToBeTrimmed(
|
||||||
|
"oc_get_svc.ssv",
|
||||||
|
r#"
|
||||||
|
NAME LABELS SELECTOR IP PORT(S)
|
||||||
|
docker-registry docker-registry=default docker-registry=default 172.30.78.158 5000/TCP
|
||||||
|
kubernetes component=apiserver,provider=kubernetes <none> 172.30.0.2 443/TCP
|
||||||
|
kubernetes-ro component=apiserver,provider=kubernetes <none> 172.30.0.1 80/TCP
|
||||||
|
"#,
|
||||||
|
)]);
|
||||||
|
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: dirs.test(), h::pipeline(
|
||||||
|
r#"
|
||||||
|
open oc_get_svc.ssv
|
||||||
|
| from-ssv --headerless
|
||||||
|
| nth 2
|
||||||
|
| get Column2
|
||||||
|
| echo $it
|
||||||
|
"#
|
||||||
|
));
|
||||||
|
|
||||||
|
assert_eq!(actual, "component=apiserver,provider=kubernetes");
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_convert_table_to_bson_and_back_into_table() {
|
fn can_convert_table_to_bson_and_back_into_table() {
|
||||||
let actual = nu!(
|
let actual = nu!(
|
||||||
|
Loading…
Reference in New Issue
Block a user