Next Generation Shell is a modern programming language that focuses on "DevOps"y use cases.
NGS utilizes a subset of bash syntax for running external programs and provides additional facilities for ergonomic experience: exit codes handling, output parsing, etc.
Data manipulation is convenient. NGS provides map, filter and other primitives for basic functional programming, uniquely extended to support patterns.
log("my log message")debug("facility", "closing file ${f}") and run with DEBUG=facility environment variablestatus("Reading ${f} - ${p}% done")retry function$(your_program --id $id --values $*values)p=$(your_program &) ... p.kill()output = `your_program --values $*args`structured_data = ``curl https://api.example.com/blah.json``map, filter, reject with the usual meaningsmapk - maps hash keysmapv - maps hash valuesfilterk / rejectk - filters hash by keysfilterv / rejectv - filters hash by valuesthe_one - returns the only element in an arraygroup - groups values into hashcollector - accumulates resultTable - displays tabular data elegantlyStats - counts occurrencesfetch - reads and parses a file or a URLcurl https://ngs-lang.org/install.sh | bash
git clone git@github.com:ngs-lang/ngs.git
cd ngs && ./install.sh
brew install ngs
sudo snap install ngs
!curl "https://raw.githubusercontent.com/ngs-lang/ngs-ipython-extension/master/ngs-install.sh" | bash
%load_ext ngs
%ngs [single line expression]
%%ngs [multi line code]
docker run -it --rm ngslang/ngs
docker run -p 8888:8888 ngslang/ngs-jupyter
- uses: ngs-lang/ngs@v0.2.13
- run: ngs -pi 'sum(10..100)'