<p align="center">
Initialize <a href="https://github.com/jdx/mise" target="_blank">mise</a> (polyglot asdf-like runtime manager in Rust)</br>
in a more performant and flexible way
</p>
<p align="center">
If you like the idea click ⭐ on the repo and <a href="https://twitter.com/intent/tweet?text=Nice%20xontrib%20for%20the%20xonsh%20shell!&url=https://github.com/eugenesvk/xontrib-mise" target="_blank">tweet</a>.
</p>
This xontrib adds a couple of (maybe too tiny to notice) improvements:
- (no cost) replaces the subprocess syntax for the hook mise function with a pure python syntax, which for some reason improves hook runtime by __~60%__ (but in absolute terms maybe just a dozen or two `ms`)
- (less convenient) replaces a hook on every prompt paint with hooks on
- shell launch
- changing dirs
- empty commands</br>
useful to refresh shell status when you edit `.tool-versions` _outside_ of shell (optional)
- commands that containt custom text chunks</br>
useful to refresh shell status when you edit `.tool-versions` _in_ a shell (optional)
## Installation
To install use pip:
```bash
xpip install xontrib-mise
# or: xpip install -U git+https://github.com/eugenesvk/xontrib-mise
```
## Usage
This xontrib requires `mise` to be in `PATH` or `~/bin`; or if it's added to `PATH` via another xontrib (e.g, you installed it via Homebrew and use `xontrib-homebrew`), then you should load this xontrib after the one setting `PATH`
1. Add the following to your `.py` xontrib loading config and `import` it in your xonsh run control file (`~/.xonshrc` or `~/.config/rc.xsh`):
```py
from xonsh.xontribs import xontribs_load
from xonsh.built_ins import XSH
envx = XSH.env
xontribs = [ "mise", # Initializes mise (polyglot asdf-like runtime manager)
# your other xontribs
]
# ↓ optional configuration variables
if 'mise' in xontribs: # Configure mise only if you're actually loading
# config var value |default|alt_cmd¦ comment
envx['XONTRIB_MISE_CHUNK_LIST'] = ['.tool-versions'] # |['.tool-versions']|False¦ (feeble attempts to track edits to `.tool-versions` in the command line) update mise status if command contains any of the string chunks in this list; False to disable this listener completely
envx['XONTRIB_MISE_NEWLINE_REFRESH'] = True # |True|False¦ update mise status if command is empty (e.g, ⏎ on a blank line to refresh after editing `.tool-versions` in a text editor); False to disable this listener completely
envx['XONTRIB_MISE_FORCE_COLOR'] = True # |True|False¦ preserve colored mise output
envx['XONTRIB_MISE_LOGLEVEL'] = 1 # |1|0¦ print xontrib log messages: 0 none, 1 error; 'mise' stderr is always passed through
# (old variables with _RTX_ in the name continue to work)
xontribs_load(xontribs) # actually load all xontribs in the list
```
2. Or just add this to your xonsh run control file
```xsh
xontrib load mise # Initializes mise (polyglot asdf-like runtime manager)
# configure like in the example above, but replace envx['VAR'] with $VAR
$XONTRIB_MISE_LOGLEVEL = 1
```
## Known issues
- In the future xontrib-mise will be autoloaded, but this is currently blocked due to a [xonsh bug](https://github.com/xonsh/xonsh/issues/5020): too early autoload prevents reading user config; also, autoloading can't be disabled
## Credits
This package was created with [xontrib template](https://github.com/xonsh/xontrib-template)
Raw data
{
"_id": null,
"home_page": "https://github.com/eugenesvk/xontrib-mise",
"name": "xontrib-mise",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "xontrib, xonsh",
"author": "Evgeny",
"author_email": "es.bugzilla@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/e1/6b/6be6b6514cc9c7d572fe499260bf6b49fc0c9ce8bd1d3e60cbcd552f6463/xontrib_mise-0.0.4.tar.gz",
"platform": null,
"description": "<p align=\"center\">\nInitialize <a href=\"https://github.com/jdx/mise\" target=\"_blank\">mise</a> (polyglot asdf-like runtime manager in Rust)</br>\nin a more performant and flexible way\n</p>\n\n<p align=\"center\"> \nIf you like the idea click \u2b50 on the repo and <a href=\"https://twitter.com/intent/tweet?text=Nice%20xontrib%20for%20the%20xonsh%20shell!&url=https://github.com/eugenesvk/xontrib-mise\" target=\"_blank\">tweet</a>.\n</p>\n\nThis xontrib adds a couple of (maybe too tiny to notice) improvements:\n\n - (no cost) replaces the subprocess syntax for the hook mise function with a pure python syntax, which for some reason improves hook runtime by __~60%__ (but in absolute terms maybe just a dozen or two `ms`)\n - (less convenient) replaces a hook on every prompt paint with hooks on\n - shell launch\n - changing dirs\n - empty commands</br>\n useful to refresh shell status when you edit `.tool-versions` _outside_ of shell (optional)\n - commands that containt custom text chunks</br>\n useful to refresh shell status when you edit `.tool-versions` _in_ a shell (optional)\n\n## Installation\n\nTo install use pip:\n\n```bash\nxpip install xontrib-mise\n# or: xpip install -U git+https://github.com/eugenesvk/xontrib-mise\n```\n\n## Usage\n\nThis xontrib requires `mise` to be in `PATH` or `~/bin`; or if it's added to `PATH` via another xontrib (e.g, you installed it via Homebrew and use `xontrib-homebrew`), then you should load this xontrib after the one setting `PATH`\n\n1. Add the following to your `.py` xontrib loading config and `import` it in your xonsh run control file (`~/.xonshrc` or `~/.config/rc.xsh`):\n```py\nfrom xonsh.xontribs \timport xontribs_load\nfrom xonsh.built_ins\timport XSH\nenvx = XSH.env\n\nxontribs = [ \"mise\", # Initializes mise (polyglot asdf-like runtime manager)\n # your other xontribs\n]\n# \u2193 optional configuration variables\nif 'mise' in xontribs: # Configure mise only if you're actually loading\n # config var \t value \t |default|alt_cmd\u00a6 comment\n envx['XONTRIB_MISE_CHUNK_LIST'] \t= ['.tool-versions']\t# |['.tool-versions']|False\u00a6 (feeble attempts to track edits to `.tool-versions` in the command line) update mise status if command contains any of the string chunks in this list; False to disable this listener completely\n envx['XONTRIB_MISE_NEWLINE_REFRESH']\t= True \t# |True|False\u00a6 update mise status if command is empty (e.g, \u23ce on a blank line to refresh after editing `.tool-versions` in a text editor); False to disable this listener completely\n envx['XONTRIB_MISE_FORCE_COLOR'] \t= True \t# |True|False\u00a6 preserve colored mise output\n envx['XONTRIB_MISE_LOGLEVEL'] \t= 1 \t# |1|0\u00a6 print xontrib log messages: 0 none, 1 error; 'mise' stderr is always passed through\n# (old variables with _RTX_ in the name continue to work)\nxontribs_load(xontribs) # actually load all xontribs in the list\n```\n\n2. Or just add this to your xonsh run control file\n```xsh\nxontrib load mise # Initializes mise (polyglot asdf-like runtime manager)\n# configure like in the example above, but replace envx['VAR'] with $VAR\n$XONTRIB_MISE_LOGLEVEL = 1\n```\n\n## Known issues\n\n- In the future xontrib-mise will be autoloaded, but this is currently blocked due to a [xonsh bug](https://github.com/xonsh/xonsh/issues/5020): too early autoload prevents reading user config; also, autoloading can't be disabled\n\n## Credits\n\nThis package was created with [xontrib template](https://github.com/xonsh/xontrib-template)\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Initializes mise (polyglot asdf-like runtime manager)",
"version": "0.0.4",
"project_urls": {
"Code": "https://github.com/eugenesvk/xontrib-mise",
"Documentation": "https://github.com/eugenesvk/xontrib-mise/blob/master/README.md",
"Homepage": "https://github.com/eugenesvk/xontrib-mise",
"Issue tracker": "https://github.com/eugenesvk/xontrib-mise/issues",
"Repository": "https://github.com/eugenesvk/xontrib-mise"
},
"split_keywords": [
"xontrib",
" xonsh"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "41181887ca93aabf01ec924e1665f0a0a6ff722ba52dbcf436fb5a426de30de0",
"md5": "d5e161cdd9909c7abcf76d20b39951cc",
"sha256": "0e50edb576b6bf7582db87d711f4aebe5cf11264e3825e48871e5117d3c8ab09"
},
"downloads": -1,
"filename": "xontrib_mise-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d5e161cdd9909c7abcf76d20b39951cc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 5306,
"upload_time": "2024-07-19T13:53:06",
"upload_time_iso_8601": "2024-07-19T13:53:06.724917Z",
"url": "https://files.pythonhosted.org/packages/41/18/1887ca93aabf01ec924e1665f0a0a6ff722ba52dbcf436fb5a426de30de0/xontrib_mise-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e16b6be6b6514cc9c7d572fe499260bf6b49fc0c9ce8bd1d3e60cbcd552f6463",
"md5": "19219a6dcdc7a3cd826e1e0313c3220b",
"sha256": "490b27da6746a34d9baeb4a63f0696dbc7295bf24878e97970d1314ff021557c"
},
"downloads": -1,
"filename": "xontrib_mise-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "19219a6dcdc7a3cd826e1e0313c3220b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 4899,
"upload_time": "2024-07-19T13:53:14",
"upload_time_iso_8601": "2024-07-19T13:53:14.976851Z",
"url": "https://files.pythonhosted.org/packages/e1/6b/6be6b6514cc9c7d572fe499260bf6b49fc0c9ce8bd1d3e60cbcd552f6463/xontrib_mise-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-19 13:53:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "eugenesvk",
"github_project": "xontrib-mise",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "xontrib-mise"
}