nuro is a lightweight runner for fetching and executing PowerShell scripts from remote repositories.
Project description
nuro
nuro is a minimal, scoop-like command runner focused on distributing and invoking PowerShell scripts from remote repositories. It keeps a lightweight local cache under ~/.nuro, supports bucket pinning, and can transparently execute PowerShell, Python, or shell helpers published alongside your scripts.
Features
- Bucket-based distribution – Fetch
cmds/<name>.ps1(and optional.py/.sh) from GitHub-style "buckets" or local folders. - Commit pinning – Lock a bucket to an exact commit hash via
buckets.jsonso remote changes do not unexpectedly roll out. - Command caching – Store downloaded scripts in
~/.nuro/cache/cmds/<ext>/<bucket>/and reuse them while allowing manual refreshes. - Usage caching – Cache one-line help snippets generated by
NuroUsage_<name>functions sonurocan display usage without spinning up PowerShell each time. - Dependency aware Python support – Automatically install
requirementsdeclared inside downloaded Python scripts before running them. - Trace logging – Automatically append detailed execution logs to
~/.nuro/logs/nuro-debug.logfor later inspection.
Installation
pip install nuro
For Windows-first setups there is also a bootstrapper (bootstrap/get.nuro.ps1) that provisions a virtual environment under ~/.nuro/venv, creates a shim at ~/.nuro/bin/nuro.cmd, and wires the folder into your PATH. After bootstrap you still interact with the PyPI package above.
Quick Start
- Install the package:
pip install nuro - Run
nurowith no arguments to see available commands fetched from your configured buckets. - Execute a command:
nuro examplewill downloadcmds/example.ps1from the highest-priority bucket (unless overridden by pinning). - Show usage details:
nuro example --help - Force a fresh command list and clear caches:
nuro --refresh
Configuration
nuro keeps its state inside ~/.nuro (created automatically on first run):
config/config.json– Application defaults, notablyofficial_bucket_basewhich points at the canonical bucket (defaults tohttps://raw.githubusercontent.com/nor-void/nuro/main).config/buckets.json– Registry of buckets and command pins. Each entry looks like:{ "name": "official", "uri": "raw::https://raw.githubusercontent.com/nor-void/nuro/main", "priority": 100, "trusted": true, "sha1-hash": "<optional commit sha>" }
Add apinsobject mapping command names to bucket names to force per-command resolution.cache/– Script (cmds/) and usage (usage/) caches. Runningnuro --refreshremoves this directory before rebuilding entries.logs/– Containsnuro-debug.logwith detailed trace logs.
Command Resolution
- Optional
bucket:commandprefix on the CLI takes precedence. - Bucket pins (
pinssection inbuckets.json) resolve specific commands. - Remaining buckets are tried by descending
priority. - nuro prefers
.ps1, then.py, then.sh. PowerShell scripts are executed through a helper host soNuroCmd_<name>can interact with the current PowerShell session when desired.
Diagnostics
nuro --refreshremoves the entire~/.nuro/cachetree before re-listing commands.- Validation commands can be run manually:
nuro official:your-cmdfetches straight from theofficialbucket even if pins exist.
Developing Buckets
Bucket repositories follow a simple structure:
repo/
cmds/
hello.ps1
hello.py
hello.sh
Each PowerShell script can optionally expose:
function NuroCmd_<name> { param([string[]]$Args) … }– the entry point executed by nurofunction NuroUsage_<name> { "nuro <name> …" }– a one-line usage string cached by nuro
When you update bucket contents, publish to your Git remote and, if you need deterministic rollouts, update the sha1-hash in buckets.json to the new commit.
Contributing
Clone the repository, create a virtual environment (or run bootstrap/get.nuro.ps1 on Windows), then install in editable mode:
pip install -e .
Run the CLI locally with python -m nuro to inspect fetch and resolution behaviour. Pull requests and issue reports are welcome.
License
nuro is released under the MIT License. See LICENSE for full details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nuro-0.1.35.tar.gz.
File metadata
- Download URL: nuro-0.1.35.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7634424289dfe808eeb76cc127da9bfde75f0a36b6b3060bd19dd7e9eb09ecd2
|
|
| MD5 |
760c9fe5d11046548ddf06d77aee4477
|
|
| BLAKE2b-256 |
2250e15fc88f6903cff7e24a7f6f716779d2d25c32d683af8ac499f38115049c
|
File details
Details for the file nuro-0.1.35-py3-none-any.whl.
File metadata
- Download URL: nuro-0.1.35-py3-none-any.whl
- Upload date:
- Size: 24.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2769d82d67f141fceaa4f89a7d575ddcb89f1da4345ea516b12b0dcd5bf82a3
|
|
| MD5 |
57ff1569aeadcf60b5e66c3bc49b56fa
|
|
| BLAKE2b-256 |
5b9795f938e425a874a4f95bebae23929075e13c22d069d5d2da821c9ff649c5
|