Skip to main content

Universal command wrapper package that dispatches to /usr/local/bin/ngenctl-* scripts

Project description

ngenctl

GitHub PyPI

Universal command wrapper package that dispatches to /usr/local/bin/ngenctl-* scripts, environment commands, and supports aliases for quick access.

Installation

Install from PyPI:

pip install ngenctl

Or install from source:

pip install .

Note: Installation to /usr/local/bin requires sudo/root permissions. The package will automatically install bundled scripts to /usr/local/bin/ngenctl-* during installation.

Usage

The ngenctl command provides a unified interface for executing:

  • Scripts from /usr/local/bin/ngenctl-{command}
  • Environment commands available in PATH (configured via config.json)
  • Aliases for quick command shortcuts (configured via alias.json)

Command Resolution Priority

  1. Aliases - Commands defined in $HOME/.ngenctl/alias.json
  2. Scripts - Scripts from /usr/local/bin/ngenctl-{command} or bundled scripts
  3. Environment Commands - Commands from $HOME/.ngenctl/config.json available in PATH

Examples

Scripts

If you have a script at /usr/local/bin/ngenctl-rancher, you can use it as:

ngenctl rancher --help
ngenctl rancher version

Aliases

Create aliases in $HOME/.ngenctl/alias.json:

{
  "login": "rancher login",
  "clusters": "rancher clusters",
  "ci": "devops-ci",
  "gn": "kubectl get nodes"
}

Then use the aliases:

ngenctl login           # Executes: ngenctl rancher login
ngenctl clusters        # Executes: ngenctl rancher clusters
ngenctl ci saas-app develop  # Executes: ngenctl devops-ci saas-app develop
ngenctl gn              # Executes: ngenctl kubectl get nodes

Environment Commands

Configure environment commands in $HOME/.ngenctl/config.json:

{
  "doq": "doq",
  "kubectl": "kubectl"
}

Then use them directly:

ngenctl doq ns develop-saas    # Executes: doq ns develop-saas
ngenctl kubectl get nodes      # Executes: kubectl get nodes

How It Works

  1. When you run ngenctl {command}, the CLI dispatcher checks in this order:
    • Aliases: Checks if the command is defined in $HOME/.ngenctl/alias.json and resolves it
    • Scripts: Looks for a script at /usr/local/bin/ngenctl-{command} or bundled scripts
    • Environment Commands: Checks $HOME/.ngenctl/config.json and verifies the command is available in PATH
  2. If found, it executes the command with any additional arguments passed
  3. Scripts can be any executable file (bash, sh, Python, or binary)
  4. Aliases support recursive resolution and circular reference detection

Configuration

Aliases ($HOME/.ngenctl/alias.json)

Create command aliases to shorten frequently used commands:

{
  "login": "rancher login",
  "clusters": "rancher clusters",
  "ci": "devops-ci",
  "gn": "kubectl get nodes"
}

Aliases can reference other commands (scripts, environment commands, or other aliases). Circular references are automatically detected.

Environment Commands ($HOME/.ngenctl/config.json)

Map ngenctl commands to executables available in your PATH:

{
  "doq": "doq",
  "kubectl": "kubectl",
  "docker": "docker"
}

Commands in config.json will only work if the actual executable is available in your PATH.

Adding New Commands

Method 1: Scripts

  1. Place a script at /usr/local/bin/ngenctl-{your-command}
  2. Make sure it's executable: chmod +x /usr/local/bin/ngenctl-{your-command}
  3. Use it with: ngenctl {your-command}

Method 2: Aliases

  1. Edit $HOME/.ngenctl/alias.json
  2. Add your alias: "{short-name}": "{full-command}"
  3. Use it with: ngenctl {short-name}

Example:

{
  "login": "rancher login"
}

Then use: ngenctl login

Method 3: Environment Commands

  1. Edit $HOME/.ngenctl/config.json
  2. Add your command: "{ngenctl-command}": "{actual-command-in-path}"
  3. Ensure the actual command is available in your PATH
  4. Use it with: ngenctl {ngenctl-command}

Example:

{
  "doq": "doq"
}

Then use: ngenctl doq (if doq is in PATH)

Development

Building the Package

python -m build

Publishing to PyPI

Menggunakan script otomatis:

./publish.sh --test      # Publish ke Test PyPI
./publish.sh --publish   # Publish ke PyPI production

Atau manual:

python -m build
python -m twine check dist/*
python -m twine upload dist/*

Untuk panduan lengkap, lihat PUBLISH.md.

Repository

License

MIT

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

ngenctl-0.1.13.tar.gz (5.0 MB view details)

Uploaded Source

Built Distribution

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

ngenctl-0.1.13-py3-none-any.whl (5.0 MB view details)

Uploaded Python 3

File details

Details for the file ngenctl-0.1.13.tar.gz.

File metadata

  • Download URL: ngenctl-0.1.13.tar.gz
  • Upload date:
  • Size: 5.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for ngenctl-0.1.13.tar.gz
Algorithm Hash digest
SHA256 ef87c0dcb1249bb8e7a77e94b1ff2230df6da4deedb54422aaa0ccd9f0012f2a
MD5 5d8de3e240fb6b1acc3e4fc845d55d43
BLAKE2b-256 56b17f83a57888de00b4438b794d7ea579544f6e2a97c9a278f5571f61e39123

See more details on using hashes here.

File details

Details for the file ngenctl-0.1.13-py3-none-any.whl.

File metadata

  • Download URL: ngenctl-0.1.13-py3-none-any.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for ngenctl-0.1.13-py3-none-any.whl
Algorithm Hash digest
SHA256 b80dd4907bfa4afbb609455d1b0c8b13c898df831e50c030a5c7847135699e9d
MD5 22877c315d7751a9408d22898f6e2fdd
BLAKE2b-256 187b9132b2a68e1c95d648935b6d0259bebde5f12cd73784193ab5251e4942bb

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