Universal command wrapper package that dispatches to /usr/local/bin/ngenctl-* scripts
Project description
ngenctl
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
- Aliases - Commands defined in
$HOME/.ngenctl/alias.json - Scripts - Scripts from
/usr/local/bin/ngenctl-{command}or bundled scripts - Environment Commands - Commands from
$HOME/.ngenctl/config.jsonavailable 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
- When you run
ngenctl {command}, the CLI dispatcher checks in this order:- Aliases: Checks if the command is defined in
$HOME/.ngenctl/alias.jsonand resolves it - Scripts: Looks for a script at
/usr/local/bin/ngenctl-{command}or bundled scripts - Environment Commands: Checks
$HOME/.ngenctl/config.jsonand verifies the command is available in PATH
- Aliases: Checks if the command is defined in
- If found, it executes the command with any additional arguments passed
- Scripts can be any executable file (bash, sh, Python, or binary)
- 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
- Place a script at
/usr/local/bin/ngenctl-{your-command} - Make sure it's executable:
chmod +x /usr/local/bin/ngenctl-{your-command} - Use it with:
ngenctl {your-command}
Method 2: Aliases
- Edit
$HOME/.ngenctl/alias.json - Add your alias:
"{short-name}": "{full-command}" - Use it with:
ngenctl {short-name}
Example:
{
"login": "rancher login"
}
Then use: ngenctl login
Method 3: Environment Commands
- Edit
$HOME/.ngenctl/config.json - Add your command:
"{ngenctl-command}": "{actual-command-in-path}" - Ensure the actual command is available in your PATH
- 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
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 ngenctl-0.1.14.tar.gz.
File metadata
- Download URL: ngenctl-0.1.14.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df2b1afcc25d53e8990ca757add40466767d9c65d3ceac8d84905f34c6b577ba
|
|
| MD5 |
80af59555e6a2463cab232d7817c7034
|
|
| BLAKE2b-256 |
d7c58d5d20fa012950bfdce296d4a8d94b5acd2f61ffc1a0c1324a03ac2df6a7
|
File details
Details for the file ngenctl-0.1.14-py3-none-any.whl.
File metadata
- Download URL: ngenctl-0.1.14-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e73029b49ff35ef6739f07812f47355012d9bc2420107e7df2e5a15f9ca4b14
|
|
| MD5 |
a76f59d5490c666364148e80450fa00c
|
|
| BLAKE2b-256 |
adb6372a756e81d42c0043474787090614c05d1006b7ceb6adfcf4d36eebe30e
|