From a74d05061d49b436baf88b02646d6b803ee929cf Mon Sep 17 00:00:00 2001 From: JT Date: Sat, 19 Jun 2021 12:06:44 +1200 Subject: [PATCH] Begin directory contrib docs and split commands (#3650) * Begin directory contrib docs and split commands * Fix unused import warning --- Cargo.lock | 5 +- crates/README.md | 13 + crates/nu-cli/Cargo.toml | 68 ++- crates/nu-cli/README.md | 4 + crates/nu-cli/src/app.rs | 4 +- crates/nu-cli/src/app/options_parser.rs | 6 +- crates/nu-cli/src/cli.rs | 4 +- crates/nu-cli/src/format.rs | 6 - crates/nu-cli/src/lib.rs | 11 +- crates/nu-cli/src/line_editor.rs | 5 +- crates/nu-cli/src/prelude.rs | 42 -- crates/nu-cli/src/shell.rs | 215 +++++++++- crates/nu-cli/src/shell/helper.rs | 212 ---------- crates/nu-command/README.md | 7 + crates/nu-command/src/{commands => }/args.rs | 0 .../src/{commands => }/classified/dynamic.rs | 0 .../src/{commands => }/classified/external.rs | 0 .../src/{commands => }/classified/mod.rs | 0 crates/nu-command/src/commands.rs | 390 ------------------ .../src/commands/{ => charting}/chart.rs | 0 .../src/commands/{ => charting}/histogram.rs | 9 +- .../nu-command/src/commands/charting/mod.rs | 5 + crates/nu-command/src/commands/config/get.rs | 2 +- .../commands/{ => conversions}/into/binary.rs | 0 .../{ => conversions}/into/command.rs | 0 .../commands/{ => conversions}/into/int.rs | 0 .../commands/{ => conversions}/into/mod.rs | 0 .../commands/{ => conversions}/into/string.rs | 0 .../src/commands/conversions/mod.rs | 3 + .../src/commands/{ => core_commands}/alias.rs | 0 .../src/commands/{ => core_commands}/debug.rs | 0 .../src/commands/{ => core_commands}/def.rs | 0 .../commands/{ => core_commands}/describe.rs | 0 .../src/commands/{ => core_commands}/do_.rs | 0 .../src/commands/{ => core_commands}/echo.rs | 0 .../src/commands/{ => core_commands}/help.rs | 0 .../commands/{ => core_commands}/history.rs | 0 .../src/commands/{ => core_commands}/if_.rs | 0 .../commands/{ => core_commands}/ignore.rs | 0 .../src/commands/{ => core_commands}/let_.rs | 0 .../src/commands/core_commands/mod.rs | 35 ++ .../plugin.rs => core_commands/nu_plugin.rs} | 0 .../nu_signature.rs} | 20 + .../commands/{ => core_commands}/source.rs | 0 .../src/commands/{ => core_commands}/tags.rs | 0 .../commands/{ => core_commands}/version.rs | 2 +- .../src/commands/{ => env}/autoenv.rs | 0 .../src/commands/{ => env}/autoenv_trust.rs | 0 .../src/commands/{ => env}/autoenv_untrust.rs | 4 +- .../src/commands/{ => env}/let_env.rs | 0 .../src/commands/{ => env}/load_env.rs | 0 crates/nu-command/src/commands/env/mod.rs | 13 + .../src/commands/{ => env}/with_env.rs | 0 .../src/commands/{ => filesystem}/cd.rs | 0 .../src/commands/{ => filesystem}/cp.rs | 0 .../src/commands/{ => filesystem}/ls.rs | 0 .../src/commands/{ => filesystem}/mkdir.rs | 0 .../nu-command/src/commands/filesystem/mod.rs | 19 + .../src/commands/{move_ => filesystem}/mv.rs | 0 .../src/commands/{ => filesystem}/open.rs | 2 +- .../src/commands/{ => filesystem}/rm.rs | 0 .../src/commands/{ => filesystem}/save.rs | 0 .../src/commands/{ => filesystem}/touch.rs | 0 .../src/commands/{ => filters}/all.rs | 0 .../src/commands/{ => filters}/any.rs | 0 .../src/commands/{ => filters}/append.rs | 0 .../src/commands/{ => filters}/compact.rs | 0 .../src/commands/{ => filters}/default.rs | 0 .../src/commands/{ => filters}/drop/column.rs | 0 .../commands/{ => filters}/drop/command.rs | 0 .../src/commands/{ => filters}/drop/mod.rs | 0 .../commands/{ => filters}/each/command.rs | 0 .../src/commands/{ => filters}/each/group.rs | 2 +- .../src/commands/{ => filters}/each/mod.rs | 0 .../src/commands/{ => filters}/each/window.rs | 2 +- .../src/commands/{ => filters}/empty.rs | 0 .../src/commands/{ => filters}/every.rs | 0 .../src/commands/{ => filters}/first.rs | 0 .../src/commands/{ => filters}/flatten.rs | 0 .../src/commands/{ => filters}/get.rs | 0 .../src/commands/{ => filters}/group_by.rs | 2 +- .../commands/{ => filters}/group_by_date.rs | 0 .../src/commands/{ => filters}/headers.rs | 0 .../src/commands/{ => filters}/insert.rs | 0 .../commands/{ => filters}/keep/command.rs | 0 .../src/commands/{ => filters}/keep/mod.rs | 0 .../src/commands/{ => filters}/keep/until.rs | 0 .../src/commands/{ => filters}/keep/while_.rs | 0 .../src/commands/{ => filters}/last.rs | 0 .../src/commands/{ => filters}/length.rs | 0 .../src/commands/{ => filters}/merge.rs | 0 crates/nu-command/src/commands/filters/mod.rs | 79 ++++ .../{move_/command.rs => filters/move_.rs} | 0 .../src/commands/{ => filters}/nth.rs | 0 .../src/commands/{ => filters}/pivot.rs | 0 .../src/commands/{ => filters}/prepend.rs | 0 .../src/commands/{ => filters}/range.rs | 0 .../src/commands/{ => filters}/reduce.rs | 2 +- .../src/commands/{ => filters}/reject.rs | 0 .../src/commands/{ => filters}/rename.rs | 0 .../src/commands/{ => filters}/reverse.rs | 0 .../src/commands/{ => filters}/roll/column.rs | 0 .../commands/{ => filters}/roll/command.rs | 0 .../src/commands/{ => filters}/roll/mod.rs | 0 .../src/commands/{ => filters}/roll/up.rs | 0 .../commands/{ => filters}/rotate/command.rs | 0 .../{ => filters}/rotate/counter_clockwise.rs | 0 .../src/commands/{ => filters}/rotate/mod.rs | 0 .../src/commands/{ => filters}/select.rs | 0 .../src/commands/{ => filters}/shuffle.rs | 0 .../commands/{ => filters}/skip/command.rs | 0 .../src/commands/{ => filters}/skip/mod.rs | 0 .../src/commands/{ => filters}/skip/until.rs | 0 .../src/commands/{ => filters}/skip/while_.rs | 0 .../src/commands/{ => filters}/sort_by.rs | 0 .../src/commands/{ => filters}/uniq.rs | 0 .../src/commands/{ => filters}/update.rs | 0 .../src/commands/{ => filters}/where_.rs | 0 .../src/commands/{ => filters}/wrap.rs | 0 .../{from.rs => formats/from/command.rs} | 0 .../{from_csv.rs => formats/from/csv.rs} | 2 +- .../from/delimited.rs} | 0 .../{from_eml.rs => formats/from/eml.rs} | 0 .../{from_ics.rs => formats/from/ics.rs} | 0 .../{from_ini.rs => formats/from/ini.rs} | 0 .../{from_json.rs => formats/from/json.rs} | 0 .../src/commands/formats/from/mod.rs | 32 ++ .../{from_ods.rs => formats/from/ods.rs} | 0 .../{from_ssv.rs => formats/from/ssv.rs} | 0 .../{from_toml.rs => formats/from/toml.rs} | 0 .../{from_tsv.rs => formats/from/tsv.rs} | 2 +- .../{from_url.rs => formats/from/url.rs} | 0 .../{from_vcf.rs => formats/from/vcf.rs} | 0 .../{from_xlsx.rs => formats/from/xlsx.rs} | 0 .../{from_xml.rs => formats/from/xml.rs} | 7 +- .../{from_yaml.rs => formats/from/yaml.rs} | 0 crates/nu-command/src/commands/formats/mod.rs | 5 + .../commands/{to.rs => formats/to/command.rs} | 0 .../commands/{to_csv.rs => formats/to/csv.rs} | 2 +- .../to/delimited.rs} | 0 .../{to_html.rs => formats/to/html.rs} | 0 .../{to_json.rs => formats/to/json.rs} | 0 .../commands/{to_md.rs => formats/to/md.rs} | 0 .../nu-command/src/commands/formats/to/mod.rs | 22 + .../{to_toml.rs => formats/to/toml.rs} | 0 .../commands/{to_tsv.rs => formats/to/tsv.rs} | 2 +- .../commands/{to_url.rs => formats/to/url.rs} | 0 .../commands/{to_xml.rs => formats/to/xml.rs} | 0 .../{to_yaml.rs => formats/to/yaml.rs} | 0 .../src/commands/{ => generators}/cal.rs | 0 .../commands/{ => generators}/date/command.rs | 0 .../commands/{ => generators}/date/format.rs | 2 +- .../{ => generators}/date/list_timezone.rs | 0 .../src/commands/{ => generators}/date/mod.rs | 0 .../src/commands/{ => generators}/date/now.rs | 0 .../commands/{ => generators}/date/parser.rs | 0 .../{ => generators}/date/to_table.rs | 2 +- .../{ => generators}/date/to_timezone.rs | 2 +- .../src/commands/{ => generators}/for_in.rs | 2 +- .../{ => generators}/hash_/base64_.rs | 0 .../{ => generators}/hash_/command.rs | 0 .../commands/{ => generators}/hash_/md5_.rs | 0 .../commands/{ => generators}/hash_/mod.rs | 0 .../nu-command/src/commands/generators/mod.rs | 13 + .../src/commands/{ => generators}/seq.rs | 0 .../commands/{ => generators}/seq_dates.rs | 0 crates/nu-command/src/commands/math/median.rs | 2 +- crates/nu-command/src/commands/math/mode.rs | 2 +- crates/nu-command/src/commands/mod.rs | 120 ++++++ crates/nu-command/src/commands/move_/mod.rs | 5 - crates/nu-command/src/commands/network/mod.rs | 3 + .../commands/{ => network}/url_/command.rs | 0 .../src/commands/{ => network}/url_/host.rs | 0 .../src/commands/{ => network}/url_/mod.rs | 0 .../src/commands/{ => network}/url_/path.rs | 0 .../src/commands/{ => network}/url_/query.rs | 0 .../src/commands/{ => network}/url_/scheme.rs | 0 crates/nu-command/src/commands/nu/mod.rs | 25 -- .../commands/{ => platform}/ansi/command.rs | 0 .../commands/{ => platform}/ansi/gradient.rs | 0 .../src/commands/{ => platform}/ansi/mod.rs | 0 .../src/commands/{ => platform}/ansi/strip.rs | 0 .../src/commands/{ => platform}/benchmark.rs | 0 .../src/commands/{ => platform}/clear.rs | 0 .../src/commands/{ => platform}/clip.rs | 0 .../src/commands/{ => platform}/du.rs | 0 .../src/commands/{ => platform}/exec.rs | 0 .../src/commands/{ => platform}/kill.rs | 0 .../nu-command/src/commands/platform/mod.rs | 27 ++ .../src/commands/{ => platform}/pwd.rs | 0 .../commands/{ => platform}/run_external.rs | 2 +- .../src/commands/{ => platform}/sleep.rs | 0 .../src/commands/{ => platform}/termsize.rs | 0 .../src/commands/{ => platform}/which_.rs | 0 .../commands/{shells.rs => shells/command.rs} | 0 .../src/commands/{ => shells}/enter.rs | 2 +- .../src/commands/{ => shells}/exit.rs | 0 crates/nu-command/src/commands/shells/mod.rs | 11 + .../src/commands/{ => shells}/next.rs | 0 .../src/commands/{ => shells}/prev.rs | 0 .../commands/{ => strings}/build_string.rs | 0 .../src/commands/{ => strings}/char_.rs | 0 .../commands/{ => strings}/format/command.rs | 0 .../{ => strings}/format/format_filesize.rs | 0 .../src/commands/{ => strings}/format/mod.rs | 0 .../src/commands/{ => strings}/lines.rs | 0 crates/nu-command/src/commands/strings/mod.rs | 19 + .../commands/{ => strings}/parse/command.rs | 0 .../src/commands/{ => strings}/parse/mod.rs | 0 .../src/commands/{ => strings}/size.rs | 0 .../src/commands/{ => strings}/split/chars.rs | 0 .../commands/{ => strings}/split/column.rs | 0 .../commands/{ => strings}/split/command.rs | 0 .../src/commands/{ => strings}/split/mod.rs | 0 .../src/commands/{ => strings}/split/row.rs | 0 .../src/commands/{ => strings}/split_by.rs | 0 .../commands/{ => strings}/str_/capitalize.rs | 0 .../{ => strings}/str_/case/camel_case.rs | 2 +- .../{ => strings}/str_/case/kebab_case.rs | 2 +- .../commands/{ => strings}/str_/case/mod.rs | 0 .../{ => strings}/str_/case/pascal_case.rs | 2 +- .../str_/case/screaming_snake_case.rs | 2 +- .../{ => strings}/str_/case/snake_case.rs | 2 +- .../commands/{ => strings}/str_/collect.rs | 0 .../commands/{ => strings}/str_/command.rs | 0 .../commands/{ => strings}/str_/contains.rs | 0 .../commands/{ => strings}/str_/downcase.rs | 0 .../commands/{ => strings}/str_/ends_with.rs | 0 .../{ => strings}/str_/find_replace.rs | 0 .../commands/{ => strings}/str_/index_of.rs | 0 .../src/commands/{ => strings}/str_/length.rs | 0 .../src/commands/{ => strings}/str_/lpad.rs | 0 .../src/commands/{ => strings}/str_/mod.rs | 0 .../commands/{ => strings}/str_/reverse.rs | 0 .../src/commands/{ => strings}/str_/rpad.rs | 0 .../{ => strings}/str_/starts_with.rs | 0 .../commands/{ => strings}/str_/substring.rs | 0 .../{ => strings}/str_/to_datetime.rs | 0 .../commands/{ => strings}/str_/to_decimal.rs | 0 .../commands/{ => strings}/str_/to_integer.rs | 0 .../commands/{ => strings}/str_/trim/mod.rs | 0 .../{ => strings}/str_/trim/trim_both_ends.rs | 2 +- .../{ => strings}/str_/trim/trim_left.rs | 2 +- .../{ => strings}/str_/trim/trim_right.rs | 2 +- .../src/commands/{ => strings}/str_/upcase.rs | 0 .../{ => viewers}/autoview/command.rs | 2 +- .../commands/{ => viewers}/autoview/mod.rs | 0 .../{ => viewers}/autoview/options.rs | 0 .../bat_constants.rs} | 0 crates/nu-command/src/commands/viewers/mod.rs | 7 + .../commands/{ => viewers}/table/command.rs | 2 +- .../src/commands/{ => viewers}/table/mod.rs | 0 .../commands/{ => viewers}/table/options.rs | 0 .../src/{commands => }/default_context.rs | 7 +- crates/nu-command/src/lib.rs | 3 + crates/nu-engine/Cargo.toml | 37 +- crates/nu-engine/src/lib.rs | 1 + crates/{nu-cli => nu-engine}/src/types.rs | 0 .../src/types/deduction.rs | 2 +- crates/nu-protocol/Cargo.toml | 14 +- src/README.md | 5 + 261 files changed, 794 insertions(+), 808 deletions(-) create mode 100644 crates/README.md create mode 100644 crates/nu-cli/README.md delete mode 100644 crates/nu-cli/src/format.rs delete mode 100644 crates/nu-cli/src/prelude.rs delete mode 100644 crates/nu-cli/src/shell/helper.rs create mode 100644 crates/nu-command/README.md rename crates/nu-command/src/{commands => }/args.rs (100%) rename crates/nu-command/src/{commands => }/classified/dynamic.rs (100%) rename crates/nu-command/src/{commands => }/classified/external.rs (100%) rename crates/nu-command/src/{commands => }/classified/mod.rs (100%) delete mode 100644 crates/nu-command/src/commands.rs rename crates/nu-command/src/commands/{ => charting}/chart.rs (100%) rename crates/nu-command/src/commands/{ => charting}/histogram.rs (96%) create mode 100644 crates/nu-command/src/commands/charting/mod.rs rename crates/nu-command/src/commands/{ => conversions}/into/binary.rs (100%) rename crates/nu-command/src/commands/{ => conversions}/into/command.rs (100%) rename crates/nu-command/src/commands/{ => conversions}/into/int.rs (100%) rename crates/nu-command/src/commands/{ => conversions}/into/mod.rs (100%) rename crates/nu-command/src/commands/{ => conversions}/into/string.rs (100%) create mode 100644 crates/nu-command/src/commands/conversions/mod.rs rename crates/nu-command/src/commands/{ => core_commands}/alias.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/debug.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/def.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/describe.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/do_.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/echo.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/help.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/history.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/if_.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/ignore.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/let_.rs (100%) create mode 100644 crates/nu-command/src/commands/core_commands/mod.rs rename crates/nu-command/src/commands/{nu/plugin.rs => core_commands/nu_plugin.rs} (100%) rename crates/nu-command/src/commands/{nu/command.rs => core_commands/nu_signature.rs} (78%) rename crates/nu-command/src/commands/{ => core_commands}/source.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/tags.rs (100%) rename crates/nu-command/src/commands/{ => core_commands}/version.rs (98%) rename crates/nu-command/src/commands/{ => env}/autoenv.rs (100%) rename crates/nu-command/src/commands/{ => env}/autoenv_trust.rs (100%) rename crates/nu-command/src/commands/{ => env}/autoenv_untrust.rs (97%) rename crates/nu-command/src/commands/{ => env}/let_env.rs (100%) rename crates/nu-command/src/commands/{ => env}/load_env.rs (100%) create mode 100644 crates/nu-command/src/commands/env/mod.rs rename crates/nu-command/src/commands/{ => env}/with_env.rs (100%) rename crates/nu-command/src/commands/{ => filesystem}/cd.rs (100%) rename crates/nu-command/src/commands/{ => filesystem}/cp.rs (100%) rename crates/nu-command/src/commands/{ => filesystem}/ls.rs (100%) rename crates/nu-command/src/commands/{ => filesystem}/mkdir.rs (100%) create mode 100644 crates/nu-command/src/commands/filesystem/mod.rs rename crates/nu-command/src/commands/{move_ => filesystem}/mv.rs (100%) rename crates/nu-command/src/commands/{ => filesystem}/open.rs (99%) rename crates/nu-command/src/commands/{ => filesystem}/rm.rs (100%) rename crates/nu-command/src/commands/{ => filesystem}/save.rs (100%) rename crates/nu-command/src/commands/{ => filesystem}/touch.rs (100%) rename crates/nu-command/src/commands/{ => filters}/all.rs (100%) rename crates/nu-command/src/commands/{ => filters}/any.rs (100%) rename crates/nu-command/src/commands/{ => filters}/append.rs (100%) rename crates/nu-command/src/commands/{ => filters}/compact.rs (100%) rename crates/nu-command/src/commands/{ => filters}/default.rs (100%) rename crates/nu-command/src/commands/{ => filters}/drop/column.rs (100%) rename crates/nu-command/src/commands/{ => filters}/drop/command.rs (100%) rename crates/nu-command/src/commands/{ => filters}/drop/mod.rs (100%) rename crates/nu-command/src/commands/{ => filters}/each/command.rs (100%) rename crates/nu-command/src/commands/{ => filters}/each/group.rs (98%) rename crates/nu-command/src/commands/{ => filters}/each/mod.rs (100%) rename crates/nu-command/src/commands/{ => filters}/each/window.rs (98%) rename crates/nu-command/src/commands/{ => filters}/empty.rs (100%) rename crates/nu-command/src/commands/{ => filters}/every.rs (100%) rename crates/nu-command/src/commands/{ => filters}/first.rs (100%) rename crates/nu-command/src/commands/{ => filters}/flatten.rs (100%) rename crates/nu-command/src/commands/{ => filters}/get.rs (100%) rename crates/nu-command/src/commands/{ => filters}/group_by.rs (99%) rename crates/nu-command/src/commands/{ => filters}/group_by_date.rs (100%) rename crates/nu-command/src/commands/{ => filters}/headers.rs (100%) rename crates/nu-command/src/commands/{ => filters}/insert.rs (100%) rename crates/nu-command/src/commands/{ => filters}/keep/command.rs (100%) rename crates/nu-command/src/commands/{ => filters}/keep/mod.rs (100%) rename crates/nu-command/src/commands/{ => filters}/keep/until.rs (100%) rename crates/nu-command/src/commands/{ => filters}/keep/while_.rs (100%) rename crates/nu-command/src/commands/{ => filters}/last.rs (100%) rename crates/nu-command/src/commands/{ => filters}/length.rs (100%) rename crates/nu-command/src/commands/{ => filters}/merge.rs (100%) create mode 100644 crates/nu-command/src/commands/filters/mod.rs rename crates/nu-command/src/commands/{move_/command.rs => filters/move_.rs} (100%) rename crates/nu-command/src/commands/{ => filters}/nth.rs (100%) rename crates/nu-command/src/commands/{ => filters}/pivot.rs (100%) rename crates/nu-command/src/commands/{ => filters}/prepend.rs (100%) rename crates/nu-command/src/commands/{ => filters}/range.rs (100%) rename crates/nu-command/src/commands/{ => filters}/reduce.rs (99%) rename crates/nu-command/src/commands/{ => filters}/reject.rs (100%) rename crates/nu-command/src/commands/{ => filters}/rename.rs (100%) rename crates/nu-command/src/commands/{ => filters}/reverse.rs (100%) rename crates/nu-command/src/commands/{ => filters}/roll/column.rs (100%) rename crates/nu-command/src/commands/{ => filters}/roll/command.rs (100%) rename crates/nu-command/src/commands/{ => filters}/roll/mod.rs (100%) rename crates/nu-command/src/commands/{ => filters}/roll/up.rs (100%) rename crates/nu-command/src/commands/{ => filters}/rotate/command.rs (100%) rename crates/nu-command/src/commands/{ => filters}/rotate/counter_clockwise.rs (100%) rename crates/nu-command/src/commands/{ => filters}/rotate/mod.rs (100%) rename crates/nu-command/src/commands/{ => filters}/select.rs (100%) rename crates/nu-command/src/commands/{ => filters}/shuffle.rs (100%) rename crates/nu-command/src/commands/{ => filters}/skip/command.rs (100%) rename crates/nu-command/src/commands/{ => filters}/skip/mod.rs (100%) rename crates/nu-command/src/commands/{ => filters}/skip/until.rs (100%) rename crates/nu-command/src/commands/{ => filters}/skip/while_.rs (100%) rename crates/nu-command/src/commands/{ => filters}/sort_by.rs (100%) rename crates/nu-command/src/commands/{ => filters}/uniq.rs (100%) rename crates/nu-command/src/commands/{ => filters}/update.rs (100%) rename crates/nu-command/src/commands/{ => filters}/where_.rs (100%) rename crates/nu-command/src/commands/{ => filters}/wrap.rs (100%) rename crates/nu-command/src/commands/{from.rs => formats/from/command.rs} (100%) rename crates/nu-command/src/commands/{from_csv.rs => formats/from/csv.rs} (97%) rename crates/nu-command/src/commands/{from_delimited_data.rs => formats/from/delimited.rs} (100%) rename crates/nu-command/src/commands/{from_eml.rs => formats/from/eml.rs} (100%) rename crates/nu-command/src/commands/{from_ics.rs => formats/from/ics.rs} (100%) rename crates/nu-command/src/commands/{from_ini.rs => formats/from/ini.rs} (100%) rename crates/nu-command/src/commands/{from_json.rs => formats/from/json.rs} (100%) create mode 100644 crates/nu-command/src/commands/formats/from/mod.rs rename crates/nu-command/src/commands/{from_ods.rs => formats/from/ods.rs} (100%) rename crates/nu-command/src/commands/{from_ssv.rs => formats/from/ssv.rs} (100%) rename crates/nu-command/src/commands/{from_toml.rs => formats/from/toml.rs} (100%) rename crates/nu-command/src/commands/{from_tsv.rs => formats/from/tsv.rs} (94%) rename crates/nu-command/src/commands/{from_url.rs => formats/from/url.rs} (100%) rename crates/nu-command/src/commands/{from_vcf.rs => formats/from/vcf.rs} (100%) rename crates/nu-command/src/commands/{from_xlsx.rs => formats/from/xlsx.rs} (100%) rename crates/nu-command/src/commands/{from_xml.rs => formats/from/xml.rs} (98%) rename crates/nu-command/src/commands/{from_yaml.rs => formats/from/yaml.rs} (100%) create mode 100644 crates/nu-command/src/commands/formats/mod.rs rename crates/nu-command/src/commands/{to.rs => formats/to/command.rs} (100%) rename crates/nu-command/src/commands/{to_csv.rs => formats/to/csv.rs} (97%) rename crates/nu-command/src/commands/{to_delimited_data.rs => formats/to/delimited.rs} (100%) rename crates/nu-command/src/commands/{to_html.rs => formats/to/html.rs} (100%) rename crates/nu-command/src/commands/{to_json.rs => formats/to/json.rs} (100%) rename crates/nu-command/src/commands/{to_md.rs => formats/to/md.rs} (100%) create mode 100644 crates/nu-command/src/commands/formats/to/mod.rs rename crates/nu-command/src/commands/{to_toml.rs => formats/to/toml.rs} (100%) rename crates/nu-command/src/commands/{to_tsv.rs => formats/to/tsv.rs} (94%) rename crates/nu-command/src/commands/{to_url.rs => formats/to/url.rs} (100%) rename crates/nu-command/src/commands/{to_xml.rs => formats/to/xml.rs} (100%) rename crates/nu-command/src/commands/{to_yaml.rs => formats/to/yaml.rs} (100%) rename crates/nu-command/src/commands/{ => generators}/cal.rs (100%) rename crates/nu-command/src/commands/{ => generators}/date/command.rs (100%) rename crates/nu-command/src/commands/{ => generators}/date/format.rs (97%) rename crates/nu-command/src/commands/{ => generators}/date/list_timezone.rs (100%) rename crates/nu-command/src/commands/{ => generators}/date/mod.rs (100%) rename crates/nu-command/src/commands/{ => generators}/date/now.rs (100%) rename crates/nu-command/src/commands/{ => generators}/date/parser.rs (100%) rename crates/nu-command/src/commands/{ => generators}/date/to_table.rs (97%) rename crates/nu-command/src/commands/{ => generators}/date/to_timezone.rs (97%) rename crates/nu-command/src/commands/{ => generators}/for_in.rs (98%) rename crates/nu-command/src/commands/{ => generators}/hash_/base64_.rs (100%) rename crates/nu-command/src/commands/{ => generators}/hash_/command.rs (100%) rename crates/nu-command/src/commands/{ => generators}/hash_/md5_.rs (100%) rename crates/nu-command/src/commands/{ => generators}/hash_/mod.rs (100%) create mode 100644 crates/nu-command/src/commands/generators/mod.rs rename crates/nu-command/src/commands/{ => generators}/seq.rs (100%) rename crates/nu-command/src/commands/{ => generators}/seq_dates.rs (100%) create mode 100644 crates/nu-command/src/commands/mod.rs delete mode 100644 crates/nu-command/src/commands/move_/mod.rs create mode 100644 crates/nu-command/src/commands/network/mod.rs rename crates/nu-command/src/commands/{ => network}/url_/command.rs (100%) rename crates/nu-command/src/commands/{ => network}/url_/host.rs (100%) rename crates/nu-command/src/commands/{ => network}/url_/mod.rs (100%) rename crates/nu-command/src/commands/{ => network}/url_/path.rs (100%) rename crates/nu-command/src/commands/{ => network}/url_/query.rs (100%) rename crates/nu-command/src/commands/{ => network}/url_/scheme.rs (100%) delete mode 100644 crates/nu-command/src/commands/nu/mod.rs rename crates/nu-command/src/commands/{ => platform}/ansi/command.rs (100%) rename crates/nu-command/src/commands/{ => platform}/ansi/gradient.rs (100%) rename crates/nu-command/src/commands/{ => platform}/ansi/mod.rs (100%) rename crates/nu-command/src/commands/{ => platform}/ansi/strip.rs (100%) rename crates/nu-command/src/commands/{ => platform}/benchmark.rs (100%) rename crates/nu-command/src/commands/{ => platform}/clear.rs (100%) rename crates/nu-command/src/commands/{ => platform}/clip.rs (100%) rename crates/nu-command/src/commands/{ => platform}/du.rs (100%) rename crates/nu-command/src/commands/{ => platform}/exec.rs (100%) rename crates/nu-command/src/commands/{ => platform}/kill.rs (100%) create mode 100644 crates/nu-command/src/commands/platform/mod.rs rename crates/nu-command/src/commands/{ => platform}/pwd.rs (100%) rename crates/nu-command/src/commands/{ => platform}/run_external.rs (99%) rename crates/nu-command/src/commands/{ => platform}/sleep.rs (100%) rename crates/nu-command/src/commands/{ => platform}/termsize.rs (100%) rename crates/nu-command/src/commands/{ => platform}/which_.rs (100%) rename crates/nu-command/src/commands/{shells.rs => shells/command.rs} (100%) rename crates/nu-command/src/commands/{ => shells}/enter.rs (99%) rename crates/nu-command/src/commands/{ => shells}/exit.rs (100%) create mode 100644 crates/nu-command/src/commands/shells/mod.rs rename crates/nu-command/src/commands/{ => shells}/next.rs (100%) rename crates/nu-command/src/commands/{ => shells}/prev.rs (100%) rename crates/nu-command/src/commands/{ => strings}/build_string.rs (100%) rename crates/nu-command/src/commands/{ => strings}/char_.rs (100%) rename crates/nu-command/src/commands/{ => strings}/format/command.rs (100%) rename crates/nu-command/src/commands/{ => strings}/format/format_filesize.rs (100%) rename crates/nu-command/src/commands/{ => strings}/format/mod.rs (100%) rename crates/nu-command/src/commands/{ => strings}/lines.rs (100%) create mode 100644 crates/nu-command/src/commands/strings/mod.rs rename crates/nu-command/src/commands/{ => strings}/parse/command.rs (100%) rename crates/nu-command/src/commands/{ => strings}/parse/mod.rs (100%) rename crates/nu-command/src/commands/{ => strings}/size.rs (100%) rename crates/nu-command/src/commands/{ => strings}/split/chars.rs (100%) rename crates/nu-command/src/commands/{ => strings}/split/column.rs (100%) rename crates/nu-command/src/commands/{ => strings}/split/command.rs (100%) rename crates/nu-command/src/commands/{ => strings}/split/mod.rs (100%) rename crates/nu-command/src/commands/{ => strings}/split/row.rs (100%) rename crates/nu-command/src/commands/{ => strings}/split_by.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/capitalize.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/case/camel_case.rs (97%) rename crates/nu-command/src/commands/{ => strings}/str_/case/kebab_case.rs (97%) rename crates/nu-command/src/commands/{ => strings}/str_/case/mod.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/case/pascal_case.rs (97%) rename crates/nu-command/src/commands/{ => strings}/str_/case/screaming_snake_case.rs (97%) rename crates/nu-command/src/commands/{ => strings}/str_/case/snake_case.rs (97%) rename crates/nu-command/src/commands/{ => strings}/str_/collect.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/command.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/contains.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/downcase.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/ends_with.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/find_replace.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/index_of.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/length.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/lpad.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/mod.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/reverse.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/rpad.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/starts_with.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/substring.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/to_datetime.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/to_decimal.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/to_integer.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/trim/mod.rs (100%) rename crates/nu-command/src/commands/{ => strings}/str_/trim/trim_both_ends.rs (98%) rename crates/nu-command/src/commands/{ => strings}/str_/trim/trim_left.rs (98%) rename crates/nu-command/src/commands/{ => strings}/str_/trim/trim_right.rs (98%) rename crates/nu-command/src/commands/{ => strings}/str_/upcase.rs (100%) rename crates/nu-command/src/commands/{ => viewers}/autoview/command.rs (99%) rename crates/nu-command/src/commands/{ => viewers}/autoview/mod.rs (100%) rename crates/nu-command/src/commands/{ => viewers}/autoview/options.rs (100%) rename crates/nu-command/src/commands/{constants.rs => viewers/bat_constants.rs} (100%) create mode 100644 crates/nu-command/src/commands/viewers/mod.rs rename crates/nu-command/src/commands/{ => viewers}/table/command.rs (99%) rename crates/nu-command/src/commands/{ => viewers}/table/mod.rs (100%) rename crates/nu-command/src/commands/{ => viewers}/table/options.rs (100%) rename crates/nu-command/src/{commands => }/default_context.rs (98%) rename crates/{nu-cli => nu-engine}/src/types.rs (100%) rename crates/{nu-cli => nu-engine}/src/types/deduction.rs (99%) create mode 100644 src/README.md diff --git a/Cargo.lock b/Cargo.lock index 7b891be92..d4da037dd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "Inflector" version = "0.11.4" @@ -3327,8 +3329,6 @@ dependencies = [ "htmlescape", "ical", "indexmap", - "itertools", - "lazy_static 1.4.0", "log 0.4.14", "meval", "nu-ansi-term", @@ -3565,6 +3565,7 @@ dependencies = [ "hamcrest2", "indexmap", "itertools", + "lazy_static 1.4.0", "log 0.4.14", "nu-ansi-term", "nu-data", diff --git a/crates/README.md b/crates/README.md new file mode 100644 index 000000000..bf344b79f --- /dev/null +++ b/crates/README.md @@ -0,0 +1,13 @@ +# Nushell core libraries and plugins + +These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality. + +Foundational libraries are split into two kinds of crates: + +* Core crates - those crates that work together to build the Nushell language engine +* Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more. + +Plugins are likewise also split into two types: + +* Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features. +* Extra plugins - these plugins run a wide range of differnt capabilities like working with different file types, charting, viewing binary data, and more. diff --git a/crates/nu-cli/Cargo.toml b/crates/nu-cli/Cargo.toml index 3e8b65924..178a003a9 100644 --- a/crates/nu-cli/Cargo.toml +++ b/crates/nu-cli/Cargo.toml @@ -11,37 +11,37 @@ version = "0.32.1" doctest = false [dependencies] -nu-completion = { version = "0.32.1", path = "../nu-completion" } -nu-command = { version = "0.32.1", path = "../nu-command" } -nu-data = { version = "0.32.1", path = "../nu-data" } -nu-engine = { version = "0.32.1", path = "../nu-engine" } -nu-errors = { version = "0.32.1", path = "../nu-errors" } -nu-json = { version = "0.32.1", path = "../nu-json" } -nu-parser = { version = "0.32.1", path = "../nu-parser" } -nu-plugin = { version = "0.32.1", path = "../nu-plugin" } -nu-protocol = { version = "0.32.1", path = "../nu-protocol" } -nu-source = { version = "0.32.1", path = "../nu-source" } -nu-stream = { version = "0.32.1", path = "../nu-stream" } -nu-table = { version = "0.32.1", path = "../nu-table" } -nu-test-support = { version = "0.32.1", path = "../nu-test-support" } -nu-value-ext = { version = "0.32.1", path = "../nu-value-ext" } -nu-ansi-term = { version = "0.32.1", path = "../nu-ansi-term" } -nu-pretty-hex = { version = "0.32.1", path = "../nu-pretty-hex" } +nu-completion = { version="0.32.1", path="../nu-completion" } +nu-command = { version="0.32.1", path="../nu-command" } +nu-data = { version="0.32.1", path="../nu-data" } +nu-engine = { version="0.32.1", path="../nu-engine" } +nu-errors = { version="0.32.1", path="../nu-errors" } +nu-json = { version="0.32.1", path="../nu-json" } +nu-parser = { version="0.32.1", path="../nu-parser" } +nu-plugin = { version="0.32.1", path="../nu-plugin" } +nu-protocol = { version="0.32.1", path="../nu-protocol" } +nu-source = { version="0.32.1", path="../nu-source" } +nu-stream = { version="0.32.1", path="../nu-stream" } +nu-table = { version="0.32.1", path="../nu-table" } +nu-test-support = { version="0.32.1", path="../nu-test-support" } +nu-value-ext = { version="0.32.1", path="../nu-value-ext" } +nu-ansi-term = { version="0.32.1", path="../nu-ansi-term" } +nu-pretty-hex = { version="0.32.1", path="../nu-pretty-hex" } Inflector = "0.11" -arboard = { version = "1.1.0", optional = true } +arboard = { version="1.1.0", optional=true } async-recursion = "0.3.2" async-trait = "0.1.42" base64 = "0.13.0" -bigdecimal = { version = "0.2.0", features = ["serde"] } +bigdecimal = { version="0.2.0", features=["serde"] } byte-unit = "4.0.9" bytes = "1.0.1" calamine = "0.17.0" -chrono = { version = "0.4.19", features = ["serde"] } +chrono = { version="0.4.19", features=["serde"] } chrono-tz = "0.5.3" codespan-reporting = "0.11.0" csv = "1.1.5" -ctrlc = { version = "3.1.7", optional = true } +ctrlc = { version="3.1.7", optional=true } derive-new = "0.5.8" directories-next = "2.0.0" dirs-next = "2.0.0" @@ -51,25 +51,23 @@ eml-parser = "0.1.0" encoding_rs = "0.8.28" filesize = "0.2.0" fs_extra = "1.2.0" -futures = { version = "0.3.12", features = ["compat", "io-compat"] } +futures = { version="0.3.12", features=["compat", "io-compat"] } futures-util = "0.3.12" futures_codec = "0.4.1" getset = "0.1.1" glob = "0.3.0" htmlescape = "0.3.1" ical = "0.7.0" -indexmap = { version = "1.6.1", features = ["serde-1"] } -itertools = "0.10.0" -lazy_static = "1.*" +indexmap = { version="1.6.1", features=["serde-1"] } log = "0.4.14" pretty_env_logger = "0.4.0" meval = "0.2.0" -num-bigint = { version = "0.3.1", features = ["serde"] } -num-format = { version = "0.4.0", features = ["with-num-bigint"] } +num-bigint = { version="0.3.1", features=["serde"] } +num-format = { version="0.4.0", features=["with-num-bigint"] } num-traits = "0.2.14" parking_lot = "0.11.1" pin-utils = "0.1.0" -ptree = { version = "0.3.1", optional = true } +ptree = { version="0.3.1", optional=true } query_interface = "0.3.5" quick-xml = "0.21.0" rand = "0.8.3" @@ -77,8 +75,8 @@ rayon = "1.5.0" regex = "1.4.3" roxmltree = "0.14.0" rust-embed = "5.9.0" -rustyline = { version = "8.1.0", optional = true } -serde = { version = "1.0.123", features = ["derive"] } +rustyline = { version="8.1.0", optional=true } +serde = { version="1.0.123", features=["derive"] } serde_bytes = "0.11.5" serde_ini = "0.2.0" serde_json = "1.0.61" @@ -90,18 +88,18 @@ strip-ansi-escapes = "0.1.0" sxd-document = "0.3.2" sxd-xpath = "0.4.2" tempfile = "3.2.0" -term = { version = "0.7.0", optional = true } +term = { version="0.7.0", optional=true } term_size = "0.3.2" termcolor = "1.1.2" titlecase = "1.1.0" toml = "0.5.8" -trash = { version = "1.3.0", optional = true } +trash = { version="1.3.0", optional=true } unicode-segmentation = "1.7.1" url = "2.1.1" -uuid_crate = { package = "uuid", version = "0.8.2", features = ["v4"], optional = true } -which = { version = "4.0.2", optional = true } -zip = { version = "0.5.9", optional = true } -shadow-rs = { version = "0.5", default-features = false, optional = true } +uuid_crate = { package="uuid", version="0.8.2", features=["v4"], optional=true } +which = { version="4.0.2", optional=true } +zip = { version="0.5.9", optional=true } +shadow-rs = { version="0.5", default-features=false, optional=true } [target.'cfg(unix)'.dependencies] umask = "1.0.0" diff --git a/crates/nu-cli/README.md b/crates/nu-cli/README.md new file mode 100644 index 000000000..fe015d504 --- /dev/null +++ b/crates/nu-cli/README.md @@ -0,0 +1,4 @@ +* nu-cli + +This crate provides the fundamental needs when creating the Nushell interactive REPL. In it, you'll find features for interacting with the line editor (the piece which writes the prompt and takes input from the user), keybindings, handlers for the commandline arguments passed to the REPL as it starts up, and more. + diff --git a/crates/nu-cli/src/app.rs b/crates/nu-cli/src/app.rs index 7375382e7..fb8b85d77 100644 --- a/crates/nu-cli/src/app.rs +++ b/crates/nu-cli/src/app.rs @@ -5,7 +5,7 @@ mod options_parser; pub use options::{CliOptions, NuScript, Options}; use options_parser::{NuParser, OptionsParser}; -use nu_command::{commands::nu::Nu, utils::test_bins as binaries}; +use nu_command::{commands::NuSignature as Nu, utils::test_bins as binaries}; use nu_engine::{get_full_help, EvaluationContext}; use nu_errors::ShellError; use nu_protocol::hir::{Call, Expression, SpannedExpression, Synthetic}; @@ -58,7 +58,7 @@ impl App { if self.version() { let context = self.parser.context(); - let stream = nu_command::commands::version::version(nu_engine::CommandArgs { + let stream = nu_command::commands::version(nu_engine::CommandArgs { context: context.clone(), call_info: nu_engine::UnevaluatedCallInfo { args: Call::new( diff --git a/crates/nu-cli/src/app/options_parser.rs b/crates/nu-cli/src/app/options_parser.rs index 2697bbebe..54d5cc84d 100644 --- a/crates/nu-cli/src/app/options_parser.rs +++ b/crates/nu-cli/src/app/options_parser.rs @@ -1,6 +1,6 @@ use super::Options; -use nu_command::commands::nu::{self, Nu}; +use nu_command::commands::{loglevels, testbins, NuSignature as Nu}; use nu_command::commands::{Autoview, Pivot, Table, Version as NuVersion}; use nu_engine::{whole_stream_command, EvaluationContext}; use nu_errors::ShellError; @@ -72,7 +72,7 @@ impl OptionsParser for NuParser { .map(|v| match k.as_ref() { "testbin" => { if let Ok(name) = v.as_string() { - if nu::testbins().iter().any(|n| name == *n) { + if testbins().iter().any(|n| name == *n) { Some(v) } else { Some( @@ -90,7 +90,7 @@ impl OptionsParser for NuParser { } "loglevel" => { if let Ok(name) = v.as_string() { - if nu::loglevels().iter().any(|n| name == *n) { + if loglevels().iter().any(|n| name == *n) { Some(v) } else { Some( diff --git a/crates/nu-cli/src/cli.rs b/crates/nu-cli/src/cli.rs index b62250e40..42ac5dc7d 100644 --- a/crates/nu-cli/src/cli.rs +++ b/crates/nu-cli/src/cli.rs @@ -1,5 +1,3 @@ -use super::Nu; - use crate::line_editor::configure_ctrl_c; use nu_ansi_term::Color; use nu_engine::{maybe_print_errors, run_block, script::run_script_standalone, EvaluationContext}; @@ -150,7 +148,7 @@ pub fn cli( if !skip_welcome_message { println!( "Welcome to Nushell {} (type 'help' for more info)", - Nu::version() + nu_command::commands::core_version() ); } diff --git a/crates/nu-cli/src/format.rs b/crates/nu-cli/src/format.rs deleted file mode 100644 index a4e62f534..000000000 --- a/crates/nu-cli/src/format.rs +++ /dev/null @@ -1,6 +0,0 @@ -use crate::prelude::*; -use nu_errors::ShellError; - -pub(crate) trait RenderView { - fn render_view(&self, host: &mut dyn Host) -> Result<(), ShellError>; -} diff --git a/crates/nu-cli/src/lib.rs b/crates/nu-cli/src/lib.rs index e918ef5f4..70690b254 100644 --- a/crates/nu-cli/src/lib.rs +++ b/crates/nu-cli/src/lib.rs @@ -1,8 +1,3 @@ -#![recursion_limit = "2048"] - -#[macro_use] -mod prelude; - #[cfg(test)] extern crate quickcheck; #[cfg(test)] @@ -11,12 +6,11 @@ extern crate quickcheck_macros; mod app; mod cli; -mod format; #[cfg(feature = "rustyline-support")] mod keybinding; mod line_editor; +#[cfg(feature = "rustyline-support")] mod shell; -pub mod types; #[cfg(feature = "rustyline-support")] pub use crate::cli::cli; @@ -25,8 +19,7 @@ pub use crate::app::App; pub use crate::cli::{parse_and_eval, register_plugins, run_script_file}; pub use nu_command::{ - commands::default_context::create_default_context, commands::nu as Nu, - commands::Version as NuVersion, + commands::NuSignature as Nu, commands::Version as NuVersion, create_default_context, }; pub use nu_data::config; pub use nu_data::dict::TaggedListBuilder; diff --git a/crates/nu-cli/src/line_editor.rs b/crates/nu-cli/src/line_editor.rs index 658d8e88d..6cce2cff7 100644 --- a/crates/nu-cli/src/line_editor.rs +++ b/crates/nu-cli/src/line_editor.rs @@ -1,8 +1,9 @@ use nu_engine::EvaluationContext; +use nu_errors::ShellError; use std::error::Error; #[allow(unused_imports)] -use crate::prelude::*; +use std::sync::atomic::Ordering; #[allow(unused_imports)] use nu_engine::script::LineResult; @@ -31,7 +32,7 @@ pub fn convert_rustyline_result_to_string(input: Result) Err(ReadlineError::Interrupted) => LineResult::CtrlC, Err(ReadlineError::Eof) => LineResult::CtrlD, Err(err) => { - outln!("Error: {:?}", err); + eprintln!("Error: {:?}", err); LineResult::Break } } diff --git a/crates/nu-cli/src/prelude.rs b/crates/nu-cli/src/prelude.rs deleted file mode 100644 index db8892cc3..000000000 --- a/crates/nu-cli/src/prelude.rs +++ /dev/null @@ -1,42 +0,0 @@ -#[macro_export] -macro_rules! return_err { - ($expr:expr) => { - match $expr { - Err(_) => return, - Ok(expr) => expr, - }; - }; -} - -#[macro_export] -macro_rules! trace_out_stream { - (target: $target:tt, $desc:tt = $expr:expr) => {{ - if log::log_enabled!(target: $target, log::Level::Trace) { - let objects = $expr.inspect(move |o| { - trace!( - target: $target, - "{} = {}", - $desc, - match o { - Err(err) => format!("{:?}", err), - Ok(value) => value.display(), - } - ); - }); - - nu_stream::OutputStream::new(objects) - } else { - $expr - } - }}; -} - -pub(crate) use nu_engine::Host; -#[allow(unused_imports)] -pub(crate) use nu_errors::ShellError; -#[allow(unused_imports)] -pub(crate) use nu_protocol::outln; -#[allow(unused_imports)] -pub(crate) use nu_value_ext::ValueExt; -#[allow(unused_imports)] -pub(crate) use std::sync::atomic::Ordering; diff --git a/crates/nu-cli/src/shell.rs b/crates/nu-cli/src/shell.rs index 58cc406de..1bdd63300 100644 --- a/crates/nu-cli/src/shell.rs +++ b/crates/nu-cli/src/shell.rs @@ -1,7 +1,212 @@ -#![allow(clippy::module_inception)] +use nu_ansi_term::Color; +use nu_completion::NuCompleter; +use nu_engine::{DefaultPalette, EvaluationContext, Painter}; +use nu_source::{Tag, Tagged}; +use std::borrow::Cow::{self, Owned}; -#[cfg(feature = "rustyline-support")] -pub(crate) mod helper; +pub struct Helper { + completer: NuCompleter, + hinter: Option, + context: EvaluationContext, + pub colored_prompt: String, + validator: NuValidator, +} -#[cfg(feature = "rustyline-support")] -pub(crate) use helper::Helper; +impl Helper { + pub(crate) fn new( + context: EvaluationContext, + hinter: Option, + ) -> Helper { + Helper { + completer: NuCompleter {}, + hinter, + context, + colored_prompt: String::new(), + validator: NuValidator {}, + } + } +} + +struct CompletionContext<'a>(&'a EvaluationContext); + +impl<'a> nu_completion::CompletionContext for CompletionContext<'a> { + fn signature_registry(&self) -> &dyn nu_parser::ParserScope { + &self.0.scope + } +} + +pub struct CompletionSuggestion(nu_completion::Suggestion); + +impl rustyline::completion::Candidate for CompletionSuggestion { + fn display(&self) -> &str { + &self.0.display + } + + fn replacement(&self) -> &str { + &self.0.replacement + } +} + +impl rustyline::completion::Completer for Helper { + type Candidate = CompletionSuggestion; + + fn complete( + &self, + line: &str, + pos: usize, + _ctx: &rustyline::Context<'_>, + ) -> Result<(usize, Vec), rustyline::error::ReadlineError> { + let ctx = CompletionContext(&self.context); + let (position, suggestions) = self.completer.complete(line, pos, &ctx); + let suggestions = suggestions.into_iter().map(CompletionSuggestion).collect(); + Ok((position, suggestions)) + } + + fn update(&self, line: &mut rustyline::line_buffer::LineBuffer, start: usize, elected: &str) { + let end = line.pos(); + line.replace(start..end, elected) + } +} + +impl rustyline::hint::Hinter for Helper { + type Hint = String; + fn hint(&self, line: &str, pos: usize, ctx: &rustyline::Context<'_>) -> Option { + self.hinter.as_ref().and_then(|h| h.hint(line, pos, ctx)) + } +} + +impl rustyline::highlight::Highlighter for Helper { + fn highlight_prompt<'b, 's: 'b, 'p: 'b>( + &'s self, + prompt: &'p str, + default: bool, + ) -> Cow<'b, str> { + use std::borrow::Cow::Borrowed; + + if default { + Borrowed(&self.colored_prompt) + } else { + Borrowed(prompt) + } + } + + fn highlight_hint<'h>(&self, hint: &'h str) -> Cow<'h, str> { + Owned(Color::DarkGray.prefix().to_string() + hint + nu_ansi_term::ansi::RESET) + } + + fn highlight<'l>(&self, line: &'l str, _pos: usize) -> Cow<'l, str> { + let cfg = &self.context.configs().lock(); + if let Some(palette) = &cfg.syntax_config { + Painter::paint_string(line, &self.context.scope, palette) + } else { + Painter::paint_string(line, &self.context.scope, &DefaultPalette {}) + } + } + + fn highlight_char(&self, _line: &str, _pos: usize) -> bool { + true + } +} + +impl rustyline::validate::Validator for Helper { + fn validate( + &self, + ctx: &mut rustyline::validate::ValidationContext, + ) -> rustyline::Result { + self.validator.validate(ctx) + } + + fn validate_while_typing(&self) -> bool { + self.validator.validate_while_typing() + } +} + +struct NuValidator {} + +impl rustyline::validate::Validator for NuValidator { + fn validate( + &self, + ctx: &mut rustyline::validate::ValidationContext, + ) -> rustyline::Result { + let src = ctx.input(); + + let (tokens, err) = nu_parser::lex(src, 0); + if let Some(err) = err { + if let nu_errors::ParseErrorReason::Eof { .. } = err.reason() { + return Ok(rustyline::validate::ValidationResult::Incomplete); + } + } + + let (_, err) = nu_parser::parse_block(tokens); + + if let Some(err) = err { + if let nu_errors::ParseErrorReason::Eof { .. } = err.reason() { + return Ok(rustyline::validate::ValidationResult::Incomplete); + } + } + + Ok(rustyline::validate::ValidationResult::Valid(None)) + } +} + +#[allow(unused)] +fn vec_tag(input: Vec>) -> Option { + let mut iter = input.iter(); + let first = iter.next()?.tag.clone(); + let last = iter.last(); + + Some(match last { + None => first, + Some(last) => first.until(&last.tag), + }) +} + +impl rustyline::Helper for Helper {} + +#[cfg(test)] +mod tests { + use super::*; + use nu_engine::EvaluationContext; + use rustyline::completion::Completer; + use rustyline::line_buffer::LineBuffer; + + #[ignore] + #[test] + fn closing_quote_should_replaced() { + let text = "cd \"folder with spaces\\subdirectory\\\""; + let replacement = "\"folder with spaces\\subdirectory\\subsubdirectory\\\""; + + let mut buffer = LineBuffer::with_capacity(256); + buffer.insert_str(0, text); + buffer.set_pos(text.len() - 1); + + let helper = Helper::new(EvaluationContext::basic(), None); + + helper.update(&mut buffer, "cd ".len(), replacement); + + assert_eq!( + buffer.as_str(), + "cd \"folder with spaces\\subdirectory\\subsubdirectory\\\"" + ); + } + + #[ignore] + #[test] + fn replacement_with_cursor_in_text() { + let text = "cd \"folder with spaces\\subdirectory\\\""; + let replacement = "\"folder with spaces\\subdirectory\\subsubdirectory\\\""; + + let mut buffer = LineBuffer::with_capacity(256); + buffer.insert_str(0, text); + buffer.set_pos(text.len() - 30); + + let helper = Helper::new(EvaluationContext::basic(), None); + + helper.update(&mut buffer, "cd ".len(), replacement); + + assert_eq!( + buffer.as_str(), + "cd \"folder with spaces\\subdirectory\\subsubdirectory\\\"" + ); + } +} diff --git a/crates/nu-cli/src/shell/helper.rs b/crates/nu-cli/src/shell/helper.rs deleted file mode 100644 index 1bdd63300..000000000 --- a/crates/nu-cli/src/shell/helper.rs +++ /dev/null @@ -1,212 +0,0 @@ -use nu_ansi_term::Color; -use nu_completion::NuCompleter; -use nu_engine::{DefaultPalette, EvaluationContext, Painter}; -use nu_source::{Tag, Tagged}; -use std::borrow::Cow::{self, Owned}; - -pub struct Helper { - completer: NuCompleter, - hinter: Option, - context: EvaluationContext, - pub colored_prompt: String, - validator: NuValidator, -} - -impl Helper { - pub(crate) fn new( - context: EvaluationContext, - hinter: Option, - ) -> Helper { - Helper { - completer: NuCompleter {}, - hinter, - context, - colored_prompt: String::new(), - validator: NuValidator {}, - } - } -} - -struct CompletionContext<'a>(&'a EvaluationContext); - -impl<'a> nu_completion::CompletionContext for CompletionContext<'a> { - fn signature_registry(&self) -> &dyn nu_parser::ParserScope { - &self.0.scope - } -} - -pub struct CompletionSuggestion(nu_completion::Suggestion); - -impl rustyline::completion::Candidate for CompletionSuggestion { - fn display(&self) -> &str { - &self.0.display - } - - fn replacement(&self) -> &str { - &self.0.replacement - } -} - -impl rustyline::completion::Completer for Helper { - type Candidate = CompletionSuggestion; - - fn complete( - &self, - line: &str, - pos: usize, - _ctx: &rustyline::Context<'_>, - ) -> Result<(usize, Vec), rustyline::error::ReadlineError> { - let ctx = CompletionContext(&self.context); - let (position, suggestions) = self.completer.complete(line, pos, &ctx); - let suggestions = suggestions.into_iter().map(CompletionSuggestion).collect(); - Ok((position, suggestions)) - } - - fn update(&self, line: &mut rustyline::line_buffer::LineBuffer, start: usize, elected: &str) { - let end = line.pos(); - line.replace(start..end, elected) - } -} - -impl rustyline::hint::Hinter for Helper { - type Hint = String; - fn hint(&self, line: &str, pos: usize, ctx: &rustyline::Context<'_>) -> Option { - self.hinter.as_ref().and_then(|h| h.hint(line, pos, ctx)) - } -} - -impl rustyline::highlight::Highlighter for Helper { - fn highlight_prompt<'b, 's: 'b, 'p: 'b>( - &'s self, - prompt: &'p str, - default: bool, - ) -> Cow<'b, str> { - use std::borrow::Cow::Borrowed; - - if default { - Borrowed(&self.colored_prompt) - } else { - Borrowed(prompt) - } - } - - fn highlight_hint<'h>(&self, hint: &'h str) -> Cow<'h, str> { - Owned(Color::DarkGray.prefix().to_string() + hint + nu_ansi_term::ansi::RESET) - } - - fn highlight<'l>(&self, line: &'l str, _pos: usize) -> Cow<'l, str> { - let cfg = &self.context.configs().lock(); - if let Some(palette) = &cfg.syntax_config { - Painter::paint_string(line, &self.context.scope, palette) - } else { - Painter::paint_string(line, &self.context.scope, &DefaultPalette {}) - } - } - - fn highlight_char(&self, _line: &str, _pos: usize) -> bool { - true - } -} - -impl rustyline::validate::Validator for Helper { - fn validate( - &self, - ctx: &mut rustyline::validate::ValidationContext, - ) -> rustyline::Result { - self.validator.validate(ctx) - } - - fn validate_while_typing(&self) -> bool { - self.validator.validate_while_typing() - } -} - -struct NuValidator {} - -impl rustyline::validate::Validator for NuValidator { - fn validate( - &self, - ctx: &mut rustyline::validate::ValidationContext, - ) -> rustyline::Result { - let src = ctx.input(); - - let (tokens, err) = nu_parser::lex(src, 0); - if let Some(err) = err { - if let nu_errors::ParseErrorReason::Eof { .. } = err.reason() { - return Ok(rustyline::validate::ValidationResult::Incomplete); - } - } - - let (_, err) = nu_parser::parse_block(tokens); - - if let Some(err) = err { - if let nu_errors::ParseErrorReason::Eof { .. } = err.reason() { - return Ok(rustyline::validate::ValidationResult::Incomplete); - } - } - - Ok(rustyline::validate::ValidationResult::Valid(None)) - } -} - -#[allow(unused)] -fn vec_tag(input: Vec>) -> Option { - let mut iter = input.iter(); - let first = iter.next()?.tag.clone(); - let last = iter.last(); - - Some(match last { - None => first, - Some(last) => first.until(&last.tag), - }) -} - -impl rustyline::Helper for Helper {} - -#[cfg(test)] -mod tests { - use super::*; - use nu_engine::EvaluationContext; - use rustyline::completion::Completer; - use rustyline::line_buffer::LineBuffer; - - #[ignore] - #[test] - fn closing_quote_should_replaced() { - let text = "cd \"folder with spaces\\subdirectory\\\""; - let replacement = "\"folder with spaces\\subdirectory\\subsubdirectory\\\""; - - let mut buffer = LineBuffer::with_capacity(256); - buffer.insert_str(0, text); - buffer.set_pos(text.len() - 1); - - let helper = Helper::new(EvaluationContext::basic(), None); - - helper.update(&mut buffer, "cd ".len(), replacement); - - assert_eq!( - buffer.as_str(), - "cd \"folder with spaces\\subdirectory\\subsubdirectory\\\"" - ); - } - - #[ignore] - #[test] - fn replacement_with_cursor_in_text() { - let text = "cd \"folder with spaces\\subdirectory\\\""; - let replacement = "\"folder with spaces\\subdirectory\\subsubdirectory\\\""; - - let mut buffer = LineBuffer::with_capacity(256); - buffer.insert_str(0, text); - buffer.set_pos(text.len() - 30); - - let helper = Helper::new(EvaluationContext::basic(), None); - - helper.update(&mut buffer, "cd ".len(), replacement); - - assert_eq!( - buffer.as_str(), - "cd \"folder with spaces\\subdirectory\\subsubdirectory\\\"" - ); - } -} diff --git a/crates/nu-command/README.md b/crates/nu-command/README.md new file mode 100644 index 000000000..b9f0857cb --- /dev/null +++ b/crates/nu-command/README.md @@ -0,0 +1,7 @@ +# nu-command + +The Nu command crate contains the full set of internal commands, that is, the commands that can be form the set of built-in commands in a Nushell engine. + +The default set of commands that Nushell ships with can be found in the [default context](src/default_context.rs). + +The commands themselves live in the [commands module](src/commands/). diff --git a/crates/nu-command/src/commands/args.rs b/crates/nu-command/src/args.rs similarity index 100% rename from crates/nu-command/src/commands/args.rs rename to crates/nu-command/src/args.rs diff --git a/crates/nu-command/src/commands/classified/dynamic.rs b/crates/nu-command/src/classified/dynamic.rs similarity index 100% rename from crates/nu-command/src/commands/classified/dynamic.rs rename to crates/nu-command/src/classified/dynamic.rs diff --git a/crates/nu-command/src/commands/classified/external.rs b/crates/nu-command/src/classified/external.rs similarity index 100% rename from crates/nu-command/src/commands/classified/external.rs rename to crates/nu-command/src/classified/external.rs diff --git a/crates/nu-command/src/commands/classified/mod.rs b/crates/nu-command/src/classified/mod.rs similarity index 100% rename from crates/nu-command/src/commands/classified/mod.rs rename to crates/nu-command/src/classified/mod.rs diff --git a/crates/nu-command/src/commands.rs b/crates/nu-command/src/commands.rs deleted file mode 100644 index 148eb6403..000000000 --- a/crates/nu-command/src/commands.rs +++ /dev/null @@ -1,390 +0,0 @@ -mod from_delimited_data; -mod to_delimited_data; - -pub(crate) mod alias; -pub(crate) mod all; -pub(crate) mod ansi; -pub(crate) mod any; -pub(crate) mod append; -pub(crate) mod args; -pub mod autoenv; -pub(crate) mod autoenv_trust; -pub(crate) mod autoenv_untrust; -pub(crate) mod autoview; -pub(crate) mod benchmark; -pub(crate) mod build_string; -pub(crate) mod cal; -pub(crate) mod cd; -pub(crate) mod char_; -pub(crate) mod chart; -pub(crate) mod classified; -#[cfg(feature = "clipboard-cli")] -pub(crate) mod clip; -pub(crate) mod compact; -pub(crate) mod config; -pub(crate) mod constants; -pub(crate) mod cp; -#[cfg(feature = "dataframe")] -pub(crate) mod dataframe; -pub(crate) mod date; -pub(crate) mod debug; -pub(crate) mod def; -pub(crate) mod default; -pub mod default_context; -pub(crate) mod describe; -pub(crate) mod do_; -pub(crate) mod drop; -pub(crate) mod du; -pub(crate) mod each; -pub(crate) mod echo; -pub(crate) mod empty; -pub(crate) mod enter; -pub(crate) mod every; -pub(crate) mod exec; -pub(crate) mod exit; -pub(crate) mod first; -pub(crate) mod flatten; -pub(crate) mod for_in; -pub(crate) mod format; -pub(crate) mod from; -pub(crate) mod from_csv; -pub(crate) mod from_eml; -pub(crate) mod from_ics; -pub(crate) mod from_ini; -pub(crate) mod from_json; -pub(crate) mod from_ods; -pub(crate) mod from_ssv; -pub(crate) mod from_toml; -pub(crate) mod from_tsv; -pub(crate) mod from_url; -pub(crate) mod from_vcf; -pub(crate) mod from_xlsx; -pub(crate) mod from_xml; -pub(crate) mod from_yaml; -pub(crate) mod get; -pub(crate) mod group_by; -pub(crate) mod group_by_date; -pub(crate) mod hash_; -pub(crate) mod headers; -pub(crate) mod help; -pub(crate) mod histogram; -pub(crate) mod history; -pub(crate) mod if_; -pub(crate) mod ignore; -pub(crate) mod insert; -pub(crate) mod into; -pub(crate) mod keep; -pub(crate) mod last; -pub(crate) mod length; -pub(crate) mod let_; -pub(crate) mod let_env; -pub(crate) mod lines; -pub(crate) mod load_env; -pub(crate) mod ls; -pub(crate) mod math; -pub(crate) mod merge; -pub(crate) mod mkdir; -pub(crate) mod move_; -pub(crate) mod next; -pub(crate) mod nth; -pub mod nu; -pub(crate) mod open; -pub(crate) mod parse; -pub(crate) mod path; -pub(crate) mod pivot; -pub(crate) mod prepend; -pub(crate) mod prev; -pub(crate) mod pwd; -pub(crate) mod random; -pub(crate) mod range; -pub(crate) mod reduce; -pub(crate) mod reject; -pub(crate) mod rename; -pub(crate) mod reverse; -pub(crate) mod rm; -pub(crate) mod roll; -pub(crate) mod rotate; -pub(crate) mod run_external; -pub(crate) mod save; -pub(crate) mod select; -pub(crate) mod seq; -pub(crate) mod seq_dates; -pub(crate) mod shells; -pub(crate) mod shuffle; -pub(crate) mod size; -pub(crate) mod skip; -pub(crate) mod sleep; -pub(crate) mod sort_by; -pub(crate) mod source; -pub(crate) mod split; -pub(crate) mod split_by; -pub(crate) mod str_; -pub(crate) mod table; -pub(crate) mod tags; -pub(crate) mod termsize; -pub(crate) mod to; -pub(crate) mod to_csv; -pub(crate) mod to_html; -pub(crate) mod to_json; -pub(crate) mod to_md; -pub(crate) mod to_toml; -pub(crate) mod to_tsv; -pub(crate) mod to_url; -pub(crate) mod to_xml; -pub(crate) mod to_yaml; -pub(crate) mod uniq; -pub(crate) mod update; -pub(crate) mod url_; -pub mod version; -pub(crate) mod where_; -pub(crate) mod which_; -pub(crate) mod with_env; -pub(crate) mod wrap; - -pub use autoview::Autoview; -pub(crate) use cd::Cd; - -pub(crate) use alias::Alias; -pub(crate) use ansi::Ansi; -pub(crate) use ansi::AnsiGradient; -pub(crate) use ansi::AnsiStrip; -pub(crate) use append::Command as Append; -pub(crate) use autoenv::Autoenv; -pub(crate) use autoenv_trust::AutoenvTrust; -pub(crate) use autoenv_untrust::AutoenvUnTrust; -pub(crate) use benchmark::Benchmark; -pub(crate) use build_string::BuildString; -pub(crate) use cal::Cal; -pub(crate) use char_::Char; -pub(crate) use chart::Chart; -pub(crate) use compact::Compact; -pub(crate) use config::{ - Config, ConfigClear, ConfigGet, ConfigPath, ConfigRemove, ConfigSet, ConfigSetInto, -}; -pub(crate) use cp::Cpy; -pub(crate) use date::{Date, DateFormat, DateListTimeZone, DateNow, DateToTable, DateToTimeZone}; -pub(crate) use debug::Debug; -pub(crate) use def::Def; -pub(crate) use default::Default; -pub(crate) use describe::Describe; -pub(crate) use do_::Do; -pub(crate) use drop::{Drop, DropColumn}; -pub(crate) use du::Du; -pub(crate) use each::Each; -pub(crate) use each::EachGroup; -pub(crate) use each::EachWindow; -pub(crate) use echo::Echo; -pub(crate) use empty::Command as Empty; -pub(crate) use for_in::ForIn; -pub(crate) use if_::If; -pub(crate) use into::Into; -pub(crate) use into::IntoBinary; -pub(crate) use into::IntoInt; -pub(crate) use into::IntoString; -pub(crate) use nu::NuPlugin; -pub(crate) use update::Command as Update; -pub(crate) mod kill; -pub(crate) use kill::Kill; -pub(crate) mod clear; -pub(crate) use clear::Clear; -pub(crate) mod touch; -pub(crate) use all::Command as All; -pub(crate) use any::Command as Any; -#[cfg(feature = "dataframe")] -pub(crate) use dataframe::{ - DataFrame, DataFrameAggregate, DataFrameColumn, DataFrameDTypes, DataFrameDrop, - DataFrameDropDuplicates, DataFrameDropNulls, DataFrameDummies, DataFrameFilter, DataFrameGet, - DataFrameGroupBy, DataFrameHead, DataFrameJoin, DataFrameList, DataFrameLoad, DataFrameMelt, - DataFramePivot, DataFrameSample, DataFrameSelect, DataFrameSeriesRename, DataFrameShow, - DataFrameSlice, DataFrameSort, DataFrameTail, DataFrameToCsv, DataFrameToDF, - DataFrameToParquet, DataFrameToSeries, DataFrameWhere, DataFrameWithColumn, -}; -pub(crate) use enter::Enter; -pub(crate) use every::Every; -pub(crate) use exec::Exec; -pub(crate) use exit::Exit; -pub(crate) use first::First; -pub(crate) use flatten::Command as Flatten; -pub(crate) use format::{FileSize, Format}; -pub(crate) use from::From; -pub(crate) use from_csv::FromCsv; -pub(crate) use from_eml::FromEml; -pub(crate) use from_ics::FromIcs; -pub(crate) use from_ini::FromIni; -pub(crate) use from_json::FromJson; -pub(crate) use from_ods::FromOds; -pub(crate) use from_ssv::FromSsv; -pub(crate) use from_toml::FromToml; -pub(crate) use from_tsv::FromTsv; -pub(crate) use from_url::FromUrl; -pub(crate) use from_vcf::FromVcf; -pub(crate) use from_xlsx::FromXlsx; -pub(crate) use from_xml::FromXml; -pub(crate) use from_yaml::FromYaml; -pub(crate) use from_yaml::FromYml; -pub(crate) use get::Command as Get; -pub(crate) use group_by::Command as GroupBy; -pub(crate) use group_by_date::GroupByDate; -pub(crate) use hash_::{Hash, HashBase64, HashMd5}; -pub(crate) use headers::Headers; -pub(crate) use help::Help; -pub(crate) use histogram::Histogram; -pub(crate) use history::History; -pub(crate) use ignore::Ignore; -pub(crate) use insert::Command as Insert; -pub(crate) use keep::{Keep, KeepUntil, KeepWhile}; -pub(crate) use last::Last; -pub(crate) use length::Length; -pub(crate) use let_::Let; -pub(crate) use let_env::LetEnv; -pub(crate) use lines::Lines; -pub(crate) use load_env::LoadEnv; -pub(crate) use ls::Ls; -pub(crate) use math::{ - Math, MathAbs, MathAverage, MathCeil, MathEval, MathFloor, MathMaximum, MathMedian, - MathMinimum, MathMode, MathProduct, MathRound, MathSqrt, MathStddev, MathSummation, - MathVariance, -}; -pub(crate) use merge::Merge; -pub(crate) use mkdir::Mkdir; -pub(crate) use move_::{Move, Mv}; -pub(crate) use next::Next; -pub(crate) use nth::Nth; -pub(crate) use open::Open; -pub(crate) use parse::Parse; -pub(crate) use path::{ - PathBasename, PathCommand, PathDirname, PathExists, PathExpand, PathJoin, PathParse, - PathRelativeTo, PathSplit, PathType, -}; -pub use pivot::Pivot; -pub(crate) use prepend::Prepend; -pub(crate) use prev::Previous; -pub(crate) use pwd::Pwd; -#[cfg(feature = "uuid_crate")] -pub(crate) use random::RandomUUID; -pub(crate) use random::{ - Random, RandomBool, RandomChars, RandomDecimal, RandomDice, RandomInteger, -}; -pub(crate) use range::Range; -pub(crate) use reduce::Reduce; -pub(crate) use reject::Reject; -pub(crate) use rename::Rename; -pub(crate) use reverse::Reverse; -pub(crate) use rm::Remove; -pub(crate) use roll::{Roll, RollColumn, RollUp}; -pub(crate) use rotate::{Rotate, RotateCounterClockwise}; -pub(crate) use run_external::RunExternalCommand; -pub(crate) use save::Save; -pub(crate) use select::Command as Select; -pub(crate) use seq::Seq; -pub(crate) use seq_dates::SeqDates; -pub(crate) use shells::Shells; -pub(crate) use shuffle::Shuffle; -pub(crate) use size::Size; -pub(crate) use skip::{Skip, SkipUntil, SkipWhile}; -pub(crate) use sleep::Sleep; -pub(crate) use sort_by::SortBy; -pub(crate) use source::Source; -pub(crate) use split::{Split, SplitChars, SplitColumn, SplitRow}; -pub(crate) use split_by::SplitBy; -pub(crate) use str_::{ - Str, StrCamelCase, StrCapitalize, StrCollect, StrContains, StrDowncase, StrEndsWith, - StrFindReplace, StrIndexOf, StrKebabCase, StrLPad, StrLength, StrPascalCase, StrRPad, - StrReverse, StrScreamingSnakeCase, StrSnakeCase, StrStartsWith, StrSubstring, StrToDatetime, - StrToDecimal, StrToInteger, StrTrim, StrTrimLeft, StrTrimRight, StrUpcase, -}; -pub use table::Table; -pub(crate) use tags::Tags; -pub(crate) use termsize::TermSize; -pub(crate) use to::To; -pub(crate) use to_csv::ToCsv; -pub(crate) use to_html::ToHtml; -pub(crate) use to_json::ToJson; -pub(crate) use to_md::Command as ToMarkdown; -pub(crate) use to_toml::ToToml; -pub(crate) use to_tsv::ToTsv; -pub(crate) use to_url::ToUrl; -pub(crate) use to_xml::ToXml; -pub(crate) use to_yaml::ToYaml; -pub(crate) use touch::Touch; -pub(crate) use uniq::Uniq; -pub(crate) use url_::{UrlCommand, UrlHost, UrlPath, UrlQuery, UrlScheme}; -pub use version::Version; -pub(crate) use where_::Command as Where; -pub(crate) use which_::Which; -pub(crate) use with_env::WithEnv; -pub(crate) use wrap::Wrap; - -#[cfg(test)] -mod tests { - use super::*; - use crate::examples::{test_anchors, test_examples}; - use nu_engine::{whole_stream_command, Command}; - use nu_errors::ShellError; - - fn full_tests() -> Vec { - vec![ - whole_stream_command(Append), - whole_stream_command(GroupBy), - whole_stream_command(Insert), - whole_stream_command(Move), - whole_stream_command(Update), - whole_stream_command(Empty), - // whole_stream_command(Select), - // whole_stream_command(Get), - // Str Command Suite - whole_stream_command(Str), - whole_stream_command(StrToDecimal), - whole_stream_command(StrToInteger), - whole_stream_command(StrDowncase), - whole_stream_command(StrUpcase), - whole_stream_command(StrCapitalize), - whole_stream_command(StrFindReplace), - whole_stream_command(StrSubstring), - whole_stream_command(StrToDatetime), - whole_stream_command(StrContains), - whole_stream_command(StrIndexOf), - whole_stream_command(StrTrim), - whole_stream_command(StrTrimLeft), - whole_stream_command(StrTrimRight), - whole_stream_command(StrStartsWith), - whole_stream_command(StrEndsWith), - //whole_stream_command(StrCollect), - whole_stream_command(StrLength), - whole_stream_command(StrLPad), - whole_stream_command(StrReverse), - whole_stream_command(StrRPad), - whole_stream_command(StrCamelCase), - whole_stream_command(StrPascalCase), - whole_stream_command(StrKebabCase), - whole_stream_command(StrSnakeCase), - whole_stream_command(StrScreamingSnakeCase), - whole_stream_command(ToMarkdown), - ] - } - - fn only_examples() -> Vec { - let mut commands = full_tests(); - commands.extend(vec![whole_stream_command(Flatten)]); - commands - } - - #[test] - fn examples_work_as_expected() -> Result<(), ShellError> { - for cmd in only_examples() { - println!("cmd: {}", cmd.name()); - test_examples(cmd)?; - } - - Ok(()) - } - - #[test] - fn tracks_metadata() -> Result<(), ShellError> { - for cmd in full_tests() { - test_anchors(cmd)?; - } - - Ok(()) - } -} diff --git a/crates/nu-command/src/commands/chart.rs b/crates/nu-command/src/commands/charting/chart.rs similarity index 100% rename from crates/nu-command/src/commands/chart.rs rename to crates/nu-command/src/commands/charting/chart.rs diff --git a/crates/nu-command/src/commands/histogram.rs b/crates/nu-command/src/commands/charting/histogram.rs similarity index 96% rename from crates/nu-command/src/commands/histogram.rs rename to crates/nu-command/src/commands/charting/histogram.rs index 9c6eacc16..accd2a812 100644 --- a/crates/nu-command/src/commands/histogram.rs +++ b/crates/nu-command/src/commands/charting/histogram.rs @@ -149,8 +149,13 @@ pub fn histogram(args: CommandArgs) -> Result { "{}%", // Some(2) < the number of digits // true < group the digits - crate::commands::into::string::action(&percentage, &name, Some(2), true)? - .as_string()? + crate::commands::conversions::into::string::action( + &percentage, + &name, + Some(2), + true + )? + .as_string()? ); fact.insert_untagged("percentage", UntaggedValue::string(fmt_percentage)); diff --git a/crates/nu-command/src/commands/charting/mod.rs b/crates/nu-command/src/commands/charting/mod.rs new file mode 100644 index 000000000..a69047517 --- /dev/null +++ b/crates/nu-command/src/commands/charting/mod.rs @@ -0,0 +1,5 @@ +mod chart; +mod histogram; + +pub use chart::Chart; +pub use histogram::Histogram; diff --git a/crates/nu-command/src/commands/config/get.rs b/crates/nu-command/src/commands/config/get.rs index 023233ed8..fac8e110e 100644 --- a/crates/nu-command/src/commands/config/get.rs +++ b/crates/nu-command/src/commands/config/get.rs @@ -43,7 +43,7 @@ pub fn get(args: CommandArgs) -> Result { let result = if let Some(global_cfg) = &ctx.configs().lock().global_config { let result = UntaggedValue::row(global_cfg.vars.clone()).into_value(&name); - let value = crate::commands::get::get_column_path(&column_path, &result)?; + let value = crate::commands::filters::get::get_column_path(&column_path, &result)?; Ok(match value { Value { value: UntaggedValue::Table(list), diff --git a/crates/nu-command/src/commands/into/binary.rs b/crates/nu-command/src/commands/conversions/into/binary.rs similarity index 100% rename from crates/nu-command/src/commands/into/binary.rs rename to crates/nu-command/src/commands/conversions/into/binary.rs diff --git a/crates/nu-command/src/commands/into/command.rs b/crates/nu-command/src/commands/conversions/into/command.rs similarity index 100% rename from crates/nu-command/src/commands/into/command.rs rename to crates/nu-command/src/commands/conversions/into/command.rs diff --git a/crates/nu-command/src/commands/into/int.rs b/crates/nu-command/src/commands/conversions/into/int.rs similarity index 100% rename from crates/nu-command/src/commands/into/int.rs rename to crates/nu-command/src/commands/conversions/into/int.rs diff --git a/crates/nu-command/src/commands/into/mod.rs b/crates/nu-command/src/commands/conversions/into/mod.rs similarity index 100% rename from crates/nu-command/src/commands/into/mod.rs rename to crates/nu-command/src/commands/conversions/into/mod.rs diff --git a/crates/nu-command/src/commands/into/string.rs b/crates/nu-command/src/commands/conversions/into/string.rs similarity index 100% rename from crates/nu-command/src/commands/into/string.rs rename to crates/nu-command/src/commands/conversions/into/string.rs diff --git a/crates/nu-command/src/commands/conversions/mod.rs b/crates/nu-command/src/commands/conversions/mod.rs new file mode 100644 index 000000000..70608f782 --- /dev/null +++ b/crates/nu-command/src/commands/conversions/mod.rs @@ -0,0 +1,3 @@ +pub(crate) mod into; + +pub use into::*; diff --git a/crates/nu-command/src/commands/alias.rs b/crates/nu-command/src/commands/core_commands/alias.rs similarity index 100% rename from crates/nu-command/src/commands/alias.rs rename to crates/nu-command/src/commands/core_commands/alias.rs diff --git a/crates/nu-command/src/commands/debug.rs b/crates/nu-command/src/commands/core_commands/debug.rs similarity index 100% rename from crates/nu-command/src/commands/debug.rs rename to crates/nu-command/src/commands/core_commands/debug.rs diff --git a/crates/nu-command/src/commands/def.rs b/crates/nu-command/src/commands/core_commands/def.rs similarity index 100% rename from crates/nu-command/src/commands/def.rs rename to crates/nu-command/src/commands/core_commands/def.rs diff --git a/crates/nu-command/src/commands/describe.rs b/crates/nu-command/src/commands/core_commands/describe.rs similarity index 100% rename from crates/nu-command/src/commands/describe.rs rename to crates/nu-command/src/commands/core_commands/describe.rs diff --git a/crates/nu-command/src/commands/do_.rs b/crates/nu-command/src/commands/core_commands/do_.rs similarity index 100% rename from crates/nu-command/src/commands/do_.rs rename to crates/nu-command/src/commands/core_commands/do_.rs diff --git a/crates/nu-command/src/commands/echo.rs b/crates/nu-command/src/commands/core_commands/echo.rs similarity index 100% rename from crates/nu-command/src/commands/echo.rs rename to crates/nu-command/src/commands/core_commands/echo.rs diff --git a/crates/nu-command/src/commands/help.rs b/crates/nu-command/src/commands/core_commands/help.rs similarity index 100% rename from crates/nu-command/src/commands/help.rs rename to crates/nu-command/src/commands/core_commands/help.rs diff --git a/crates/nu-command/src/commands/history.rs b/crates/nu-command/src/commands/core_commands/history.rs similarity index 100% rename from crates/nu-command/src/commands/history.rs rename to crates/nu-command/src/commands/core_commands/history.rs diff --git a/crates/nu-command/src/commands/if_.rs b/crates/nu-command/src/commands/core_commands/if_.rs similarity index 100% rename from crates/nu-command/src/commands/if_.rs rename to crates/nu-command/src/commands/core_commands/if_.rs diff --git a/crates/nu-command/src/commands/ignore.rs b/crates/nu-command/src/commands/core_commands/ignore.rs similarity index 100% rename from crates/nu-command/src/commands/ignore.rs rename to crates/nu-command/src/commands/core_commands/ignore.rs diff --git a/crates/nu-command/src/commands/let_.rs b/crates/nu-command/src/commands/core_commands/let_.rs similarity index 100% rename from crates/nu-command/src/commands/let_.rs rename to crates/nu-command/src/commands/core_commands/let_.rs diff --git a/crates/nu-command/src/commands/core_commands/mod.rs b/crates/nu-command/src/commands/core_commands/mod.rs new file mode 100644 index 000000000..75602d9d3 --- /dev/null +++ b/crates/nu-command/src/commands/core_commands/mod.rs @@ -0,0 +1,35 @@ +mod alias; +mod debug; +mod def; +mod describe; +mod do_; +pub(crate) mod echo; +mod help; +mod history; +mod if_; +mod ignore; +mod let_; +mod nu_plugin; +mod nu_signature; +mod source; +mod tags; +mod version; + +pub use self::nu_plugin::SubCommand as NuPlugin; +pub use self::nu_signature::{ + loglevels, testbins, version as core_version, Command as NuSignature, +}; +pub use alias::Alias; +pub use debug::Debug; +pub use def::Def; +pub use describe::Describe; +pub use do_::Do; +pub use echo::Echo; +pub use help::Help; +pub use history::History; +pub use if_::If; +pub use ignore::Ignore; +pub use let_::Let; +pub use source::Source; +pub use tags::Tags; +pub use version::{version, Version}; diff --git a/crates/nu-command/src/commands/nu/plugin.rs b/crates/nu-command/src/commands/core_commands/nu_plugin.rs similarity index 100% rename from crates/nu-command/src/commands/nu/plugin.rs rename to crates/nu-command/src/commands/core_commands/nu_plugin.rs diff --git a/crates/nu-command/src/commands/nu/command.rs b/crates/nu-command/src/commands/core_commands/nu_signature.rs similarity index 78% rename from crates/nu-command/src/commands/nu/command.rs rename to crates/nu-command/src/commands/core_commands/nu_signature.rs index 6acbf84bc..020070fdb 100644 --- a/crates/nu-command/src/commands/nu/command.rs +++ b/crates/nu-command/src/commands/core_commands/nu_signature.rs @@ -47,3 +47,23 @@ impl WholeStreamCommand for Command { "Nu - A new type of shell." } } + +pub fn version() -> &'static str { + env!("CARGO_PKG_VERSION") +} + +pub fn testbins() -> Vec { + vec![ + "echo_env", "cococo", "iecho", "fail", "nonu", "chop", "repeater", "meow", + ] + .into_iter() + .map(String::from) + .collect() +} + +pub fn loglevels() -> Vec { + vec!["error", "warn", "info", "debug", "trace"] + .into_iter() + .map(String::from) + .collect() +} diff --git a/crates/nu-command/src/commands/source.rs b/crates/nu-command/src/commands/core_commands/source.rs similarity index 100% rename from crates/nu-command/src/commands/source.rs rename to crates/nu-command/src/commands/core_commands/source.rs diff --git a/crates/nu-command/src/commands/tags.rs b/crates/nu-command/src/commands/core_commands/tags.rs similarity index 100% rename from crates/nu-command/src/commands/tags.rs rename to crates/nu-command/src/commands/core_commands/tags.rs diff --git a/crates/nu-command/src/commands/version.rs b/crates/nu-command/src/commands/core_commands/version.rs similarity index 98% rename from crates/nu-command/src/commands/version.rs rename to crates/nu-command/src/commands/core_commands/version.rs index 54bc380ee..01cd3f880 100644 --- a/crates/nu-command/src/commands/version.rs +++ b/crates/nu-command/src/commands/core_commands/version.rs @@ -43,7 +43,7 @@ pub fn version(args: CommandArgs) -> Result { indexmap.insert( "version".to_string(), - UntaggedValue::string(super::nu::version()).into_value(&tag), + UntaggedValue::string(super::nu_signature::version()).into_value(&tag), ); let branch: Option<&str> = Some(shadow::BRANCH).filter(|x| !x.is_empty()); diff --git a/crates/nu-command/src/commands/autoenv.rs b/crates/nu-command/src/commands/env/autoenv.rs similarity index 100% rename from crates/nu-command/src/commands/autoenv.rs rename to crates/nu-command/src/commands/env/autoenv.rs diff --git a/crates/nu-command/src/commands/autoenv_trust.rs b/crates/nu-command/src/commands/env/autoenv_trust.rs similarity index 100% rename from crates/nu-command/src/commands/autoenv_trust.rs rename to crates/nu-command/src/commands/env/autoenv_trust.rs diff --git a/crates/nu-command/src/commands/autoenv_untrust.rs b/crates/nu-command/src/commands/env/autoenv_untrust.rs similarity index 97% rename from crates/nu-command/src/commands/autoenv_untrust.rs rename to crates/nu-command/src/commands/env/autoenv_untrust.rs index 5c36206bc..385ea85ca 100644 --- a/crates/nu-command/src/commands/autoenv_untrust.rs +++ b/crates/nu-command/src/commands/env/autoenv_untrust.rs @@ -6,9 +6,9 @@ use nu_protocol::SyntaxShape; use nu_protocol::{Primitive, ReturnSuccess, Signature, UntaggedValue, Value}; use std::io::Read; use std::{fs, path::PathBuf}; -pub struct AutoenvUnTrust; +pub struct AutoenvUntrust; -impl WholeStreamCommand for AutoenvUnTrust { +impl WholeStreamCommand for AutoenvUntrust { fn name(&self) -> &str { "autoenv untrust" } diff --git a/crates/nu-command/src/commands/let_env.rs b/crates/nu-command/src/commands/env/let_env.rs similarity index 100% rename from crates/nu-command/src/commands/let_env.rs rename to crates/nu-command/src/commands/env/let_env.rs diff --git a/crates/nu-command/src/commands/load_env.rs b/crates/nu-command/src/commands/env/load_env.rs similarity index 100% rename from crates/nu-command/src/commands/load_env.rs rename to crates/nu-command/src/commands/env/load_env.rs diff --git a/crates/nu-command/src/commands/env/mod.rs b/crates/nu-command/src/commands/env/mod.rs new file mode 100644 index 000000000..33f99fd59 --- /dev/null +++ b/crates/nu-command/src/commands/env/mod.rs @@ -0,0 +1,13 @@ +mod autoenv; +mod autoenv_trust; +mod autoenv_untrust; +mod let_env; +mod load_env; +mod with_env; + +pub use autoenv::Autoenv; +pub use autoenv_trust::AutoenvTrust; +pub use autoenv_untrust::AutoenvUntrust; +pub use let_env::LetEnv; +pub use load_env::LoadEnv; +pub use with_env::WithEnv; diff --git a/crates/nu-command/src/commands/with_env.rs b/crates/nu-command/src/commands/env/with_env.rs similarity index 100% rename from crates/nu-command/src/commands/with_env.rs rename to crates/nu-command/src/commands/env/with_env.rs diff --git a/crates/nu-command/src/commands/cd.rs b/crates/nu-command/src/commands/filesystem/cd.rs similarity index 100% rename from crates/nu-command/src/commands/cd.rs rename to crates/nu-command/src/commands/filesystem/cd.rs diff --git a/crates/nu-command/src/commands/cp.rs b/crates/nu-command/src/commands/filesystem/cp.rs similarity index 100% rename from crates/nu-command/src/commands/cp.rs rename to crates/nu-command/src/commands/filesystem/cp.rs diff --git a/crates/nu-command/src/commands/ls.rs b/crates/nu-command/src/commands/filesystem/ls.rs similarity index 100% rename from crates/nu-command/src/commands/ls.rs rename to crates/nu-command/src/commands/filesystem/ls.rs diff --git a/crates/nu-command/src/commands/mkdir.rs b/crates/nu-command/src/commands/filesystem/mkdir.rs similarity index 100% rename from crates/nu-command/src/commands/mkdir.rs rename to crates/nu-command/src/commands/filesystem/mkdir.rs diff --git a/crates/nu-command/src/commands/filesystem/mod.rs b/crates/nu-command/src/commands/filesystem/mod.rs new file mode 100644 index 000000000..f8eb69d6f --- /dev/null +++ b/crates/nu-command/src/commands/filesystem/mod.rs @@ -0,0 +1,19 @@ +mod cd; +mod cp; +mod ls; +mod mkdir; +mod mv; +pub(crate) mod open; +mod rm; +mod save; +mod touch; + +pub use cd::Cd; +pub use cp::Cpy; +pub use ls::Ls; +pub use mkdir::Mkdir; +pub use mv::Mv; +pub use open::Open; +pub use rm::Remove; +pub use save::Save; +pub use touch::Touch; diff --git a/crates/nu-command/src/commands/move_/mv.rs b/crates/nu-command/src/commands/filesystem/mv.rs similarity index 100% rename from crates/nu-command/src/commands/move_/mv.rs rename to crates/nu-command/src/commands/filesystem/mv.rs diff --git a/crates/nu-command/src/commands/open.rs b/crates/nu-command/src/commands/filesystem/open.rs similarity index 99% rename from crates/nu-command/src/commands/open.rs rename to crates/nu-command/src/commands/filesystem/open.rs index ac1d7edb8..797c670c5 100644 --- a/crates/nu-command/src/commands/open.rs +++ b/crates/nu-command/src/commands/filesystem/open.rs @@ -1,4 +1,4 @@ -use crate::commands::constants::BAT_LANGUAGES; +use crate::commands::viewers::BAT_LANGUAGES; use crate::prelude::*; use encoding_rs::{Encoding, UTF_8}; diff --git a/crates/nu-command/src/commands/rm.rs b/crates/nu-command/src/commands/filesystem/rm.rs similarity index 100% rename from crates/nu-command/src/commands/rm.rs rename to crates/nu-command/src/commands/filesystem/rm.rs diff --git a/crates/nu-command/src/commands/save.rs b/crates/nu-command/src/commands/filesystem/save.rs similarity index 100% rename from crates/nu-command/src/commands/save.rs rename to crates/nu-command/src/commands/filesystem/save.rs diff --git a/crates/nu-command/src/commands/touch.rs b/crates/nu-command/src/commands/filesystem/touch.rs similarity index 100% rename from crates/nu-command/src/commands/touch.rs rename to crates/nu-command/src/commands/filesystem/touch.rs diff --git a/crates/nu-command/src/commands/all.rs b/crates/nu-command/src/commands/filters/all.rs similarity index 100% rename from crates/nu-command/src/commands/all.rs rename to crates/nu-command/src/commands/filters/all.rs diff --git a/crates/nu-command/src/commands/any.rs b/crates/nu-command/src/commands/filters/any.rs similarity index 100% rename from crates/nu-command/src/commands/any.rs rename to crates/nu-command/src/commands/filters/any.rs diff --git a/crates/nu-command/src/commands/append.rs b/crates/nu-command/src/commands/filters/append.rs similarity index 100% rename from crates/nu-command/src/commands/append.rs rename to crates/nu-command/src/commands/filters/append.rs diff --git a/crates/nu-command/src/commands/compact.rs b/crates/nu-command/src/commands/filters/compact.rs similarity index 100% rename from crates/nu-command/src/commands/compact.rs rename to crates/nu-command/src/commands/filters/compact.rs diff --git a/crates/nu-command/src/commands/default.rs b/crates/nu-command/src/commands/filters/default.rs similarity index 100% rename from crates/nu-command/src/commands/default.rs rename to crates/nu-command/src/commands/filters/default.rs diff --git a/crates/nu-command/src/commands/drop/column.rs b/crates/nu-command/src/commands/filters/drop/column.rs similarity index 100% rename from crates/nu-command/src/commands/drop/column.rs rename to crates/nu-command/src/commands/filters/drop/column.rs diff --git a/crates/nu-command/src/commands/drop/command.rs b/crates/nu-command/src/commands/filters/drop/command.rs similarity index 100% rename from crates/nu-command/src/commands/drop/command.rs rename to crates/nu-command/src/commands/filters/drop/command.rs diff --git a/crates/nu-command/src/commands/drop/mod.rs b/crates/nu-command/src/commands/filters/drop/mod.rs similarity index 100% rename from crates/nu-command/src/commands/drop/mod.rs rename to crates/nu-command/src/commands/filters/drop/mod.rs diff --git a/crates/nu-command/src/commands/each/command.rs b/crates/nu-command/src/commands/filters/each/command.rs similarity index 100% rename from crates/nu-command/src/commands/each/command.rs rename to crates/nu-command/src/commands/filters/each/command.rs diff --git a/crates/nu-command/src/commands/each/group.rs b/crates/nu-command/src/commands/filters/each/group.rs similarity index 98% rename from crates/nu-command/src/commands/each/group.rs rename to crates/nu-command/src/commands/filters/each/group.rs index 920e54e23..ebf5a4b01 100644 --- a/crates/nu-command/src/commands/each/group.rs +++ b/crates/nu-command/src/commands/filters/each/group.rs @@ -1,4 +1,4 @@ -use crate::commands::each::process_row; +use crate::commands::filters::each::process_row; use crate::prelude::*; use nu_engine::WholeStreamCommand; use nu_errors::ShellError; diff --git a/crates/nu-command/src/commands/each/mod.rs b/crates/nu-command/src/commands/filters/each/mod.rs similarity index 100% rename from crates/nu-command/src/commands/each/mod.rs rename to crates/nu-command/src/commands/filters/each/mod.rs diff --git a/crates/nu-command/src/commands/each/window.rs b/crates/nu-command/src/commands/filters/each/window.rs similarity index 98% rename from crates/nu-command/src/commands/each/window.rs rename to crates/nu-command/src/commands/filters/each/window.rs index 7433990f0..6c13983a1 100644 --- a/crates/nu-command/src/commands/each/window.rs +++ b/crates/nu-command/src/commands/filters/each/window.rs @@ -1,4 +1,4 @@ -use crate::commands::each::group::run_block_on_vec; +use crate::commands::filters::each::group::run_block_on_vec; use crate::prelude::*; use nu_engine::WholeStreamCommand; //use itertools::Itertools; diff --git a/crates/nu-command/src/commands/empty.rs b/crates/nu-command/src/commands/filters/empty.rs similarity index 100% rename from crates/nu-command/src/commands/empty.rs rename to crates/nu-command/src/commands/filters/empty.rs diff --git a/crates/nu-command/src/commands/every.rs b/crates/nu-command/src/commands/filters/every.rs similarity index 100% rename from crates/nu-command/src/commands/every.rs rename to crates/nu-command/src/commands/filters/every.rs diff --git a/crates/nu-command/src/commands/first.rs b/crates/nu-command/src/commands/filters/first.rs similarity index 100% rename from crates/nu-command/src/commands/first.rs rename to crates/nu-command/src/commands/filters/first.rs diff --git a/crates/nu-command/src/commands/flatten.rs b/crates/nu-command/src/commands/filters/flatten.rs similarity index 100% rename from crates/nu-command/src/commands/flatten.rs rename to crates/nu-command/src/commands/filters/flatten.rs diff --git a/crates/nu-command/src/commands/get.rs b/crates/nu-command/src/commands/filters/get.rs similarity index 100% rename from crates/nu-command/src/commands/get.rs rename to crates/nu-command/src/commands/filters/get.rs diff --git a/crates/nu-command/src/commands/group_by.rs b/crates/nu-command/src/commands/filters/group_by.rs similarity index 99% rename from crates/nu-command/src/commands/group_by.rs rename to crates/nu-command/src/commands/filters/group_by.rs index 7829fe2ea..81cdff8ef 100644 --- a/crates/nu-command/src/commands/group_by.rs +++ b/crates/nu-command/src/commands/filters/group_by.rs @@ -144,7 +144,7 @@ pub fn group_by(args: CommandArgs) -> Result { let run = block.clone(); let context = context.clone(); - match crate::commands::each::process_row( + match crate::commands::filters::each::process_row( run, context, value.clone(), diff --git a/crates/nu-command/src/commands/group_by_date.rs b/crates/nu-command/src/commands/filters/group_by_date.rs similarity index 100% rename from crates/nu-command/src/commands/group_by_date.rs rename to crates/nu-command/src/commands/filters/group_by_date.rs diff --git a/crates/nu-command/src/commands/headers.rs b/crates/nu-command/src/commands/filters/headers.rs similarity index 100% rename from crates/nu-command/src/commands/headers.rs rename to crates/nu-command/src/commands/filters/headers.rs diff --git a/crates/nu-command/src/commands/insert.rs b/crates/nu-command/src/commands/filters/insert.rs similarity index 100% rename from crates/nu-command/src/commands/insert.rs rename to crates/nu-command/src/commands/filters/insert.rs diff --git a/crates/nu-command/src/commands/keep/command.rs b/crates/nu-command/src/commands/filters/keep/command.rs similarity index 100% rename from crates/nu-command/src/commands/keep/command.rs rename to crates/nu-command/src/commands/filters/keep/command.rs diff --git a/crates/nu-command/src/commands/keep/mod.rs b/crates/nu-command/src/commands/filters/keep/mod.rs similarity index 100% rename from crates/nu-command/src/commands/keep/mod.rs rename to crates/nu-command/src/commands/filters/keep/mod.rs diff --git a/crates/nu-command/src/commands/keep/until.rs b/crates/nu-command/src/commands/filters/keep/until.rs similarity index 100% rename from crates/nu-command/src/commands/keep/until.rs rename to crates/nu-command/src/commands/filters/keep/until.rs diff --git a/crates/nu-command/src/commands/keep/while_.rs b/crates/nu-command/src/commands/filters/keep/while_.rs similarity index 100% rename from crates/nu-command/src/commands/keep/while_.rs rename to crates/nu-command/src/commands/filters/keep/while_.rs diff --git a/crates/nu-command/src/commands/last.rs b/crates/nu-command/src/commands/filters/last.rs similarity index 100% rename from crates/nu-command/src/commands/last.rs rename to crates/nu-command/src/commands/filters/last.rs diff --git a/crates/nu-command/src/commands/length.rs b/crates/nu-command/src/commands/filters/length.rs similarity index 100% rename from crates/nu-command/src/commands/length.rs rename to crates/nu-command/src/commands/filters/length.rs diff --git a/crates/nu-command/src/commands/merge.rs b/crates/nu-command/src/commands/filters/merge.rs similarity index 100% rename from crates/nu-command/src/commands/merge.rs rename to crates/nu-command/src/commands/filters/merge.rs diff --git a/crates/nu-command/src/commands/filters/mod.rs b/crates/nu-command/src/commands/filters/mod.rs new file mode 100644 index 000000000..c1c765ef9 --- /dev/null +++ b/crates/nu-command/src/commands/filters/mod.rs @@ -0,0 +1,79 @@ +mod all; +mod any; +mod append; +mod compact; +mod default; +mod drop; +mod each; +mod empty; +mod every; +mod first; +mod flatten; +pub(crate) mod get; +mod group_by; +mod group_by_date; +mod headers; +mod insert; +mod keep; +mod last; +mod length; +mod merge; +mod move_; +mod nth; +mod pivot; +mod prepend; +mod range; +mod reduce; +mod reject; +mod rename; +mod reverse; +mod roll; +mod rotate; +mod select; +mod shuffle; +mod skip; +pub(crate) mod sort_by; +mod uniq; +mod update; +mod where_; +mod wrap; + +pub use all::Command as All; +pub use any::Command as Any; +pub use append::Command as Append; +pub use compact::Compact; +pub use default::Default; +pub use drop::*; +pub use each::*; +pub use empty::Command as Empty; +pub use every::Every; +pub use first::First; +pub use flatten::Command as Flatten; +pub use get::Command as Get; +pub use group_by::Command as GroupBy; +pub use group_by_date::GroupByDate; +pub use headers::Headers; +pub use insert::Command as Insert; +pub use keep::*; +pub use last::Last; +pub use length::Length; +pub use merge::Merge; +pub use move_::Command as MoveColumn; +pub use nth::Nth; +pub use pivot::Pivot; +pub use prepend::Prepend; +pub use range::Range; +pub use reduce::Reduce; +pub use reject::Reject; +pub use rename::Rename; +pub use reverse::Reverse; +pub use roll::{Roll, RollColumn, RollUp}; +pub use rotate::{Rotate, RotateCounterClockwise}; +pub use select::Command as Select; +pub use shuffle::Shuffle; +pub use skip::{Skip, SkipUntil, SkipWhile}; +pub use sort_by::SortBy; +pub use uniq::Uniq; +pub use update::Command as Update; +pub use where_::Command as Where; +pub use wrap::Wrap; diff --git a/crates/nu-command/src/commands/move_/command.rs b/crates/nu-command/src/commands/filters/move_.rs similarity index 100% rename from crates/nu-command/src/commands/move_/command.rs rename to crates/nu-command/src/commands/filters/move_.rs diff --git a/crates/nu-command/src/commands/nth.rs b/crates/nu-command/src/commands/filters/nth.rs similarity index 100% rename from crates/nu-command/src/commands/nth.rs rename to crates/nu-command/src/commands/filters/nth.rs diff --git a/crates/nu-command/src/commands/pivot.rs b/crates/nu-command/src/commands/filters/pivot.rs similarity index 100% rename from crates/nu-command/src/commands/pivot.rs rename to crates/nu-command/src/commands/filters/pivot.rs diff --git a/crates/nu-command/src/commands/prepend.rs b/crates/nu-command/src/commands/filters/prepend.rs similarity index 100% rename from crates/nu-command/src/commands/prepend.rs rename to crates/nu-command/src/commands/filters/prepend.rs diff --git a/crates/nu-command/src/commands/range.rs b/crates/nu-command/src/commands/filters/range.rs similarity index 100% rename from crates/nu-command/src/commands/range.rs rename to crates/nu-command/src/commands/filters/range.rs diff --git a/crates/nu-command/src/commands/reduce.rs b/crates/nu-command/src/commands/filters/reduce.rs similarity index 99% rename from crates/nu-command/src/commands/reduce.rs rename to crates/nu-command/src/commands/filters/reduce.rs index 881e3c58c..31ea62250 100644 --- a/crates/nu-command/src/commands/reduce.rs +++ b/crates/nu-command/src/commands/filters/reduce.rs @@ -1,4 +1,4 @@ -use crate::commands::each; +use super::each; use crate::prelude::*; use nu_engine::run_block; use nu_engine::WholeStreamCommand; diff --git a/crates/nu-command/src/commands/reject.rs b/crates/nu-command/src/commands/filters/reject.rs similarity index 100% rename from crates/nu-command/src/commands/reject.rs rename to crates/nu-command/src/commands/filters/reject.rs diff --git a/crates/nu-command/src/commands/rename.rs b/crates/nu-command/src/commands/filters/rename.rs similarity index 100% rename from crates/nu-command/src/commands/rename.rs rename to crates/nu-command/src/commands/filters/rename.rs diff --git a/crates/nu-command/src/commands/reverse.rs b/crates/nu-command/src/commands/filters/reverse.rs similarity index 100% rename from crates/nu-command/src/commands/reverse.rs rename to crates/nu-command/src/commands/filters/reverse.rs diff --git a/crates/nu-command/src/commands/roll/column.rs b/crates/nu-command/src/commands/filters/roll/column.rs similarity index 100% rename from crates/nu-command/src/commands/roll/column.rs rename to crates/nu-command/src/commands/filters/roll/column.rs diff --git a/crates/nu-command/src/commands/roll/command.rs b/crates/nu-command/src/commands/filters/roll/command.rs similarity index 100% rename from crates/nu-command/src/commands/roll/command.rs rename to crates/nu-command/src/commands/filters/roll/command.rs diff --git a/crates/nu-command/src/commands/roll/mod.rs b/crates/nu-command/src/commands/filters/roll/mod.rs similarity index 100% rename from crates/nu-command/src/commands/roll/mod.rs rename to crates/nu-command/src/commands/filters/roll/mod.rs diff --git a/crates/nu-command/src/commands/roll/up.rs b/crates/nu-command/src/commands/filters/roll/up.rs similarity index 100% rename from crates/nu-command/src/commands/roll/up.rs rename to crates/nu-command/src/commands/filters/roll/up.rs diff --git a/crates/nu-command/src/commands/rotate/command.rs b/crates/nu-command/src/commands/filters/rotate/command.rs similarity index 100% rename from crates/nu-command/src/commands/rotate/command.rs rename to crates/nu-command/src/commands/filters/rotate/command.rs diff --git a/crates/nu-command/src/commands/rotate/counter_clockwise.rs b/crates/nu-command/src/commands/filters/rotate/counter_clockwise.rs similarity index 100% rename from crates/nu-command/src/commands/rotate/counter_clockwise.rs rename to crates/nu-command/src/commands/filters/rotate/counter_clockwise.rs diff --git a/crates/nu-command/src/commands/rotate/mod.rs b/crates/nu-command/src/commands/filters/rotate/mod.rs similarity index 100% rename from crates/nu-command/src/commands/rotate/mod.rs rename to crates/nu-command/src/commands/filters/rotate/mod.rs diff --git a/crates/nu-command/src/commands/select.rs b/crates/nu-command/src/commands/filters/select.rs similarity index 100% rename from crates/nu-command/src/commands/select.rs rename to crates/nu-command/src/commands/filters/select.rs diff --git a/crates/nu-command/src/commands/shuffle.rs b/crates/nu-command/src/commands/filters/shuffle.rs similarity index 100% rename from crates/nu-command/src/commands/shuffle.rs rename to crates/nu-command/src/commands/filters/shuffle.rs diff --git a/crates/nu-command/src/commands/skip/command.rs b/crates/nu-command/src/commands/filters/skip/command.rs similarity index 100% rename from crates/nu-command/src/commands/skip/command.rs rename to crates/nu-command/src/commands/filters/skip/command.rs diff --git a/crates/nu-command/src/commands/skip/mod.rs b/crates/nu-command/src/commands/filters/skip/mod.rs similarity index 100% rename from crates/nu-command/src/commands/skip/mod.rs rename to crates/nu-command/src/commands/filters/skip/mod.rs diff --git a/crates/nu-command/src/commands/skip/until.rs b/crates/nu-command/src/commands/filters/skip/until.rs similarity index 100% rename from crates/nu-command/src/commands/skip/until.rs rename to crates/nu-command/src/commands/filters/skip/until.rs diff --git a/crates/nu-command/src/commands/skip/while_.rs b/crates/nu-command/src/commands/filters/skip/while_.rs similarity index 100% rename from crates/nu-command/src/commands/skip/while_.rs rename to crates/nu-command/src/commands/filters/skip/while_.rs diff --git a/crates/nu-command/src/commands/sort_by.rs b/crates/nu-command/src/commands/filters/sort_by.rs similarity index 100% rename from crates/nu-command/src/commands/sort_by.rs rename to crates/nu-command/src/commands/filters/sort_by.rs diff --git a/crates/nu-command/src/commands/uniq.rs b/crates/nu-command/src/commands/filters/uniq.rs similarity index 100% rename from crates/nu-command/src/commands/uniq.rs rename to crates/nu-command/src/commands/filters/uniq.rs diff --git a/crates/nu-command/src/commands/update.rs b/crates/nu-command/src/commands/filters/update.rs similarity index 100% rename from crates/nu-command/src/commands/update.rs rename to crates/nu-command/src/commands/filters/update.rs diff --git a/crates/nu-command/src/commands/where_.rs b/crates/nu-command/src/commands/filters/where_.rs similarity index 100% rename from crates/nu-command/src/commands/where_.rs rename to crates/nu-command/src/commands/filters/where_.rs diff --git a/crates/nu-command/src/commands/wrap.rs b/crates/nu-command/src/commands/filters/wrap.rs similarity index 100% rename from crates/nu-command/src/commands/wrap.rs rename to crates/nu-command/src/commands/filters/wrap.rs diff --git a/crates/nu-command/src/commands/from.rs b/crates/nu-command/src/commands/formats/from/command.rs similarity index 100% rename from crates/nu-command/src/commands/from.rs rename to crates/nu-command/src/commands/formats/from/command.rs diff --git a/crates/nu-command/src/commands/from_csv.rs b/crates/nu-command/src/commands/formats/from/csv.rs similarity index 97% rename from crates/nu-command/src/commands/from_csv.rs rename to crates/nu-command/src/commands/formats/from/csv.rs index 72d8ab14e..2c27bf8b1 100644 --- a/crates/nu-command/src/commands/from_csv.rs +++ b/crates/nu-command/src/commands/formats/from/csv.rs @@ -1,4 +1,4 @@ -use crate::commands::from_delimited_data::from_delimited_data; +use super::delimited::from_delimited_data; use crate::prelude::*; use nu_engine::WholeStreamCommand; use nu_errors::ShellError; diff --git a/crates/nu-command/src/commands/from_delimited_data.rs b/crates/nu-command/src/commands/formats/from/delimited.rs similarity index 100% rename from crates/nu-command/src/commands/from_delimited_data.rs rename to crates/nu-command/src/commands/formats/from/delimited.rs diff --git a/crates/nu-command/src/commands/from_eml.rs b/crates/nu-command/src/commands/formats/from/eml.rs similarity index 100% rename from crates/nu-command/src/commands/from_eml.rs rename to crates/nu-command/src/commands/formats/from/eml.rs diff --git a/crates/nu-command/src/commands/from_ics.rs b/crates/nu-command/src/commands/formats/from/ics.rs similarity index 100% rename from crates/nu-command/src/commands/from_ics.rs rename to crates/nu-command/src/commands/formats/from/ics.rs diff --git a/crates/nu-command/src/commands/from_ini.rs b/crates/nu-command/src/commands/formats/from/ini.rs similarity index 100% rename from crates/nu-command/src/commands/from_ini.rs rename to crates/nu-command/src/commands/formats/from/ini.rs diff --git a/crates/nu-command/src/commands/from_json.rs b/crates/nu-command/src/commands/formats/from/json.rs similarity index 100% rename from crates/nu-command/src/commands/from_json.rs rename to crates/nu-command/src/commands/formats/from/json.rs diff --git a/crates/nu-command/src/commands/formats/from/mod.rs b/crates/nu-command/src/commands/formats/from/mod.rs new file mode 100644 index 000000000..fe91fdb63 --- /dev/null +++ b/crates/nu-command/src/commands/formats/from/mod.rs @@ -0,0 +1,32 @@ +mod command; +pub(crate) mod csv; +mod delimited; +mod eml; +mod ics; +mod ini; +mod json; +mod ods; +mod ssv; +pub(crate) mod toml; +mod tsv; +pub(crate) mod url; +mod vcf; +mod xlsx; +mod xml; +mod yaml; + +pub use self::csv::FromCsv; +pub use self::toml::FromToml; +pub use self::url::FromUrl; +pub use command::From; +pub use eml::FromEml; +pub use ics::FromIcs; +pub use ini::FromIni; +pub use json::FromJson; +pub use ods::FromOds; +pub use ssv::FromSsv; +pub use tsv::FromTsv; +pub use vcf::FromVcf; +pub use xlsx::FromXlsx; +pub use xml::FromXml; +pub use yaml::{FromYaml, FromYml}; diff --git a/crates/nu-command/src/commands/from_ods.rs b/crates/nu-command/src/commands/formats/from/ods.rs similarity index 100% rename from crates/nu-command/src/commands/from_ods.rs rename to crates/nu-command/src/commands/formats/from/ods.rs diff --git a/crates/nu-command/src/commands/from_ssv.rs b/crates/nu-command/src/commands/formats/from/ssv.rs similarity index 100% rename from crates/nu-command/src/commands/from_ssv.rs rename to crates/nu-command/src/commands/formats/from/ssv.rs diff --git a/crates/nu-command/src/commands/from_toml.rs b/crates/nu-command/src/commands/formats/from/toml.rs similarity index 100% rename from crates/nu-command/src/commands/from_toml.rs rename to crates/nu-command/src/commands/formats/from/toml.rs diff --git a/crates/nu-command/src/commands/from_tsv.rs b/crates/nu-command/src/commands/formats/from/tsv.rs similarity index 94% rename from crates/nu-command/src/commands/from_tsv.rs rename to crates/nu-command/src/commands/formats/from/tsv.rs index c5380bdfe..4c9c8b610 100644 --- a/crates/nu-command/src/commands/from_tsv.rs +++ b/crates/nu-command/src/commands/formats/from/tsv.rs @@ -1,4 +1,4 @@ -use crate::commands::from_delimited_data::from_delimited_data; +use super::delimited::from_delimited_data; use crate::prelude::*; use nu_engine::WholeStreamCommand; use nu_errors::ShellError; diff --git a/crates/nu-command/src/commands/from_url.rs b/crates/nu-command/src/commands/formats/from/url.rs similarity index 100% rename from crates/nu-command/src/commands/from_url.rs rename to crates/nu-command/src/commands/formats/from/url.rs diff --git a/crates/nu-command/src/commands/from_vcf.rs b/crates/nu-command/src/commands/formats/from/vcf.rs similarity index 100% rename from crates/nu-command/src/commands/from_vcf.rs rename to crates/nu-command/src/commands/formats/from/vcf.rs diff --git a/crates/nu-command/src/commands/from_xlsx.rs b/crates/nu-command/src/commands/formats/from/xlsx.rs similarity index 100% rename from crates/nu-command/src/commands/from_xlsx.rs rename to crates/nu-command/src/commands/formats/from/xlsx.rs diff --git a/crates/nu-command/src/commands/from_xml.rs b/crates/nu-command/src/commands/formats/from/xml.rs similarity index 98% rename from crates/nu-command/src/commands/from_xml.rs rename to crates/nu-command/src/commands/formats/from/xml.rs index 6d4f12594..34a94c6fc 100644 --- a/crates/nu-command/src/commands/from_xml.rs +++ b/crates/nu-command/src/commands/formats/from/xml.rs @@ -124,11 +124,10 @@ fn from_xml(args: CommandArgs) -> Result { #[cfg(test)] mod tests { - use super::ShellError; - use crate::commands::from_xml; + use super::*; + use indexmap::IndexMap; use nu_protocol::{UntaggedValue, Value}; - use nu_source::*; fn string(input: impl Into) -> Value { UntaggedValue::string(input.into()).into_untagged_value() @@ -143,7 +142,7 @@ mod tests { } fn parse(xml: &str) -> Result { - from_xml::from_xml_string_to_value(xml.to_string(), Tag::unknown()) + from_xml_string_to_value(xml.to_string(), Tag::unknown()) } #[test] diff --git a/crates/nu-command/src/commands/from_yaml.rs b/crates/nu-command/src/commands/formats/from/yaml.rs similarity index 100% rename from crates/nu-command/src/commands/from_yaml.rs rename to crates/nu-command/src/commands/formats/from/yaml.rs diff --git a/crates/nu-command/src/commands/formats/mod.rs b/crates/nu-command/src/commands/formats/mod.rs new file mode 100644 index 000000000..86f06f85f --- /dev/null +++ b/crates/nu-command/src/commands/formats/mod.rs @@ -0,0 +1,5 @@ +mod from; +mod to; + +pub use from::*; +pub use to::*; diff --git a/crates/nu-command/src/commands/to.rs b/crates/nu-command/src/commands/formats/to/command.rs similarity index 100% rename from crates/nu-command/src/commands/to.rs rename to crates/nu-command/src/commands/formats/to/command.rs diff --git a/crates/nu-command/src/commands/to_csv.rs b/crates/nu-command/src/commands/formats/to/csv.rs similarity index 97% rename from crates/nu-command/src/commands/to_csv.rs rename to crates/nu-command/src/commands/formats/to/csv.rs index 9b95a0c09..b7069c051 100644 --- a/crates/nu-command/src/commands/to_csv.rs +++ b/crates/nu-command/src/commands/formats/to/csv.rs @@ -1,4 +1,4 @@ -use crate::commands::to_delimited_data::to_delimited_data; +use crate::commands::formats::to::delimited::to_delimited_data; use crate::prelude::*; use nu_engine::WholeStreamCommand; use nu_errors::ShellError; diff --git a/crates/nu-command/src/commands/to_delimited_data.rs b/crates/nu-command/src/commands/formats/to/delimited.rs similarity index 100% rename from crates/nu-command/src/commands/to_delimited_data.rs rename to crates/nu-command/src/commands/formats/to/delimited.rs diff --git a/crates/nu-command/src/commands/to_html.rs b/crates/nu-command/src/commands/formats/to/html.rs similarity index 100% rename from crates/nu-command/src/commands/to_html.rs rename to crates/nu-command/src/commands/formats/to/html.rs diff --git a/crates/nu-command/src/commands/to_json.rs b/crates/nu-command/src/commands/formats/to/json.rs similarity index 100% rename from crates/nu-command/src/commands/to_json.rs rename to crates/nu-command/src/commands/formats/to/json.rs diff --git a/crates/nu-command/src/commands/to_md.rs b/crates/nu-command/src/commands/formats/to/md.rs similarity index 100% rename from crates/nu-command/src/commands/to_md.rs rename to crates/nu-command/src/commands/formats/to/md.rs diff --git a/crates/nu-command/src/commands/formats/to/mod.rs b/crates/nu-command/src/commands/formats/to/mod.rs new file mode 100644 index 000000000..e6e1ff7fc --- /dev/null +++ b/crates/nu-command/src/commands/formats/to/mod.rs @@ -0,0 +1,22 @@ +mod command; +pub(crate) mod csv; +pub(crate) mod delimited; +mod html; +mod json; +mod md; +pub(crate) mod toml; +mod tsv; +pub(crate) mod url; +mod xml; +mod yaml; + +pub use self::csv::ToCsv; +pub use self::toml::ToToml; +pub use self::url::ToUrl; +pub use command::To; +pub use html::ToHtml; +pub use json::ToJson; +pub use md::Command as ToMarkdown; +pub use tsv::ToTsv; +pub use xml::ToXml; +pub use yaml::ToYaml; diff --git a/crates/nu-command/src/commands/to_toml.rs b/crates/nu-command/src/commands/formats/to/toml.rs similarity index 100% rename from crates/nu-command/src/commands/to_toml.rs rename to crates/nu-command/src/commands/formats/to/toml.rs diff --git a/crates/nu-command/src/commands/to_tsv.rs b/crates/nu-command/src/commands/formats/to/tsv.rs similarity index 94% rename from crates/nu-command/src/commands/to_tsv.rs rename to crates/nu-command/src/commands/formats/to/tsv.rs index 61b443611..f721bea56 100644 --- a/crates/nu-command/src/commands/to_tsv.rs +++ b/crates/nu-command/src/commands/formats/to/tsv.rs @@ -1,4 +1,4 @@ -use crate::commands::to_delimited_data::to_delimited_data; +use crate::commands::formats::to::delimited::to_delimited_data; use crate::prelude::*; use nu_engine::WholeStreamCommand; use nu_errors::ShellError; diff --git a/crates/nu-command/src/commands/to_url.rs b/crates/nu-command/src/commands/formats/to/url.rs similarity index 100% rename from crates/nu-command/src/commands/to_url.rs rename to crates/nu-command/src/commands/formats/to/url.rs diff --git a/crates/nu-command/src/commands/to_xml.rs b/crates/nu-command/src/commands/formats/to/xml.rs similarity index 100% rename from crates/nu-command/src/commands/to_xml.rs rename to crates/nu-command/src/commands/formats/to/xml.rs diff --git a/crates/nu-command/src/commands/to_yaml.rs b/crates/nu-command/src/commands/formats/to/yaml.rs similarity index 100% rename from crates/nu-command/src/commands/to_yaml.rs rename to crates/nu-command/src/commands/formats/to/yaml.rs diff --git a/crates/nu-command/src/commands/cal.rs b/crates/nu-command/src/commands/generators/cal.rs similarity index 100% rename from crates/nu-command/src/commands/cal.rs rename to crates/nu-command/src/commands/generators/cal.rs diff --git a/crates/nu-command/src/commands/date/command.rs b/crates/nu-command/src/commands/generators/date/command.rs similarity index 100% rename from crates/nu-command/src/commands/date/command.rs rename to crates/nu-command/src/commands/generators/date/command.rs diff --git a/crates/nu-command/src/commands/date/format.rs b/crates/nu-command/src/commands/generators/date/format.rs similarity index 97% rename from crates/nu-command/src/commands/date/format.rs rename to crates/nu-command/src/commands/generators/date/format.rs index 018b8adb9..73c486180 100644 --- a/crates/nu-command/src/commands/date/format.rs +++ b/crates/nu-command/src/commands/generators/date/format.rs @@ -49,7 +49,7 @@ pub fn format(args: CommandArgs) -> Result { let table: Option = args.get_flag("table")?; let input = if args.input.is_empty() { - InputStream::one(crate::commands::date::now::date_now(&tag)) + InputStream::one(super::now::date_now(&tag)) } else { args.input }; diff --git a/crates/nu-command/src/commands/date/list_timezone.rs b/crates/nu-command/src/commands/generators/date/list_timezone.rs similarity index 100% rename from crates/nu-command/src/commands/date/list_timezone.rs rename to crates/nu-command/src/commands/generators/date/list_timezone.rs diff --git a/crates/nu-command/src/commands/date/mod.rs b/crates/nu-command/src/commands/generators/date/mod.rs similarity index 100% rename from crates/nu-command/src/commands/date/mod.rs rename to crates/nu-command/src/commands/generators/date/mod.rs diff --git a/crates/nu-command/src/commands/date/now.rs b/crates/nu-command/src/commands/generators/date/now.rs similarity index 100% rename from crates/nu-command/src/commands/date/now.rs rename to crates/nu-command/src/commands/generators/date/now.rs diff --git a/crates/nu-command/src/commands/date/parser.rs b/crates/nu-command/src/commands/generators/date/parser.rs similarity index 100% rename from crates/nu-command/src/commands/date/parser.rs rename to crates/nu-command/src/commands/generators/date/parser.rs diff --git a/crates/nu-command/src/commands/date/to_table.rs b/crates/nu-command/src/commands/generators/date/to_table.rs similarity index 97% rename from crates/nu-command/src/commands/date/to_table.rs rename to crates/nu-command/src/commands/generators/date/to_table.rs index 67d13022b..200894e56 100644 --- a/crates/nu-command/src/commands/date/to_table.rs +++ b/crates/nu-command/src/commands/generators/date/to_table.rs @@ -36,7 +36,7 @@ impl WholeStreamCommand for Date { fn to_table(args: CommandArgs) -> Result { let tag = args.call_info.name_tag.clone(); let input = if args.input.is_empty() { - InputStream::one(crate::commands::date::now::date_now(&tag)) + InputStream::one(super::now::date_now(&tag)) } else { args.input }; diff --git a/crates/nu-command/src/commands/date/to_timezone.rs b/crates/nu-command/src/commands/generators/date/to_timezone.rs similarity index 97% rename from crates/nu-command/src/commands/date/to_timezone.rs rename to crates/nu-command/src/commands/generators/date/to_timezone.rs index c20703b1a..6e1994ba7 100644 --- a/crates/nu-command/src/commands/date/to_timezone.rs +++ b/crates/nu-command/src/commands/generators/date/to_timezone.rs @@ -1,4 +1,4 @@ -use crate::commands::date::parser::{datetime_in_timezone, ParseErrorKind}; +use super::parser::{datetime_in_timezone, ParseErrorKind}; use crate::prelude::*; use nu_engine::WholeStreamCommand; use nu_errors::ShellError; diff --git a/crates/nu-command/src/commands/for_in.rs b/crates/nu-command/src/commands/generators/for_in.rs similarity index 98% rename from crates/nu-command/src/commands/for_in.rs rename to crates/nu-command/src/commands/generators/for_in.rs index f1ae761f9..9a3ee52a1 100644 --- a/crates/nu-command/src/commands/for_in.rs +++ b/crates/nu-command/src/commands/generators/for_in.rs @@ -125,7 +125,7 @@ fn for_in(args: CommandArgs) -> Result { let block: CapturedBlock = FromValue::from_value(&evaluate_baseline_expr(&positional[3], &context)?)?; - let input = crate::commands::echo::expand_value_to_stream(rhs); + let input = crate::commands::core_commands::echo::expand_value_to_stream(rhs); if numbered { Ok(input diff --git a/crates/nu-command/src/commands/hash_/base64_.rs b/crates/nu-command/src/commands/generators/hash_/base64_.rs similarity index 100% rename from crates/nu-command/src/commands/hash_/base64_.rs rename to crates/nu-command/src/commands/generators/hash_/base64_.rs diff --git a/crates/nu-command/src/commands/hash_/command.rs b/crates/nu-command/src/commands/generators/hash_/command.rs similarity index 100% rename from crates/nu-command/src/commands/hash_/command.rs rename to crates/nu-command/src/commands/generators/hash_/command.rs diff --git a/crates/nu-command/src/commands/hash_/md5_.rs b/crates/nu-command/src/commands/generators/hash_/md5_.rs similarity index 100% rename from crates/nu-command/src/commands/hash_/md5_.rs rename to crates/nu-command/src/commands/generators/hash_/md5_.rs diff --git a/crates/nu-command/src/commands/hash_/mod.rs b/crates/nu-command/src/commands/generators/hash_/mod.rs similarity index 100% rename from crates/nu-command/src/commands/hash_/mod.rs rename to crates/nu-command/src/commands/generators/hash_/mod.rs diff --git a/crates/nu-command/src/commands/generators/mod.rs b/crates/nu-command/src/commands/generators/mod.rs new file mode 100644 index 000000000..21e5102bf --- /dev/null +++ b/crates/nu-command/src/commands/generators/mod.rs @@ -0,0 +1,13 @@ +mod cal; +mod date; +mod for_in; +mod hash_; +mod seq; +mod seq_dates; + +pub use cal::Cal; +pub use date::*; +pub use for_in::ForIn; +pub use hash_::*; +pub use seq::Seq; +pub use seq_dates::SeqDates; diff --git a/crates/nu-command/src/commands/seq.rs b/crates/nu-command/src/commands/generators/seq.rs similarity index 100% rename from crates/nu-command/src/commands/seq.rs rename to crates/nu-command/src/commands/generators/seq.rs diff --git a/crates/nu-command/src/commands/seq_dates.rs b/crates/nu-command/src/commands/generators/seq_dates.rs similarity index 100% rename from crates/nu-command/src/commands/seq_dates.rs rename to crates/nu-command/src/commands/generators/seq_dates.rs diff --git a/crates/nu-command/src/commands/math/median.rs b/crates/nu-command/src/commands/math/median.rs index 013a8f10a..9cc735a7d 100644 --- a/crates/nu-command/src/commands/math/median.rs +++ b/crates/nu-command/src/commands/math/median.rs @@ -56,7 +56,7 @@ pub fn median(values: &[Value], name: &Tag) -> Result { sorted.push(item.clone()); } - crate::commands::sort_by::sort(&mut sorted, &[], name, false)?; + crate::commands::filters::sort_by::sort(&mut sorted, &[], name, false)?; match take { Pick::Median => { diff --git a/crates/nu-command/src/commands/math/mode.rs b/crates/nu-command/src/commands/math/mode.rs index 0513e50e0..225514ea9 100644 --- a/crates/nu-command/src/commands/math/mode.rs +++ b/crates/nu-command/src/commands/math/mode.rs @@ -59,7 +59,7 @@ pub fn mode(values: &[Value], name: &Tag) -> Result { } } - crate::commands::sort_by::sort(&mut modes, &[], name, false)?; + crate::commands::filters::sort_by::sort(&mut modes, &[], name, false)?; Ok(UntaggedValue::Table(modes).into_value(name)) } diff --git a/crates/nu-command/src/commands/mod.rs b/crates/nu-command/src/commands/mod.rs new file mode 100644 index 000000000..57ec63d15 --- /dev/null +++ b/crates/nu-command/src/commands/mod.rs @@ -0,0 +1,120 @@ +mod charting; +mod config; +mod conversions; +mod core_commands; +#[cfg(feature = "dataframe")] +mod dataframe; +mod env; +mod filesystem; +mod filters; +mod formats; +mod generators; +mod math; +mod network; +mod path; +mod platform; +mod random; +mod shells; +mod strings; +mod viewers; + +pub use charting::*; +pub use config::*; +pub use conversions::*; +pub use core_commands::*; +#[cfg(feature = "dataframe")] +pub use dataframe::{ + DataFrame, DataFrameAggregate, DataFrameColumn, DataFrameDTypes, DataFrameDrop, + DataFrameDropDuplicates, DataFrameDropNulls, DataFrameDummies, DataFrameFilter, DataFrameGet, + DataFrameGroupBy, DataFrameHead, DataFrameJoin, DataFrameList, DataFrameLoad, DataFrameMelt, + DataFramePivot, DataFrameSample, DataFrameSelect, DataFrameSeriesRename, DataFrameShow, + DataFrameSlice, DataFrameSort, DataFrameTail, DataFrameToCsv, DataFrameToDF, + DataFrameToParquet, DataFrameToSeries, DataFrameWhere, DataFrameWithColumn, +}; +pub use env::*; +pub use filesystem::*; +pub use filters::*; +pub use formats::*; +pub use generators::*; +pub use math::*; +pub use network::*; +pub use path::*; +pub use platform::*; +pub use random::*; +pub use shells::*; +pub use strings::*; +pub use viewers::*; + +#[cfg(test)] +mod tests { + use super::*; + use crate::examples::{test_anchors, test_examples}; + use nu_engine::{whole_stream_command, Command}; + use nu_errors::ShellError; + + fn full_tests() -> Vec { + vec![ + whole_stream_command(Append), + whole_stream_command(GroupBy), + whole_stream_command(Insert), + whole_stream_command(MoveColumn), + whole_stream_command(Update), + whole_stream_command(Empty), + // whole_stream_command(Select), + // whole_stream_command(Get), + // Str Command Suite + whole_stream_command(Str), + whole_stream_command(StrToDecimal), + whole_stream_command(StrToInteger), + whole_stream_command(StrDowncase), + whole_stream_command(StrUpcase), + whole_stream_command(StrCapitalize), + whole_stream_command(StrFindReplace), + whole_stream_command(StrSubstring), + whole_stream_command(StrToDatetime), + whole_stream_command(StrContains), + whole_stream_command(StrIndexOf), + whole_stream_command(StrTrim), + whole_stream_command(StrTrimLeft), + whole_stream_command(StrTrimRight), + whole_stream_command(StrStartsWith), + whole_stream_command(StrEndsWith), + //whole_stream_command(StrCollect), + whole_stream_command(StrLength), + whole_stream_command(StrLPad), + whole_stream_command(StrReverse), + whole_stream_command(StrRPad), + whole_stream_command(StrCamelCase), + whole_stream_command(StrPascalCase), + whole_stream_command(StrKebabCase), + whole_stream_command(StrSnakeCase), + whole_stream_command(StrScreamingSnakeCase), + whole_stream_command(ToMarkdown), + ] + } + + fn only_examples() -> Vec { + let mut commands = full_tests(); + commands.extend(vec![whole_stream_command(Flatten)]); + commands + } + + #[test] + fn examples_work_as_expected() -> Result<(), ShellError> { + for cmd in only_examples() { + println!("cmd: {}", cmd.name()); + test_examples(cmd)?; + } + + Ok(()) + } + + #[test] + fn tracks_metadata() -> Result<(), ShellError> { + for cmd in full_tests() { + test_anchors(cmd)?; + } + + Ok(()) + } +} diff --git a/crates/nu-command/src/commands/move_/mod.rs b/crates/nu-command/src/commands/move_/mod.rs deleted file mode 100644 index c9c70b9fd..000000000 --- a/crates/nu-command/src/commands/move_/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -mod command; -pub mod mv; - -pub use command::Command as Move; -pub use mv::Mv; diff --git a/crates/nu-command/src/commands/network/mod.rs b/crates/nu-command/src/commands/network/mod.rs new file mode 100644 index 000000000..0ee26832e --- /dev/null +++ b/crates/nu-command/src/commands/network/mod.rs @@ -0,0 +1,3 @@ +mod url_; + +pub use url_::*; diff --git a/crates/nu-command/src/commands/url_/command.rs b/crates/nu-command/src/commands/network/url_/command.rs similarity index 100% rename from crates/nu-command/src/commands/url_/command.rs rename to crates/nu-command/src/commands/network/url_/command.rs diff --git a/crates/nu-command/src/commands/url_/host.rs b/crates/nu-command/src/commands/network/url_/host.rs similarity index 100% rename from crates/nu-command/src/commands/url_/host.rs rename to crates/nu-command/src/commands/network/url_/host.rs diff --git a/crates/nu-command/src/commands/url_/mod.rs b/crates/nu-command/src/commands/network/url_/mod.rs similarity index 100% rename from crates/nu-command/src/commands/url_/mod.rs rename to crates/nu-command/src/commands/network/url_/mod.rs diff --git a/crates/nu-command/src/commands/url_/path.rs b/crates/nu-command/src/commands/network/url_/path.rs similarity index 100% rename from crates/nu-command/src/commands/url_/path.rs rename to crates/nu-command/src/commands/network/url_/path.rs diff --git a/crates/nu-command/src/commands/url_/query.rs b/crates/nu-command/src/commands/network/url_/query.rs similarity index 100% rename from crates/nu-command/src/commands/url_/query.rs rename to crates/nu-command/src/commands/network/url_/query.rs diff --git a/crates/nu-command/src/commands/url_/scheme.rs b/crates/nu-command/src/commands/network/url_/scheme.rs similarity index 100% rename from crates/nu-command/src/commands/url_/scheme.rs rename to crates/nu-command/src/commands/network/url_/scheme.rs diff --git a/crates/nu-command/src/commands/nu/mod.rs b/crates/nu-command/src/commands/nu/mod.rs deleted file mode 100644 index 93056d9f7..000000000 --- a/crates/nu-command/src/commands/nu/mod.rs +++ /dev/null @@ -1,25 +0,0 @@ -pub mod command; -mod plugin; - -pub use command::Command as Nu; -pub use plugin::SubCommand as NuPlugin; - -pub fn version() -> &'static str { - env!("CARGO_PKG_VERSION") -} - -pub fn testbins() -> Vec { - vec![ - "echo_env", "cococo", "iecho", "fail", "nonu", "chop", "repeater", "meow", - ] - .into_iter() - .map(String::from) - .collect() -} - -pub fn loglevels() -> Vec { - vec!["error", "warn", "info", "debug", "trace"] - .into_iter() - .map(String::from) - .collect() -} diff --git a/crates/nu-command/src/commands/ansi/command.rs b/crates/nu-command/src/commands/platform/ansi/command.rs similarity index 100% rename from crates/nu-command/src/commands/ansi/command.rs rename to crates/nu-command/src/commands/platform/ansi/command.rs diff --git a/crates/nu-command/src/commands/ansi/gradient.rs b/crates/nu-command/src/commands/platform/ansi/gradient.rs similarity index 100% rename from crates/nu-command/src/commands/ansi/gradient.rs rename to crates/nu-command/src/commands/platform/ansi/gradient.rs diff --git a/crates/nu-command/src/commands/ansi/mod.rs b/crates/nu-command/src/commands/platform/ansi/mod.rs similarity index 100% rename from crates/nu-command/src/commands/ansi/mod.rs rename to crates/nu-command/src/commands/platform/ansi/mod.rs diff --git a/crates/nu-command/src/commands/ansi/strip.rs b/crates/nu-command/src/commands/platform/ansi/strip.rs similarity index 100% rename from crates/nu-command/src/commands/ansi/strip.rs rename to crates/nu-command/src/commands/platform/ansi/strip.rs diff --git a/crates/nu-command/src/commands/benchmark.rs b/crates/nu-command/src/commands/platform/benchmark.rs similarity index 100% rename from crates/nu-command/src/commands/benchmark.rs rename to crates/nu-command/src/commands/platform/benchmark.rs diff --git a/crates/nu-command/src/commands/clear.rs b/crates/nu-command/src/commands/platform/clear.rs similarity index 100% rename from crates/nu-command/src/commands/clear.rs rename to crates/nu-command/src/commands/platform/clear.rs diff --git a/crates/nu-command/src/commands/clip.rs b/crates/nu-command/src/commands/platform/clip.rs similarity index 100% rename from crates/nu-command/src/commands/clip.rs rename to crates/nu-command/src/commands/platform/clip.rs diff --git a/crates/nu-command/src/commands/du.rs b/crates/nu-command/src/commands/platform/du.rs similarity index 100% rename from crates/nu-command/src/commands/du.rs rename to crates/nu-command/src/commands/platform/du.rs diff --git a/crates/nu-command/src/commands/exec.rs b/crates/nu-command/src/commands/platform/exec.rs similarity index 100% rename from crates/nu-command/src/commands/exec.rs rename to crates/nu-command/src/commands/platform/exec.rs diff --git a/crates/nu-command/src/commands/kill.rs b/crates/nu-command/src/commands/platform/kill.rs similarity index 100% rename from crates/nu-command/src/commands/kill.rs rename to crates/nu-command/src/commands/platform/kill.rs diff --git a/crates/nu-command/src/commands/platform/mod.rs b/crates/nu-command/src/commands/platform/mod.rs new file mode 100644 index 000000000..2db742f74 --- /dev/null +++ b/crates/nu-command/src/commands/platform/mod.rs @@ -0,0 +1,27 @@ +mod ansi; +mod benchmark; +mod clear; +#[cfg(feature = "clipboard-cli")] +mod clip; +mod du; +mod exec; +mod kill; +mod pwd; +mod run_external; +mod sleep; +mod termsize; +mod which_; + +pub use ansi::*; +pub use benchmark::Benchmark; +pub use clear::Clear; +#[cfg(feature = "clipboard-cli")] +pub use clip::Clip; +pub use du::Du; +pub use exec::Exec; +pub use kill::Kill; +pub use pwd::Pwd; +pub use run_external::RunExternalCommand; +pub use sleep::Sleep; +pub use termsize::TermSize; +pub use which_::Which; diff --git a/crates/nu-command/src/commands/pwd.rs b/crates/nu-command/src/commands/platform/pwd.rs similarity index 100% rename from crates/nu-command/src/commands/pwd.rs rename to crates/nu-command/src/commands/platform/pwd.rs diff --git a/crates/nu-command/src/commands/run_external.rs b/crates/nu-command/src/commands/platform/run_external.rs similarity index 99% rename from crates/nu-command/src/commands/run_external.rs rename to crates/nu-command/src/commands/platform/run_external.rs index e9db41ad9..10e1b93f6 100644 --- a/crates/nu-command/src/commands/run_external.rs +++ b/crates/nu-command/src/commands/platform/run_external.rs @@ -1,4 +1,4 @@ -use crate::commands::classified::external; +use crate::classified::external; use crate::prelude::*; use derive_new::new; diff --git a/crates/nu-command/src/commands/sleep.rs b/crates/nu-command/src/commands/platform/sleep.rs similarity index 100% rename from crates/nu-command/src/commands/sleep.rs rename to crates/nu-command/src/commands/platform/sleep.rs diff --git a/crates/nu-command/src/commands/termsize.rs b/crates/nu-command/src/commands/platform/termsize.rs similarity index 100% rename from crates/nu-command/src/commands/termsize.rs rename to crates/nu-command/src/commands/platform/termsize.rs diff --git a/crates/nu-command/src/commands/which_.rs b/crates/nu-command/src/commands/platform/which_.rs similarity index 100% rename from crates/nu-command/src/commands/which_.rs rename to crates/nu-command/src/commands/platform/which_.rs diff --git a/crates/nu-command/src/commands/shells.rs b/crates/nu-command/src/commands/shells/command.rs similarity index 100% rename from crates/nu-command/src/commands/shells.rs rename to crates/nu-command/src/commands/shells/command.rs diff --git a/crates/nu-command/src/commands/enter.rs b/crates/nu-command/src/commands/shells/enter.rs similarity index 99% rename from crates/nu-command/src/commands/enter.rs rename to crates/nu-command/src/commands/shells/enter.rs index 32ca095d9..9736a666c 100644 --- a/crates/nu-command/src/commands/enter.rs +++ b/crates/nu-command/src/commands/shells/enter.rs @@ -90,7 +90,7 @@ fn enter(args: CommandArgs) -> Result { let full_path = std::path::PathBuf::from(cwd); let span = location.span(); - let (file_extension, tagged_contents) = crate::commands::open::fetch( + let (file_extension, tagged_contents) = crate::commands::filesystem::open::fetch( &full_path, &PathBuf::from(location_string), span, diff --git a/crates/nu-command/src/commands/exit.rs b/crates/nu-command/src/commands/shells/exit.rs similarity index 100% rename from crates/nu-command/src/commands/exit.rs rename to crates/nu-command/src/commands/shells/exit.rs diff --git a/crates/nu-command/src/commands/shells/mod.rs b/crates/nu-command/src/commands/shells/mod.rs new file mode 100644 index 000000000..f41b3e954 --- /dev/null +++ b/crates/nu-command/src/commands/shells/mod.rs @@ -0,0 +1,11 @@ +mod command; +mod enter; +mod exit; +mod next; +mod prev; + +pub use command::Shells; +pub use enter::Enter; +pub use exit::Exit; +pub use next::Next; +pub use prev::Previous; diff --git a/crates/nu-command/src/commands/next.rs b/crates/nu-command/src/commands/shells/next.rs similarity index 100% rename from crates/nu-command/src/commands/next.rs rename to crates/nu-command/src/commands/shells/next.rs diff --git a/crates/nu-command/src/commands/prev.rs b/crates/nu-command/src/commands/shells/prev.rs similarity index 100% rename from crates/nu-command/src/commands/prev.rs rename to crates/nu-command/src/commands/shells/prev.rs diff --git a/crates/nu-command/src/commands/build_string.rs b/crates/nu-command/src/commands/strings/build_string.rs similarity index 100% rename from crates/nu-command/src/commands/build_string.rs rename to crates/nu-command/src/commands/strings/build_string.rs diff --git a/crates/nu-command/src/commands/char_.rs b/crates/nu-command/src/commands/strings/char_.rs similarity index 100% rename from crates/nu-command/src/commands/char_.rs rename to crates/nu-command/src/commands/strings/char_.rs diff --git a/crates/nu-command/src/commands/format/command.rs b/crates/nu-command/src/commands/strings/format/command.rs similarity index 100% rename from crates/nu-command/src/commands/format/command.rs rename to crates/nu-command/src/commands/strings/format/command.rs diff --git a/crates/nu-command/src/commands/format/format_filesize.rs b/crates/nu-command/src/commands/strings/format/format_filesize.rs similarity index 100% rename from crates/nu-command/src/commands/format/format_filesize.rs rename to crates/nu-command/src/commands/strings/format/format_filesize.rs diff --git a/crates/nu-command/src/commands/format/mod.rs b/crates/nu-command/src/commands/strings/format/mod.rs similarity index 100% rename from crates/nu-command/src/commands/format/mod.rs rename to crates/nu-command/src/commands/strings/format/mod.rs diff --git a/crates/nu-command/src/commands/lines.rs b/crates/nu-command/src/commands/strings/lines.rs similarity index 100% rename from crates/nu-command/src/commands/lines.rs rename to crates/nu-command/src/commands/strings/lines.rs diff --git a/crates/nu-command/src/commands/strings/mod.rs b/crates/nu-command/src/commands/strings/mod.rs new file mode 100644 index 000000000..bdeff53d8 --- /dev/null +++ b/crates/nu-command/src/commands/strings/mod.rs @@ -0,0 +1,19 @@ +mod build_string; +mod char_; +mod format; +mod lines; +mod parse; +mod size; +mod split; +mod split_by; +mod str_; + +pub use build_string::BuildString; +pub use char_::Char; +pub use format::*; +pub use lines::Lines; +pub use parse::*; +pub use size::Size; +pub use split::*; +pub use split_by::SplitBy; +pub use str_::*; diff --git a/crates/nu-command/src/commands/parse/command.rs b/crates/nu-command/src/commands/strings/parse/command.rs similarity index 100% rename from crates/nu-command/src/commands/parse/command.rs rename to crates/nu-command/src/commands/strings/parse/command.rs diff --git a/crates/nu-command/src/commands/parse/mod.rs b/crates/nu-command/src/commands/strings/parse/mod.rs similarity index 100% rename from crates/nu-command/src/commands/parse/mod.rs rename to crates/nu-command/src/commands/strings/parse/mod.rs diff --git a/crates/nu-command/src/commands/size.rs b/crates/nu-command/src/commands/strings/size.rs similarity index 100% rename from crates/nu-command/src/commands/size.rs rename to crates/nu-command/src/commands/strings/size.rs diff --git a/crates/nu-command/src/commands/split/chars.rs b/crates/nu-command/src/commands/strings/split/chars.rs similarity index 100% rename from crates/nu-command/src/commands/split/chars.rs rename to crates/nu-command/src/commands/strings/split/chars.rs diff --git a/crates/nu-command/src/commands/split/column.rs b/crates/nu-command/src/commands/strings/split/column.rs similarity index 100% rename from crates/nu-command/src/commands/split/column.rs rename to crates/nu-command/src/commands/strings/split/column.rs diff --git a/crates/nu-command/src/commands/split/command.rs b/crates/nu-command/src/commands/strings/split/command.rs similarity index 100% rename from crates/nu-command/src/commands/split/command.rs rename to crates/nu-command/src/commands/strings/split/command.rs diff --git a/crates/nu-command/src/commands/split/mod.rs b/crates/nu-command/src/commands/strings/split/mod.rs similarity index 100% rename from crates/nu-command/src/commands/split/mod.rs rename to crates/nu-command/src/commands/strings/split/mod.rs diff --git a/crates/nu-command/src/commands/split/row.rs b/crates/nu-command/src/commands/strings/split/row.rs similarity index 100% rename from crates/nu-command/src/commands/split/row.rs rename to crates/nu-command/src/commands/strings/split/row.rs diff --git a/crates/nu-command/src/commands/split_by.rs b/crates/nu-command/src/commands/strings/split_by.rs similarity index 100% rename from crates/nu-command/src/commands/split_by.rs rename to crates/nu-command/src/commands/strings/split_by.rs diff --git a/crates/nu-command/src/commands/str_/capitalize.rs b/crates/nu-command/src/commands/strings/str_/capitalize.rs similarity index 100% rename from crates/nu-command/src/commands/str_/capitalize.rs rename to crates/nu-command/src/commands/strings/str_/capitalize.rs diff --git a/crates/nu-command/src/commands/str_/case/camel_case.rs b/crates/nu-command/src/commands/strings/str_/case/camel_case.rs similarity index 97% rename from crates/nu-command/src/commands/str_/case/camel_case.rs rename to crates/nu-command/src/commands/strings/str_/case/camel_case.rs index 9f5a97126..8802e6802 100644 --- a/crates/nu-command/src/commands/str_/case/camel_case.rs +++ b/crates/nu-command/src/commands/strings/str_/case/camel_case.rs @@ -40,7 +40,7 @@ impl WholeStreamCommand for SubCommand { mod tests { use super::ShellError; use super::{to_camel_case, SubCommand}; - use crate::commands::str_::case::action; + use crate::commands::strings::str_::case::action; use nu_source::Tag; use nu_test_support::value::string; diff --git a/crates/nu-command/src/commands/str_/case/kebab_case.rs b/crates/nu-command/src/commands/strings/str_/case/kebab_case.rs similarity index 97% rename from crates/nu-command/src/commands/str_/case/kebab_case.rs rename to crates/nu-command/src/commands/strings/str_/case/kebab_case.rs index f99568a41..e427f61be 100644 --- a/crates/nu-command/src/commands/str_/case/kebab_case.rs +++ b/crates/nu-command/src/commands/strings/str_/case/kebab_case.rs @@ -40,7 +40,7 @@ impl WholeStreamCommand for SubCommand { mod tests { use super::ShellError; use super::{to_kebab_case, SubCommand}; - use crate::commands::str_::case::action; + use crate::commands::strings::str_::case::action; use nu_source::Tag; use nu_test_support::value::string; diff --git a/crates/nu-command/src/commands/str_/case/mod.rs b/crates/nu-command/src/commands/strings/str_/case/mod.rs similarity index 100% rename from crates/nu-command/src/commands/str_/case/mod.rs rename to crates/nu-command/src/commands/strings/str_/case/mod.rs diff --git a/crates/nu-command/src/commands/str_/case/pascal_case.rs b/crates/nu-command/src/commands/strings/str_/case/pascal_case.rs similarity index 97% rename from crates/nu-command/src/commands/str_/case/pascal_case.rs rename to crates/nu-command/src/commands/strings/str_/case/pascal_case.rs index a56324055..99d4a19ce 100644 --- a/crates/nu-command/src/commands/str_/case/pascal_case.rs +++ b/crates/nu-command/src/commands/strings/str_/case/pascal_case.rs @@ -40,7 +40,7 @@ impl WholeStreamCommand for SubCommand { mod tests { use super::ShellError; use super::{to_pascal_case, SubCommand}; - use crate::commands::str_::case::action; + use crate::commands::strings::str_::case::action; use nu_source::Tag; use nu_test_support::value::string; diff --git a/crates/nu-command/src/commands/str_/case/screaming_snake_case.rs b/crates/nu-command/src/commands/strings/str_/case/screaming_snake_case.rs similarity index 97% rename from crates/nu-command/src/commands/str_/case/screaming_snake_case.rs rename to crates/nu-command/src/commands/strings/str_/case/screaming_snake_case.rs index 917e8f6be..338e13f80 100644 --- a/crates/nu-command/src/commands/str_/case/screaming_snake_case.rs +++ b/crates/nu-command/src/commands/strings/str_/case/screaming_snake_case.rs @@ -40,7 +40,7 @@ impl WholeStreamCommand for SubCommand { mod tests { use super::ShellError; use super::{to_screaming_snake_case, SubCommand}; - use crate::commands::str_::case::action; + use crate::commands::strings::str_::case::action; use nu_source::Tag; use nu_test_support::value::string; diff --git a/crates/nu-command/src/commands/str_/case/snake_case.rs b/crates/nu-command/src/commands/strings/str_/case/snake_case.rs similarity index 97% rename from crates/nu-command/src/commands/str_/case/snake_case.rs rename to crates/nu-command/src/commands/strings/str_/case/snake_case.rs index ce73b06ee..7f40928fe 100644 --- a/crates/nu-command/src/commands/str_/case/snake_case.rs +++ b/crates/nu-command/src/commands/strings/str_/case/snake_case.rs @@ -40,7 +40,7 @@ impl WholeStreamCommand for SubCommand { mod tests { use super::ShellError; use super::{to_snake_case, SubCommand}; - use crate::commands::str_::case::action; + use crate::commands::strings::str_::case::action; use nu_source::Tag; use nu_test_support::value::string; diff --git a/crates/nu-command/src/commands/str_/collect.rs b/crates/nu-command/src/commands/strings/str_/collect.rs similarity index 100% rename from crates/nu-command/src/commands/str_/collect.rs rename to crates/nu-command/src/commands/strings/str_/collect.rs diff --git a/crates/nu-command/src/commands/str_/command.rs b/crates/nu-command/src/commands/strings/str_/command.rs similarity index 100% rename from crates/nu-command/src/commands/str_/command.rs rename to crates/nu-command/src/commands/strings/str_/command.rs diff --git a/crates/nu-command/src/commands/str_/contains.rs b/crates/nu-command/src/commands/strings/str_/contains.rs similarity index 100% rename from crates/nu-command/src/commands/str_/contains.rs rename to crates/nu-command/src/commands/strings/str_/contains.rs diff --git a/crates/nu-command/src/commands/str_/downcase.rs b/crates/nu-command/src/commands/strings/str_/downcase.rs similarity index 100% rename from crates/nu-command/src/commands/str_/downcase.rs rename to crates/nu-command/src/commands/strings/str_/downcase.rs diff --git a/crates/nu-command/src/commands/str_/ends_with.rs b/crates/nu-command/src/commands/strings/str_/ends_with.rs similarity index 100% rename from crates/nu-command/src/commands/str_/ends_with.rs rename to crates/nu-command/src/commands/strings/str_/ends_with.rs diff --git a/crates/nu-command/src/commands/str_/find_replace.rs b/crates/nu-command/src/commands/strings/str_/find_replace.rs similarity index 100% rename from crates/nu-command/src/commands/str_/find_replace.rs rename to crates/nu-command/src/commands/strings/str_/find_replace.rs diff --git a/crates/nu-command/src/commands/str_/index_of.rs b/crates/nu-command/src/commands/strings/str_/index_of.rs similarity index 100% rename from crates/nu-command/src/commands/str_/index_of.rs rename to crates/nu-command/src/commands/strings/str_/index_of.rs diff --git a/crates/nu-command/src/commands/str_/length.rs b/crates/nu-command/src/commands/strings/str_/length.rs similarity index 100% rename from crates/nu-command/src/commands/str_/length.rs rename to crates/nu-command/src/commands/strings/str_/length.rs diff --git a/crates/nu-command/src/commands/str_/lpad.rs b/crates/nu-command/src/commands/strings/str_/lpad.rs similarity index 100% rename from crates/nu-command/src/commands/str_/lpad.rs rename to crates/nu-command/src/commands/strings/str_/lpad.rs diff --git a/crates/nu-command/src/commands/str_/mod.rs b/crates/nu-command/src/commands/strings/str_/mod.rs similarity index 100% rename from crates/nu-command/src/commands/str_/mod.rs rename to crates/nu-command/src/commands/strings/str_/mod.rs diff --git a/crates/nu-command/src/commands/str_/reverse.rs b/crates/nu-command/src/commands/strings/str_/reverse.rs similarity index 100% rename from crates/nu-command/src/commands/str_/reverse.rs rename to crates/nu-command/src/commands/strings/str_/reverse.rs diff --git a/crates/nu-command/src/commands/str_/rpad.rs b/crates/nu-command/src/commands/strings/str_/rpad.rs similarity index 100% rename from crates/nu-command/src/commands/str_/rpad.rs rename to crates/nu-command/src/commands/strings/str_/rpad.rs diff --git a/crates/nu-command/src/commands/str_/starts_with.rs b/crates/nu-command/src/commands/strings/str_/starts_with.rs similarity index 100% rename from crates/nu-command/src/commands/str_/starts_with.rs rename to crates/nu-command/src/commands/strings/str_/starts_with.rs diff --git a/crates/nu-command/src/commands/str_/substring.rs b/crates/nu-command/src/commands/strings/str_/substring.rs similarity index 100% rename from crates/nu-command/src/commands/str_/substring.rs rename to crates/nu-command/src/commands/strings/str_/substring.rs diff --git a/crates/nu-command/src/commands/str_/to_datetime.rs b/crates/nu-command/src/commands/strings/str_/to_datetime.rs similarity index 100% rename from crates/nu-command/src/commands/str_/to_datetime.rs rename to crates/nu-command/src/commands/strings/str_/to_datetime.rs diff --git a/crates/nu-command/src/commands/str_/to_decimal.rs b/crates/nu-command/src/commands/strings/str_/to_decimal.rs similarity index 100% rename from crates/nu-command/src/commands/str_/to_decimal.rs rename to crates/nu-command/src/commands/strings/str_/to_decimal.rs diff --git a/crates/nu-command/src/commands/str_/to_integer.rs b/crates/nu-command/src/commands/strings/str_/to_integer.rs similarity index 100% rename from crates/nu-command/src/commands/str_/to_integer.rs rename to crates/nu-command/src/commands/strings/str_/to_integer.rs diff --git a/crates/nu-command/src/commands/str_/trim/mod.rs b/crates/nu-command/src/commands/strings/str_/trim/mod.rs similarity index 100% rename from crates/nu-command/src/commands/str_/trim/mod.rs rename to crates/nu-command/src/commands/strings/str_/trim/mod.rs diff --git a/crates/nu-command/src/commands/str_/trim/trim_both_ends.rs b/crates/nu-command/src/commands/strings/str_/trim/trim_both_ends.rs similarity index 98% rename from crates/nu-command/src/commands/str_/trim/trim_both_ends.rs rename to crates/nu-command/src/commands/strings/str_/trim/trim_both_ends.rs index 67e33cc50..a0a56a1e2 100644 --- a/crates/nu-command/src/commands/str_/trim/trim_both_ends.rs +++ b/crates/nu-command/src/commands/strings/str_/trim/trim_both_ends.rs @@ -59,7 +59,7 @@ fn trim(s: &str, char_: Option) -> String { mod tests { use super::ShellError; use super::{trim, SubCommand}; - use crate::commands::str_::trim::{action, ActionMode}; + use crate::commands::strings::str_::trim::{action, ActionMode}; use nu_protocol::row; use nu_source::Tag; use nu_test_support::value::{int, string, table}; diff --git a/crates/nu-command/src/commands/str_/trim/trim_left.rs b/crates/nu-command/src/commands/strings/str_/trim/trim_left.rs similarity index 98% rename from crates/nu-command/src/commands/str_/trim/trim_left.rs rename to crates/nu-command/src/commands/strings/str_/trim/trim_left.rs index a639265bd..8c1ffb3da 100644 --- a/crates/nu-command/src/commands/str_/trim/trim_left.rs +++ b/crates/nu-command/src/commands/strings/str_/trim/trim_left.rs @@ -60,7 +60,7 @@ fn trim_left(s: &str, char_: Option) -> String { mod tests { use super::ShellError; use super::{trim_left, SubCommand}; - use crate::commands::str_::trim::{action, ActionMode}; + use crate::commands::strings::str_::trim::{action, ActionMode}; use nu_protocol::row; use nu_source::Tag; use nu_test_support::value::{int, string, table}; diff --git a/crates/nu-command/src/commands/str_/trim/trim_right.rs b/crates/nu-command/src/commands/strings/str_/trim/trim_right.rs similarity index 98% rename from crates/nu-command/src/commands/str_/trim/trim_right.rs rename to crates/nu-command/src/commands/strings/str_/trim/trim_right.rs index 619337eb2..165805ec4 100644 --- a/crates/nu-command/src/commands/str_/trim/trim_right.rs +++ b/crates/nu-command/src/commands/strings/str_/trim/trim_right.rs @@ -60,7 +60,7 @@ fn trim_right(s: &str, char_: Option) -> String { mod tests { use super::ShellError; use super::{trim_right, SubCommand}; - use crate::commands::str_::trim::{action, ActionMode}; + use crate::commands::strings::str_::trim::{action, ActionMode}; use nu_protocol::row; use nu_source::Tag; use nu_test_support::value::{int, string, table}; diff --git a/crates/nu-command/src/commands/str_/upcase.rs b/crates/nu-command/src/commands/strings/str_/upcase.rs similarity index 100% rename from crates/nu-command/src/commands/str_/upcase.rs rename to crates/nu-command/src/commands/strings/str_/upcase.rs diff --git a/crates/nu-command/src/commands/autoview/command.rs b/crates/nu-command/src/commands/viewers/autoview/command.rs similarity index 99% rename from crates/nu-command/src/commands/autoview/command.rs rename to crates/nu-command/src/commands/viewers/autoview/command.rs index 9eb9e4098..3f78bbff6 100644 --- a/crates/nu-command/src/commands/autoview/command.rs +++ b/crates/nu-command/src/commands/viewers/autoview/command.rs @@ -1,4 +1,4 @@ -use crate::commands::autoview::options::ConfigExtensions; +use crate::commands::viewers::autoview::options::ConfigExtensions; use crate::prelude::*; use crate::primitive::get_color_config; use nu_data::value::format_leaf; diff --git a/crates/nu-command/src/commands/autoview/mod.rs b/crates/nu-command/src/commands/viewers/autoview/mod.rs similarity index 100% rename from crates/nu-command/src/commands/autoview/mod.rs rename to crates/nu-command/src/commands/viewers/autoview/mod.rs diff --git a/crates/nu-command/src/commands/autoview/options.rs b/crates/nu-command/src/commands/viewers/autoview/options.rs similarity index 100% rename from crates/nu-command/src/commands/autoview/options.rs rename to crates/nu-command/src/commands/viewers/autoview/options.rs diff --git a/crates/nu-command/src/commands/constants.rs b/crates/nu-command/src/commands/viewers/bat_constants.rs similarity index 100% rename from crates/nu-command/src/commands/constants.rs rename to crates/nu-command/src/commands/viewers/bat_constants.rs diff --git a/crates/nu-command/src/commands/viewers/mod.rs b/crates/nu-command/src/commands/viewers/mod.rs new file mode 100644 index 000000000..ddd1b9c67 --- /dev/null +++ b/crates/nu-command/src/commands/viewers/mod.rs @@ -0,0 +1,7 @@ +mod autoview; +mod bat_constants; +mod table; + +pub use autoview::*; +pub use bat_constants::BAT_LANGUAGES; +pub use table::*; diff --git a/crates/nu-command/src/commands/table/command.rs b/crates/nu-command/src/commands/viewers/table/command.rs similarity index 99% rename from crates/nu-command/src/commands/table/command.rs rename to crates/nu-command/src/commands/viewers/table/command.rs index 1441a7e3e..c4c712811 100644 --- a/crates/nu-command/src/commands/table/command.rs +++ b/crates/nu-command/src/commands/viewers/table/command.rs @@ -1,4 +1,4 @@ -use crate::commands::table::options::{ConfigExtensions, NuConfig}; +use crate::commands::viewers::table::options::{ConfigExtensions, NuConfig}; use crate::prelude::*; use crate::primitive::get_color_config; use futures::executor::block_on; diff --git a/crates/nu-command/src/commands/table/mod.rs b/crates/nu-command/src/commands/viewers/table/mod.rs similarity index 100% rename from crates/nu-command/src/commands/table/mod.rs rename to crates/nu-command/src/commands/viewers/table/mod.rs diff --git a/crates/nu-command/src/commands/table/options.rs b/crates/nu-command/src/commands/viewers/table/options.rs similarity index 100% rename from crates/nu-command/src/commands/table/options.rs rename to crates/nu-command/src/commands/viewers/table/options.rs diff --git a/crates/nu-command/src/commands/default_context.rs b/crates/nu-command/src/default_context.rs similarity index 98% rename from crates/nu-command/src/commands/default_context.rs rename to crates/nu-command/src/default_context.rs index 6139eed09..e635ae9c7 100644 --- a/crates/nu-command/src/commands/default_context.rs +++ b/crates/nu-command/src/default_context.rs @@ -117,7 +117,7 @@ pub fn create_default_context(interactive: bool) -> Result Result Result Result