Skip to content

Library of xonsh subprocess specification modifiers.

License

Notifications You must be signed in to change notification settings

anki-code/xontrib-spec-mod

Repository files navigation

Library of xonsh subprocess specification modifiers.

If you like the idea click ⭐ on the repo and tweet.

Installation

To install use pip:

xpip install xontrib-spec-mod
xpip install 'xontrib-spec-mod[dict,yaml]'  # Extra decorators.

Load:

xontrib load spec_mod

Usage

Transform output to object

Default decorators:

  • @lines - return list of lines.
  • @json - json to Python dict.
  • @path - string to pathlib.Path.

Extra decorators:

xpip install 'xontrib-spec-mod[dict,yaml]'
  • @dict - dict-like object (json, JavaScript object, Python dict) to Python dict.
  • @yaml - YAML to Python dict.

Examples

$(@lines ls /)
# ['/bin', '/etc', '/home']

$(@json echo '{"a":1}')  # Try with `curl` ;)
# dict({"a":1})

docker inspect @($(@json docker ps --format json)['ID'])
# Container info

$(@path which xonsh)
# Path('/path/to/xonsh')

$(@path which xonsh).parent
# Path('/path/to')


aliases['ydig'] = '@yaml dig +yaml'  # Update `dig` via `brew install bind` to have `+yaml`.
y = $(ydig google.com)
y[0]['type']
# 'MESSAGE'

Error handling

Default decorators:

  • @err - set $RAISE_SUBPROC_ERROR=True for the command.
  • @noerr - set $RAISE_SUBPROC_ERROR=False for the command.

Examples:

$RAISE_SUBPROC_ERROR = True  # General environment.
if ![@noerr ls nononofile]:  # Do not raise exception in case of error.
    echo file 

Credits

This package was created with xontrib template.

About

Library of xonsh subprocess specification modifiers.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Languages