NGS - Next Generation Shell

NGS is a modern programming language with the focus on systems engineering.

About NGS

NGS is a unique combination of select features borrowed from other languages and original features. NGS was built from the ground up focusing on daily systems engineering tasks.

One way to think about NGS is bash plus data structures plus better syntax and error handling.

Scripting AWS is much easier with NGS, there is a Declarative Primitives style library for that.

If you need additional function or syntax in NGS, it's highly probable that it will be included in the language as long as it is for systems engineering tasks.

Start using NGS

Install NGS

NGS runs on Linux and Mac. Please follow the instructions to build NGS on your computer. Packages (apt, brew and others) are coming soon.

Run NGS inside docker

Play with NGS inside docker - instructions

Documentation for NGS beginners

Sample NGS features

  • Common systems engineering scripting aspects are covered
    • retry function
    • environment-variable-controlled debug function
    • log function for neat logging
    • status function for what is semantically a status
  • Easy processes handling
    • small subset of bash syntax for redirections and pipes
    • smart and customizable handling of processes' exit codes (including throwing exceptions)
    • syntax for running a command and parsing the output
    • process control with p=$(my_process &); ... p.kill()
  • Structured data manipulation. While parsing text remains a necessity, many of today's tasks include talking to APIs. APIs return structured data.
    • Sample functions: map, filter, reject, mapk - maps hash keys, mapv - maps hash values, group - groups values into hash, fetch - reads and parses a file.
    • collector facility lets you accumulate result easily into array, hash or any user defined type.
    • Table for displaying tabular data elegantly
    • Stats type counts occurrences
    • Box, FullBox and EmptyBox types represent containers with or without data in them.

Documentation

Thanks

  • Thanks to all contributors to NGS
  • Thanks to Beame.io for hosting this site