From ea663bb98f2c69c187a575ffa8d947d16ab3515f Mon Sep 17 00:00:00 2001 From: Texas Toland Date: Tue, 12 Mar 2024 18:14:00 -0500 Subject: [PATCH 1/4] Ready stdlib-candidate for nupm --- stdlib-candidate/nupm.nuon | 8 ++++++++ stdlib-candidate/{ => std-rfc}/fs.nu | 0 stdlib-candidate/{ => std-rfc}/record/README.md | 0 stdlib-candidate/{ => std-rfc}/record/mod.nu | 0 stdlib-candidate/{ => std-rfc}/set-env.nu | 0 stdlib-candidate/{ => std-rfc}/str.nu | 0 6 files changed, 8 insertions(+) create mode 100644 stdlib-candidate/nupm.nuon rename stdlib-candidate/{ => std-rfc}/fs.nu (100%) rename stdlib-candidate/{ => std-rfc}/record/README.md (100%) rename stdlib-candidate/{ => std-rfc}/record/mod.nu (100%) rename stdlib-candidate/{ => std-rfc}/set-env.nu (100%) rename stdlib-candidate/{ => std-rfc}/str.nu (100%) diff --git a/stdlib-candidate/nupm.nuon b/stdlib-candidate/nupm.nuon new file mode 100644 index 000000000..1f0c6b613 --- /dev/null +++ b/stdlib-candidate/nupm.nuon @@ -0,0 +1,8 @@ +{ + name: "std-rfc" + description: "Official candidates for Nushell standard library" + documentation: "https://github.com/nushell/nu_scripts/blob/main/stdlib-candidate/std-rfc/README.md" + license: "https://github.com/nushell/nu_scripts/blob/main/LICENSE" + version: 0.1.0 + type: "module" +} diff --git a/stdlib-candidate/fs.nu b/stdlib-candidate/std-rfc/fs.nu similarity index 100% rename from stdlib-candidate/fs.nu rename to stdlib-candidate/std-rfc/fs.nu diff --git a/stdlib-candidate/record/README.md b/stdlib-candidate/std-rfc/record/README.md similarity index 100% rename from stdlib-candidate/record/README.md rename to stdlib-candidate/std-rfc/record/README.md diff --git a/stdlib-candidate/record/mod.nu b/stdlib-candidate/std-rfc/record/mod.nu similarity index 100% rename from stdlib-candidate/record/mod.nu rename to stdlib-candidate/std-rfc/record/mod.nu diff --git a/stdlib-candidate/set-env.nu b/stdlib-candidate/std-rfc/set-env.nu similarity index 100% rename from stdlib-candidate/set-env.nu rename to stdlib-candidate/std-rfc/set-env.nu diff --git a/stdlib-candidate/str.nu b/stdlib-candidate/std-rfc/str.nu similarity index 100% rename from stdlib-candidate/str.nu rename to stdlib-candidate/std-rfc/str.nu From 628d45ca7663c6a73c4eb75d8e37fe0fdbee5f41 Mon Sep 17 00:00:00 2001 From: Texas Toland Date: Tue, 12 Mar 2024 18:32:54 -0500 Subject: [PATCH 2/4] Add std-rfc module --- stdlib-candidate/std-rfc/mod.nu | 6 ++++++ stdlib-candidate/std-rfc/str.nu | 16 ++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 stdlib-candidate/std-rfc/mod.nu diff --git a/stdlib-candidate/std-rfc/mod.nu b/stdlib-candidate/std-rfc/mod.nu new file mode 100644 index 000000000..e4e473b67 --- /dev/null +++ b/stdlib-candidate/std-rfc/mod.nu @@ -0,0 +1,6 @@ +# modules +export module record/ +export module str.nu +# commands +export use fs.nu * +export use set-env.nu * diff --git a/stdlib-candidate/std-rfc/str.nu b/stdlib-candidate/std-rfc/str.nu index 17f054a7a..60afd3673 100644 --- a/stdlib-candidate/std-rfc/str.nu +++ b/stdlib-candidate/std-rfc/str.nu @@ -1,4 +1,4 @@ -def "str append" [tail: string]: [string -> string, list -> list] { +export def append [tail: string]: [string -> string, list -> list] { let input = $in match ($input | describe | str replace --regex '<.*' '') { "string" => { $input ++ $tail }, @@ -7,7 +7,7 @@ def "str append" [tail: string]: [string -> string, list -> list } } -def "str prepend" [head: string]: [string -> string, list -> list] { +export def prepend [head: string]: [string -> string, list -> list] { let input = $in match ($input | describe | str replace --regex '<.*' '') { "string" => { $head ++ $input }, @@ -19,15 +19,15 @@ def "str prepend" [head: string]: [string -> string, list -> list Date: Tue, 12 Mar 2024 18:40:42 -0500 Subject: [PATCH 3/4] Move std-rfc tests for nupm --- stdlib-candidate/std-rfc/fs.nu | 49 -------------------------- stdlib-candidate/std-rfc/record/mod.nu | 39 +++++--------------- stdlib-candidate/std-rfc/str.nu | 16 --------- stdlib-candidate/tests/fs.nu | 48 +++++++++++++++++++++++++ stdlib-candidate/tests/record.nu | 22 ++++++++++++ stdlib-candidate/tests/str.nu | 15 ++++++++ 6 files changed, 93 insertions(+), 96 deletions(-) create mode 100644 stdlib-candidate/tests/fs.nu create mode 100644 stdlib-candidate/tests/record.nu create mode 100644 stdlib-candidate/tests/str.nu diff --git a/stdlib-candidate/std-rfc/fs.nu b/stdlib-candidate/std-rfc/fs.nu index 70b3fc4ed..7390dd845 100644 --- a/stdlib-candidate/std-rfc/fs.nu +++ b/stdlib-candidate/std-rfc/fs.nu @@ -33,52 +33,3 @@ export def "file bulk-rename" [ null } - -#[test] -def test [] { - use std assert - - let test_dir = $nu.temp-path | path join (random uuid) - - mkdir $test_dir - seq 1 10 | each {|i| touch ($test_dir | path join $"some_($i)_format.txt") } - - let expected = [ - "some_10_format.txt", - "some_1_format.txt", - "some_2_format.txt", - "some_3_format.txt", - "some_4_format.txt", - "some_5_format.txt", - "some_6_format.txt", - "some_7_format.txt", - "some_8_format.txt", - "some_9_format.txt", - ] - let actual = glob $"($test_dir)/*" | str replace $test_dir "" | str trim --left --char "/" - assert equal ($actual | sort) $expected - - file bulk-rename $test_dir { - parse "some_{i}_format" - | get 0 - | update i { fill --alignment r --character 0 --width 3 } - | $"some_($in.i)_format" - } - - let expected = [ - "some_001_format.txt", - "some_002_format.txt", - "some_003_format.txt", - "some_004_format.txt", - "some_005_format.txt", - "some_006_format.txt", - "some_007_format.txt", - "some_008_format.txt", - "some_009_format.txt", - "some_010_format.txt", - ] - let actual = glob $"($test_dir)/*" | str replace $test_dir "" | str trim --left --char "/" - assert equal ($actual | sort) $expected - - rm -rf $test_dir -} diff --git a/stdlib-candidate/std-rfc/record/mod.nu b/stdlib-candidate/std-rfc/record/mod.nu index f4a3db52a..348a3cba3 100644 --- a/stdlib-candidate/std-rfc/record/mod.nu +++ b/stdlib-candidate/std-rfc/record/mod.nu @@ -13,11 +13,11 @@ export def "filter-name predicate" [ pred: closure # Predicate closure that checks fields name ]: record -> record { let $obj_input = $in - $obj_input - | columns + $obj_input + | columns | where { $in | do $pred } - | each {|input| - { $input: ($obj_input | get $input) } + | each {|input| + { $input: ($obj_input | get $input) } } | list merge } @@ -36,34 +36,11 @@ export def "filter-value predicate" [ pred: closure # Predicate closure that checks fields value ]: record -> record { let $obj_input = $in - $obj_input - | columns + $obj_input + | columns | where {|col| $obj_input | get $col | do $pred } - | each {|input| - { $input: ($obj_input | get $input) } + | each {|input| + { $input: ($obj_input | get $input) } } | list merge } - -#[test] -def test_record_list_merge [] { - use std assert - assert equal ([{a:1} {b:2} {c:3} {d:4}] | list merge) {a:1 b:2 c:3 d:4} -} -#[test] -def test_record_filtername_predicate [] { - use std assert - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name predicate {$in | str contains a}) {aa:1 ab:2 ba:3 ca:5} -} -#[test] -def test_record_filtername_text [] { - use std assert - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text a) {aa:1 ab:2 ba:3 ca:5} - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text -r ^a) {aa:1 ab:2} - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text -r ^A) {} -} -#[test] -def test_record_filtervalue_predicate [] { - use std assert - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-value predicate { $in mod 2 == 0 }) {ab:2 bb:4 cb:6} -} \ No newline at end of file diff --git a/stdlib-candidate/std-rfc/str.nu b/stdlib-candidate/std-rfc/str.nu index 60afd3673..9c182b1e5 100644 --- a/stdlib-candidate/std-rfc/str.nu +++ b/stdlib-candidate/std-rfc/str.nu @@ -15,19 +15,3 @@ export def prepend [head: string]: [string -> string, list -> list $input } } - -#[test] -def test_append [] { - use std assert - assert equal ("foo" | append "/") "foo/" - assert equal (["foo", "bar", "baz"] | append "/") ["foo/", "bar/", "baz/"] - -} - -#[test] -def test_prepend [] { - use std assert - assert equal ("foo" | prepend "/") "/foo" - assert equal (["foo", "bar", "baz"] | prepend "/") ["/foo", "/bar", "/baz"] - -} diff --git a/stdlib-candidate/tests/fs.nu b/stdlib-candidate/tests/fs.nu new file mode 100644 index 000000000..469ad3847 --- /dev/null +++ b/stdlib-candidate/tests/fs.nu @@ -0,0 +1,48 @@ +#[test] +def test [] { + use std assert + + let test_dir = $nu.temp-path | path join (random uuid) + + mkdir $test_dir + seq 1 10 | each {|i| touch ($test_dir | path join $"some_($i)_format.txt") } + + let expected = [ + "some_10_format.txt", + "some_1_format.txt", + "some_2_format.txt", + "some_3_format.txt", + "some_4_format.txt", + "some_5_format.txt", + "some_6_format.txt", + "some_7_format.txt", + "some_8_format.txt", + "some_9_format.txt", + ] + let actual = glob $"($test_dir)/*" | str replace $test_dir "" | str trim --left --char "/" + assert equal ($actual | sort) $expected + + file bulk-rename $test_dir { + parse "some_{i}_format" + | get 0 + | update i { fill --alignment r --character 0 --width 3 } + | $"some_($in.i)_format" + } + + let expected = [ + "some_001_format.txt", + "some_002_format.txt", + "some_003_format.txt", + "some_004_format.txt", + "some_005_format.txt", + "some_006_format.txt", + "some_007_format.txt", + "some_008_format.txt", + "some_009_format.txt", + "some_010_format.txt", + ] + let actual = glob $"($test_dir)/*" | str replace $test_dir "" | str trim --left --char "/" + assert equal ($actual | sort) $expected + + rm -rf $test_dir +} diff --git a/stdlib-candidate/tests/record.nu b/stdlib-candidate/tests/record.nu new file mode 100644 index 000000000..0867a2731 --- /dev/null +++ b/stdlib-candidate/tests/record.nu @@ -0,0 +1,22 @@ +#[test] +def test_record_list_merge [] { + use std assert + assert equal ([{a:1} {b:2} {c:3} {d:4}] | list merge) {a:1 b:2 c:3 d:4} +} +#[test] +def test_record_filtername_predicate [] { + use std assert + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name predicate {$in | str contains a}) {aa:1 ab:2 ba:3 ca:5} +} +#[test] +def test_record_filtername_text [] { + use std assert + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text a) {aa:1 ab:2 ba:3 ca:5} + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text -r ^a) {aa:1 ab:2} + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text -r ^A) {} +} +#[test] +def test_record_filtervalue_predicate [] { + use std assert + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-value predicate { $in mod 2 == 0 }) {ab:2 bb:4 cb:6} +} diff --git a/stdlib-candidate/tests/str.nu b/stdlib-candidate/tests/str.nu new file mode 100644 index 000000000..af388b783 --- /dev/null +++ b/stdlib-candidate/tests/str.nu @@ -0,0 +1,15 @@ +#[test] +def test_append [] { + use std assert + assert equal ("foo" | append "/") "foo/" + assert equal (["foo", "bar", "baz"] | append "/") ["foo/", "bar/", "baz/"] + +} + +#[test] +def test_prepend [] { + use std assert + assert equal ("foo" | prepend "/") "/foo" + assert equal (["foo", "bar", "baz"] | prepend "/") ["/foo", "/bar", "/baz"] + +} From 36c07d72d06f5b5e0294c457aa4d6d439fbd9254 Mon Sep 17 00:00:00 2001 From: Texas Toland Date: Tue, 12 Mar 2024 20:28:45 -0500 Subject: [PATCH 4/4] Fix nupm test --dir stdlib-candidate --- stdlib-candidate/std-rfc/fs.nu | 4 ++-- stdlib-candidate/tests/fs.nu | 10 ++++++---- stdlib-candidate/tests/mod.nu | 3 +++ stdlib-candidate/tests/record.nu | 34 +++++++++++++++----------------- stdlib-candidate/tests/str.nu | 19 ++++++++---------- 5 files changed, 35 insertions(+), 35 deletions(-) create mode 100644 stdlib-candidate/tests/mod.nu diff --git a/stdlib-candidate/std-rfc/fs.nu b/stdlib-candidate/std-rfc/fs.nu index 7390dd845..e2fce5210 100644 --- a/stdlib-candidate/std-rfc/fs.nu +++ b/stdlib-candidate/std-rfc/fs.nu @@ -20,8 +20,8 @@ export def "file bulk-rename" [ stem_update: closure, # the code to run on the stem of the files: should start with parsing the format and end with reconstructing the same format --verbose, # be verbose when moving the files around ]: nothing -> nothing { - ls --full-paths $directory | insert new { - get name | path parse | update stem $stem_update | path join + ls --full-paths $directory | insert new {|row| + $row.name | path parse | update stem $stem_update | path join } | each { if $verbose { diff --git a/stdlib-candidate/tests/fs.nu b/stdlib-candidate/tests/fs.nu index 469ad3847..9af5659f9 100644 --- a/stdlib-candidate/tests/fs.nu +++ b/stdlib-candidate/tests/fs.nu @@ -1,7 +1,9 @@ -#[test] -def test [] { - use std assert +use std assert +use ../std-rfc "file bulk-rename" +alias rename = file bulk-rename + +export def "test file bulk-rename" [] { let test_dir = $nu.temp-path | path join (random uuid) mkdir $test_dir @@ -22,7 +24,7 @@ def test [] { let actual = glob $"($test_dir)/*" | str replace $test_dir "" | str trim --left --char "/" assert equal ($actual | sort) $expected - file bulk-rename $test_dir { + rename $test_dir { parse "some_{i}_format" | get 0 | update i { fill --alignment r --character 0 --width 3 } diff --git a/stdlib-candidate/tests/mod.nu b/stdlib-candidate/tests/mod.nu new file mode 100644 index 000000000..8f03760ec --- /dev/null +++ b/stdlib-candidate/tests/mod.nu @@ -0,0 +1,3 @@ +export module fs.nu +export module record.nu +export module str.nu diff --git a/stdlib-candidate/tests/record.nu b/stdlib-candidate/tests/record.nu index 0867a2731..f297076e6 100644 --- a/stdlib-candidate/tests/record.nu +++ b/stdlib-candidate/tests/record.nu @@ -1,22 +1,20 @@ -#[test] -def test_record_list_merge [] { - use std assert - assert equal ([{a:1} {b:2} {c:3} {d:4}] | list merge) {a:1 b:2 c:3 d:4} +use std assert +use ../std-rfc record + +export def "test list_merge" [] { + assert equal ([{a:1} {b:2} {c:3} {d:4}] | record list merge) {a:1 b:2 c:3 d:4} } -#[test] -def test_record_filtername_predicate [] { - use std assert - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name predicate {$in | str contains a}) {aa:1 ab:2 ba:3 ca:5} + +export def "test filter-name predicate" [] { + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | record filter-name predicate {$in | str contains a}) {aa:1 ab:2 ba:3 ca:5} } -#[test] -def test_record_filtername_text [] { - use std assert - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text a) {aa:1 ab:2 ba:3 ca:5} - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text -r ^a) {aa:1 ab:2} - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-name text -r ^A) {} + +export def "test filter-name text" [] { + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | record filter-name text a) {aa:1 ab:2 ba:3 ca:5} + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | record filter-name text -r ^a) {aa:1 ab:2} + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | record filter-name text -r ^A) {} } -#[test] -def test_record_filtervalue_predicate [] { - use std assert - assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | filter-value predicate { $in mod 2 == 0 }) {ab:2 bb:4 cb:6} + +export def "test filter-value predicate" [] { + assert equal ({aa:1 ab:2 ba:3 bb:4 ca:5 cb:6} | record filter-value predicate { $in mod 2 == 0 }) {ab:2 bb:4 cb:6} } diff --git a/stdlib-candidate/tests/str.nu b/stdlib-candidate/tests/str.nu index af388b783..0c8398861 100644 --- a/stdlib-candidate/tests/str.nu +++ b/stdlib-candidate/tests/str.nu @@ -1,15 +1,12 @@ -#[test] -def test_append [] { - use std assert - assert equal ("foo" | append "/") "foo/" - assert equal (["foo", "bar", "baz"] | append "/") ["foo/", "bar/", "baz/"] +use std assert +use ../std-rfc str +export def "test append" [] { + assert equal ("foo" | str append "/") "foo/" + assert equal (["foo", "bar", "baz"] | str append "/") ["foo/", "bar/", "baz/"] } -#[test] -def test_prepend [] { - use std assert - assert equal ("foo" | prepend "/") "/foo" - assert equal (["foo", "bar", "baz"] | prepend "/") ["/foo", "/bar", "/baz"] - +export def "test prepend" [] { + assert equal ("foo" | str prepend "/") "/foo" + assert equal (["foo", "bar", "baz"] | str prepend "/") ["/foo", "/bar", "/baz"] }