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.23.tar.gz (19.7 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.23-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nuro-0.1.23.tar.gz
  • Upload date:
  • Size: 19.7 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.23.tar.gz
Algorithm Hash digest
SHA256 48627d01f77a26c4fdc2c4c5747b08a9197efcc179183c5a5a1b5f221f8a7d6d
MD5 b685f08fdd5236b5d193ae24620b96a9
BLAKE2b-256 d0e5fa491728967377fd8d0db69dbba9df3348db6f62dae2db614601de82b501

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nuro-0.1.23-py3-none-any.whl
  • Upload date:
  • Size: 21.7 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.23-py3-none-any.whl
Algorithm Hash digest
SHA256 64ff478cb5f841771d5c5cdebc72592c65506a864bcc941d8beb6a6bdb55c5cf
MD5 1abfa316eed902d0d4459c77109ab6e2
BLAKE2b-256 4e6558539e7e840a912629126b7f82ae341d6cbf745656194be037ad9d6227a4

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