Commit Graph

268 Commits

Author SHA1 Message Date
Michael Angerman
d06f457b2a
nu-cli refactor moving commands into their own crate nu-command (#2910)
* move commands, futures.rs, script.rs, utils

* move over maybe_print_errors

* add nu_command crate references to nu_cli

* in commands.rs open up to pub mod from pub(crate)

* nu-cli, nu-command, and nu tests are now passing

* cargo fmt

* clean up nu-cli/src/prelude.rs

* code cleanup

* for some reason lex.rs was not formatted, may be causing my error

* remove mod completion from lib.rs which was not being used along with quickcheck macros

* add in allow unused imports

* comment out one failing external test; comment out one failing internal test

* revert commenting out failing tests; something else might be going on; someone with a windows machine should check and see what is going on with these failing windows tests

* Update Cargo.toml

Extend the optional features to nu-command

Co-authored-by: Jonathan Turner <jonathandturner@users.noreply.github.com>
2021-01-12 17:59:53 +13:00
Jonathan Turner
ac578b8491
Multiline scripts part 2 (#2795)
* Begin allowing comments and multiline scripts.

* clippy

* Finish moving to groups. Test pass

* Keep going

* WIP

* WIP

* BROKEN WIP

* WIP

* WIP

* Fix more tests

* WIP: alias starts working

* Broken WIP

* Broken WIP

* Variables begin to work

* captures start working

* A little better but needs fixed scope

* Shorthand env setting

* Update main merge

* Broken WIP

* WIP

* custom command parsing

* Custom commands start working

* Fix coloring and parsing of block

* Almost there

* Add some tests

* Add more param types

* Bump version

* Fix benchmark

* Fix stuff
2020-12-18 20:53:49 +13:00
Jonathan Turner
5a75e11b0e
Revert "Getting closer to multiline scripts (#2738)" (#2745)
This reverts commit e66bf70589.
2020-11-10 18:22:13 +13:00
Jonathan Turner
e66bf70589
Getting closer to multiline scripts (#2738)
* Begin allowing comments and multiline scripts.

* clippy

* Finish moving to groups. Test pass
2020-11-10 16:52:42 +13:00
Jonathan Turner
8453261211
Update rustyline to latest (#2565)
* Update rustyline to latest

* Go ahead and use rustyline for testing
2020-09-17 18:02:30 +12:00
Andrés N. Robalino
10d4edc7af
Slim down configuration readings and nu_cli clean up. (#2559)
We continue refactoring nu_cli and slim down a bit configuration
readings with a naive metadata `modified` field check.
2020-09-16 18:22:58 -05:00
Andrés N. Robalino
0178b53289
Core nu plugin load capability. (#2544)
We introduce the `plugin` nu sub command (`nu plugin`) with basic plugin
loading support. We can choose to load plugins from a directory. Originally
introduced to make integration tests faster (by not loading any plugins on startup at all)
but `nu plugin --load some_path ; test_pipeline_that_uses_plugins_just_loaded` does not see it.

Therefore, a `nu_with_plugins!` macro for tests was introduced on top of nu`s `--skip-plugins`
switch executable which is set to true when running the integration tests that use the `nu!` macro now..
2020-09-14 09:07:02 -05:00
Rajasekharan Vengalil
f14c0df582
Allow disabling welcome message on launch (#2314)
* Implements #2313
2020-08-09 11:38:21 +12:00
Jason Gedge
005d76cf57
Fix broken ordering of args when parsing command with env vars. (#1841) 2020-05-24 19:26:27 -04:00
Andrés N. Robalino
f18424a6f6 Remove test-bins feature. 2020-05-17 23:32:55 -05:00
Michael Nitschinger
e7f08cb21d
Allow external binary to register custom commands. (#1780)
This changeset contains everything that a separate binary needs to
register its own commands (including the new help function). It is
very possible that this commit misses other pub use exports, but
the contained ones work for our use cases so far.
2020-05-14 12:35:22 +12:00
Jonathan Turner
59d516064c
Add alias support to scripts and -c (#1593) 2020-04-16 05:50:35 +12:00
Andrés N. Robalino
f88674f353
Nu internals are logged under nu filter. (#1451) 2020-03-05 05:18:53 -05:00
Jason Gedge
b2c5af457e
Move most of the root package into a subcrate. (#1445)
This improves incremental build time when working on what was previously
the root package. For example, previously all plugins would be rebuilt
with a change to `src/commands/classified/external.rs`, but now only
`nu-cli` will have to be rebuilt (and anything that depends on it).
2020-03-04 13:58:20 -05:00
Jonathan Turner
8ae8ebd107
Add support for multiline script files (#1386)
* Add support for multiline script files

* clippy
2020-02-13 21:24:18 -08:00
Jonathan Turner
fb532f3f4e
Prototype shebang support (#1368)
* Add shebang support to nu.

* Move test file

* Add test for scripts

Co-authored-by: Jason Gedge <jason.gedge@shopify.com>
2020-02-10 08:49:45 -08:00
Jonathan Turner
dc50e61f26 Switch stdin redirect to manual. Add test (#1367) 2020-02-09 22:55:07 -08:00
Jonathan Turner
5f4fae5b06 Pipeline sink refactor (#1359)
* Refactor pipeline ahead of block changes. Add '-c' commandline option

* Update pipelining an error value

* Fmt

* Clippy

* Add stdin redirect for -c flag

* Add stdin redirect for -c flag
2020-02-08 18:24:33 -08:00
Jonathan Turner
02d0a4107e
A few ls improvements. New welcome message (#1195) 2020-01-12 09:49:20 +13:00
Yehuda Katz
4be88ff572 Modernize external parse and improve trace
The original purpose of this PR was to modernize the external parser to
use the new Shape system.

This commit does include some of that change, but a more important
aspect of this change is an improvement to the expansion trace.

Previous commit 6a7c00ea adding trace infrastructure to the syntax coloring
feature. This commit adds tracing to the expander.

The bulk of that work, in addition to the tree builder logic, was an
overhaul of the formatter traits to make them more general purpose, and
more structured.

Some highlights:

- `ToDebug` was split into two traits (`ToDebug` and `DebugFormat`)
  because implementations needed to become objects, but a convenience
  method on `ToDebug` didn't qualify
- `DebugFormat`'s `fmt_debug` method now takes a `DebugFormatter` rather
  than a standard formatter, and `DebugFormatter` has a new (but still
  limited) facility for structured formatting.
- Implementations of `ExpandSyntax` need to produce output that
  implements `DebugFormat`.

Unlike the highlighter changes, these changes are fairly focused in the
trace output, so these changes aren't behind a flag.
2019-11-01 08:45:45 -07:00
Yehuda Katz
6a7c00eaef Finish the job of moving shapes into the stream
This commit should finish the `coloring_in_tokens` feature, which moves
the shape accumulator into the token stream. This allows rollbacks of
the token stream to also roll back any shapes that were added.

This commit also adds a much nicer syntax highlighter trace, which shows
all of the paths the highlighter took to arrive at a particular coloring
output. This change is fairly substantial, but really improves the
understandability of the flow. I intend to update the normal parser with
a similar tracing view.

In general, this change also fleshes out the concept of "atomic" token
stream operations.

A good next step would be to try to make the parser more
error-correcting, using the coloring infrastructure. A follow-up step
would involve merging the parser and highlighter shapes themselves.
2019-10-22 16:19:22 -07:00
Yehuda Katz
439889dcef Feature flagging infrastructure
This commit adds the ability to work on features behind a feature flag
that won't be included in normal builds of nu.

These features are not exposed as Cargo features, as they reflect
incomplete features that are not yet stable.

To create a feature, add it to `features.toml`:

```toml
[hintsv1]

description = "Adding hints based on error states in the highlighter"
enabled = false
```

Each feature in `features.toml` becomes a feature flag accessible to `cfg`:

```rs
println!("hintsv1 is enabled");
```

By default, features are enabled based on the value of the `enabled` field.

You can also enable a feature from the command line via the
`NUSHELL_ENABLE_FLAGS` environment variable:

```sh
$ NUSHELL_ENABLE_FLAGS=hintsv1 cargo run
```

You can enable all flags via `NUSHELL_ENABLE_ALL_FLAGS`.

This commit also updates the CI setup to run the build with all flags off and
with all flags on. It also extracts the linting test into its own
parallelizable test, which means it doesn't need to run together with every
other test anymore.

When working on a feature, you should also add tests behind the same flag. A
commit is mergable if all tests pass with and without the flag, allowing
incomplete commits to land on master as long as the incomplete code builds and
passes tests.
2019-10-11 17:19:44 -07:00
Kyle Gretchev
b36bda24fa use clap::crate_version!()
- `crate_version()!` will pull version from Cargo.toml
2019-08-24 12:38:18 -04:00
est31
6babefbb00 Remove some unused feature gates 2019-08-24 09:23:39 +02:00
est31
8bdc715e3e Remove async_await feature gates 2019-08-24 09:09:26 +02:00
Jonathan Turner
27dbc1cb9a Add syntect (and borrow bat's theme file) 2019-07-20 13:12:04 +12:00
Jonathan Turner
d5704808d4 First working plugin 2019-06-27 16:56:48 +12:00
Jonathan Turner
c969c2c362 Clean up old parser code 2019-06-25 16:33:12 +12:00
Yehuda Katz
4036bf1ffd &str -> Text 2019-06-22 16:46:16 -04:00
Yehuda Katz
a8574abbf2 Improve errors 2019-06-02 22:11:21 -07:00
Jonathan Turner
2a20192519 Fix up some warnings and move integration tests to correct dir 2019-06-03 15:48:58 +12:00
Jonathan Turner
040c3a5e9c Add first integration test 2019-06-02 15:37:09 +12:00
Jonathan Turner
be5fd58cca
Merge pull request #59 from jonathandturner/gitbranch
Show the current git branch in the prompt
2019-06-02 11:39:58 +12:00
Yehuda Katz
f7590d924e Remove stray commented out lines 2019-06-01 14:15:21 -07:00
Jonathan Turner
d6cd0df232 Add git branch to prompt 2019-06-02 09:11:28 +12:00
Yehuda Katz
5d4097073b Add --loglevel and --develop
--loglevel sets the log level for all of nu
--develop takes a list of modules and turns on trace mode for them
2019-06-01 10:00:42 -07:00
Yehuda Katz
d5255f6dbf
Evaluator MVP (#39)
Evaluator, MVP
2019-05-27 23:45:18 -07:00
Yehuda Katz
b74daa2e60 A real parser (lalrpop) 2019-05-26 00:17:35 -07:00
Yehuda Katz
f9fb353c5c Streams are wired up pairwise 2019-05-24 00:29:16 -07:00
Yehuda Katz
bf332ea50c Improved streams 2019-05-23 21:34:43 -07:00
Yehuda Katz
625a356361 Data flows across commands via streams now 2019-05-23 00:23:06 -07:00
Yehuda Katz
31dd579d6f Small restructuring 2019-05-22 21:30:43 -07:00
Yehuda Katz
261d7a793f Restructure and make commands uniform 2019-05-22 00:12:03 -07:00
Jonathan Turner
75b7842618 Fix quoted string handling 2019-05-18 07:42:55 -07:00
Jonathan Turner
2e2831de95 Rename bat -> view 2019-05-18 07:15:22 -07:00
Yehuda Katz
c30fc32b0c Bat 2019-05-17 18:24:13 -07:00
Yehuda Katz
2feef6bd25 Added a first pass at sort-by 2019-05-17 08:55:50 -07:00
Yehuda Katz
9d8bb48d3f Fix Linux 2019-05-17 08:30:10 -07:00
Yehuda Katz
3ca0e2bf0c
Merge pull request #3 from jonathandturner/fix_ansi
Make sure to enable ANSI for Win10
2019-05-16 23:38:44 -07:00
Yehuda Katz
11677735f1 Fix Linux/Windows build on nightly 2019-05-16 23:37:35 -07:00
Jonathan Turner
c1398145f3 Add windows cfg check 2019-05-16 21:37:18 -07:00
Jonathan Turner
3c2ac7df54 Make sure to enable ANSI for Win10 2019-05-16 18:07:11 -07:00
Yehuda Katz
98ab5e63fc Refactor the repl loop 2019-05-16 14:43:36 -07:00
Jonathan Turner
b342069fd5 Workaround color prompt by making our own helper 2019-05-16 06:06:46 -07:00
Jonathan Turner
cbb86b0cab Add support for skip and where 2019-05-15 19:42:44 -07:00
Yehuda Katz
6b82e3a8a8 Simplify commands 2019-05-15 17:21:46 -07:00
Yehuda Katz
af1963d148 Remove dead code 2019-05-15 15:58:44 -07:00
Yehuda Katz
a5a34b88a8 More cleanup 2019-05-15 15:23:36 -07:00
Yehuda Katz
91f7d5384f Strip away a bit of cruft and add reject 2019-05-15 14:44:06 -07:00
Yehuda Katz
8f327477e7 Internals cleanup and | select ...fields 2019-05-15 13:14:51 -05:00
Yehuda Katz
3040638881 Basic pipelining is working! 2019-05-15 11:12:38 -05:00
Yehuda Katz
975ff7c2fb Very very basic piping working 2019-05-13 17:00:25 -04:00
Yehuda Katz
ceb0487eba A bunch of rework
I'm gonna use a VecDeque now instead of trying to get async streams
working to make progress, but the intent is that we should be able to
use async streams in and out to interleave the work better.
2019-05-13 13:30:51 -04:00
Yehuda Katz
e6da37f5be Continue prepping for object streams 2019-05-11 15:59:57 -07:00
Yehuda Katz
aa3fe0b0db Prep for streaming objects 2019-05-11 01:08:21 -07:00
Yehuda Katz
51e921b085 A bit more infra 2019-05-11 00:00:33 -07:00
Yehuda Katz
e44d657424 Simple parsing 2019-05-10 21:45:57 -07:00
Yehuda Katz
8f3b273337 objectshell initial commit 2019-05-10 09:59:12 -07:00