murex

A smarter shell and scripting environment with advanced features designed for usability, safety and productivity (eg smarter DevOps tooling)

GPL-2.0 License

Stars
1.4K
Committers
12

Bot releases are hidden (Show)

murex - v2.4

Published by lmorg almost 3 years ago

There are a number of new features in this release

Breaking Changes:

  • mkarray (a et al) no longer returns an error if the start and end ranges
    are the same. Instead it returns an array of 1 value.

User Facing Changes:

  • Strict variables now supported (like set -u in Bash). This will mean any
    variables passed that haven't been initialized beforehand will cause that
    pipeline to fail. Currently this is opt in, a future release of murex will
    flip that and make it opt out. So take this opportunity to enable it in your
    ~/.murex_profile and test your scripts. Enable this via config:

    config: set proc strict-vars true
    

    This feature was requested in issue #380.

  • New builtin: datetime. This builtin allows you to convert date and/or time
    strings of one format into strings of another format. datetime is a
    supercharged alternative to the UNIX command date aimed at making scripting
    easier.

  • mkarray (a et al) now supports dates. eg [01-Jan-20..05-May-21]. If no
    start nor end date appears then mkarray assumes range starts or ends at
    current date.

  • openagent profile for image data types has been improved. murex now
    better supports tmux and iTerm2.

  • runtime --config now displays FileRef for every set as well as define,
    named FileRefSet and FileRefDefine respectively. So you can now easily
    trace where global config is being set and defined.

  • Better error messages in the interactive terminal.

  • Prompt now defaults to only displaying current directory rather than the full
    path. You can revert this change by adding your own prompt in config. eg:

    config: set shell prompt {
        out "{RESET}{YELLOW}${pwd_short} {RESET}» "
    }
    
    config: set shell prompt-multiline {
        let len = ${pwd_short -> wc -c} - 1
        printf "%${$len}s » " $linenum
    }
    
  • Parser updated to better support multiline pipelines where the newline is
    escaped and a comment exists after issue #379.
    This only applies to shell scripts, the interactive terminal hasn't yet been
    updated to reflect this change.

  • Fixed regression bugs with autocomplete parameters that affected some dynamic
    blocks.

  • readline now caches syntax highlighting and hint text to improve the
    responsiveness of the interactive terminal. This is set to a hard limit of
    200 cached items however that will be a configurable metric in a future
    release. Also planned for the future is caching autocompletion suggestions.

  • Loading message added for the default profile, ie the one that is compiled
    into and thus shipped with murex.

  • Fixed bug with fid-list and jobs where they were outputting the p.Name
    struct rather than p.Name.String(). This lead to the process name appearing
    garbled under some circumstances.

  • {BG-BLUE} emitted the wrong ANSI escape code, this has been corrected.

  • Several readline bug fixes.

Non-User Facing / Maintenance Changes

  • Thread safe copying of parameters upon fork. The previous code never actually
    generated any race conditions and I don't think ever could. However it was
    ambiguous. This new code makes the copy more explicit and appears to have
    also brought some minor performance improvements in benchmarks too.

  • Behavioural test framework has been refactored to make it easier to add new
    behavioural tests.

  • Lots of new tests added.

  • Updated documentation.

murex - v2.3

Published by lmorg about 3 years ago

This release brings some major improvements to the discoverability of commands
and their parameters in the interactive terminal.

User Facing Changes:

  • New builtin: method. This is used to help turn some commands into a
    "method", similar in concept to object orientated development where the tab-
    completer will return a list of other commands that are compatible with the
    formers output data types. It's purely an autocompletion tool and has no
    effect in shell scripts.

  • Autocompletion suggestions will differ based on what pipes are used. The idea
    behind this is to improve the discoverability of commands. All tokens can
    still be used to pipeline to any command type (like before). This rule only
    affects autocomplete suggestions in the interactive prompt.

    • | will show all available aliases, functions, builtins and external
      commands, as usual

    • -> will default to showing only compatible commands defined in method
      (see above), however if no methods are found then -> will fall back to
      suggesting all available aliases, functions, builtins and external commands,
      like |.

    The idea here is for -> to surface commands that are commonly
    expected to be pipelined together but without forcing the user to pause and
    remember which token exposes what commands. While | is still available for
    familiarity

  • Autocompletion de-duplication now places hyphen-prefixed flags at the end of
    the results when sorting. This helps bring more relevant flags forward, with
    hyphen-prefixed flags still visible when users press -

  • External commands return a error message if the exit status is non-zero
    (issue #299)

  • Index() ([) now returns a different data type from the root object if the
    element is a string, integer, float64, boolean or nil (issue #316)

  • runtime was missing a few flags for reporting supported data types against
    the newer APIs

  • Generic types (* / generic) to include two spaces between columns when
    marshalled

  • Syntax highlighter colour tweaks -- no longer using background highlighting
    because that looks weird and unreadable on some terminal colour schemes

  • Bug fixes to the fast parser

  • Bug fixes to readline merged from v2.2.1200 (issue #362)

Non-User Facing / Maintenance Changes

  • hcl and bson types now use ReadArray templates so their behavior should
    mimic JSON and YAML

  • Fast parser is now aware of which pipe token (eg |, ->, =>, ?) is used

  • Unit test concurrency fix

  • New tests written for the fast parser

  • Updated documentation

murex - v2.2

Published by lmorg about 3 years ago

What's new in murex v2.2

This release sees new optional features plus major bug fixes to the existing
code base:

Breaking Changes:

One config shell key has changed it's name:

  • spellcheck-block -> spellcheck-func

This is to bring spellcheck inline with other keys that contain executable
code.

This change might break some of your existing profile config!

User Facing Changes:

  • Windows coreutils no longer returns exit code of 13 for aliases

  • Fixed regression bug in fg (added stronger testing here to prevent future
    regressions)

  • Generic data type, *, now uses tabwriter to align columns

  • Spellchecker error handling tweaked to be more user friendly

  • Environmental variables can been created per command:

  • stdstream.SetDataType() only works on first call -- ignored thereafter.
    This will impact pipes that are written to by many processes but results
    in more predictable code due possible timing errors where different
    processes are overwriting the stream data type

  • stdstream.SetDataType() only works on first call -- ignored thereafter.
    This will impact pipes that are written to by many processes but results
    in more predictable code due possible timing errors where different
    processes are overwriting the stream data type

Non-User Facing / Maintenance Changes

  • All dependencies have been updated, pinned and the vendors directory
    rebuilt

  • Fixed some issues flagged up in goreportcard.com

  • Some internal API changes that have no UI/UX ramifications but makes the
    code more maintainable

  • Lots more unit tests added

  • Lots of code rewritten to avoid potential data races

Package Rankings
Top 8.17% on Proxy.golang.org
Badges
Extracted from project README
Version Murex Tests Deploy Docs Official Website