nushell/TODO.md

2 KiB

Todo

  • Env shorthand
  • String interpolation
  • Aliases
  • Env vars
  • Sub commands
  • Floats
  • Tests
  • Decl requires $ but shouldn't
  • alias highlighting at call site
  • refactor into subcrates
  • subcommand alias
  • type inference from successful parse (eg not List<unknown> but List<int>)
  • parsing tables
  • Block params
  • Ranges
  • Column path
  • ...rest without calling it rest
  • Iteration (each) over tables
  • Row conditions
  • Simple completions
  • Detecting $it currently only looks at top scope but should find any free $it in the expression (including subexprs)
  • Signature needs to make parameters visible in scope before block is parsed
  • Externals
  • Modules and imports
  • Exports
  • Source
  • Error shortcircuit (stopping on first error). Revised: errors emit first, but can be seen by commands.
  • Value serialization
  • Handling rows with missing columns during a cell path
  • finish operator type-checking
  • Config file loading
  • block variable captures
  • improved history and config paths
  • ctrl-c support
  • operator overflow
  • Support for $in
  • config system
  • plugins
  • external plugin signatures
  • external command signatures
  • shells
  • autoenv
  • dataframes
  • overlays (replacement for autoenv), adding modules to shells
  • port over which logic
  • port test support crate so we can test against sample files, including multiple inputs into the CLI
  • benchmarking
  • finish adding config properties
  • system-agnostic test cases
  • exit codes
  • length of time the command runs put in the env (CMD_DURATION_MS)

Post-nushell merge:

  • Input/output types
  • let [first, rest] = [1, 2, 3] (design question: how do you pattern match a table?)

Maybe:

  • default param values?
  • Unary not?

module git { external fn "git clone" [ arg: int, --flag: string(custom-completion), ???? ] ; }

plugin git { ... }