Skip to main content

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.json so 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 so nuro can display usage without spinning up PowerShell each time.
  • Dependency aware Python support – Automatically install requirements declared inside downloaded Python scripts before running them.
  • Trace logging – Automatically append detailed execution logs to ~/.nuro/logs/nuro-debug.log for 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

  1. Install the package: pip install nuro
  2. Run nuro with no arguments to see available commands fetched from your configured buckets.
  3. Execute a command: nuro example will download cmds/example.ps1 from the highest-priority bucket (unless overridden by pinning).
  4. Show usage details: nuro example --help
  5. 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, notably official_bucket_base which points at the canonical bucket (defaults to https://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 a pins object mapping command names to bucket names to force per-command resolution.
  • cache/ – Script (cmds/) and usage (usage/) caches. Running nuro --refresh removes this directory before rebuilding entries.
  • logs/ – Contains nuro-debug.log with detailed trace logs.

Command Resolution

  1. Optional bucket:command prefix on the CLI takes precedence.
  2. Bucket pins (pins section in buckets.json) resolve specific commands.
  3. Remaining buckets are tried by descending priority.
  4. nuro prefers .ps1, then .py, then .sh. PowerShell scripts are executed through a helper host so NuroCmd_<name> can interact with the current PowerShell session when desired.

Diagnostics

  • nuro --refresh removes the entire ~/.nuro/cache tree before re-listing commands.
  • Validation commands can be run manually: nuro official:your-cmd fetches straight from the official bucket 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 nuro
  • function 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nuro-0.1.17.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nuro-0.1.17-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file nuro-0.1.17.tar.gz.

File metadata

  • Download URL: nuro-0.1.17.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for nuro-0.1.17.tar.gz
Algorithm Hash digest
SHA256 6a771a39cf2b03e6bd6feff913b39230dc0421a97fcf901c9649fa16c7f5ca07
MD5 949ba3b8e87071eee287c25dc6d0c746
BLAKE2b-256 0b858c8d2774cbf6dc23f63d2c32495887db2bc22fca7c949de9cab00d8f27b8

See more details on using hashes here.

File details

Details for the file nuro-0.1.17-py3-none-any.whl.

File metadata

  • Download URL: nuro-0.1.17-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for nuro-0.1.17-py3-none-any.whl
Algorithm Hash digest
SHA256 1d50229efd17b3833e0f469296c677c7e0229933240cfeefb65f77a8671d3342
MD5 9eaecfcbb630500e8295c8fd2a008eb9
BLAKE2b-256 0e7eec1cc7dd6070fe276db8a03ebc0cdd29e7dae804ddcaf69ed874b8c1896c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page