Interactive CLI for managing o2switch/cPanel domains, subdomains, and DNS records.
Project description
o2switch-cli
CLI interactif pour gerer domaines, sous-domaines cPanel et enregistrements DNS sur un hebergement o2switch/cPanel.
Version actuelle: 0.1.0
Installation
./install.sh
The installer:
- Creates a local virtual environment
- Installs the CLI and dependencies
- Prompts for cPanel credentials (stored in
~/.config/o2switch-cli/.env) - Publishes
o2switch-clito~/.local/bin - Installs bash completion
After install, reload your shell:
source ~/.bashrc && hash -r
Non-interactive install
./install.sh --cpanel-host saule.o2switch.net --cpanel-user myuser --cpanel-token mytoken
Development install
./install.sh --dev
Skip setup wizard
./install.sh --skip-setup
o2switch-cli config init # configure later
Uninstall
./uninstall.sh
./uninstall.sh --purge-venv --purge-config --purge-state
Configuration
Credentials are stored globally in ~/.config/o2switch-cli/.env and loaded automatically.
# Show current config and where it's loaded from
o2switch-cli config show
# Show config file paths (active, global, local)
o2switch-cli config path
# Re-run setup wizard
o2switch-cli config init
# Test API access
o2switch-cli config test
Config file locations
- Local
.envin current directory (takes precedence) - Global
~/.config/o2switch-cli/.env(default)
Environment variables
You can also set credentials via environment variables:
export O2SWITCH_CLI_CPANEL_HOST=saule.o2switch.net
export O2SWITCH_CLI_CPANEL_USER=myuser
export O2SWITCH_CLI_CPANEL_TOKEN=mytoken
Getting a cPanel API token
- Log into cPanel
- Go to Security > Manage API Tokens
- Create a new token with appropriate permissions
- Copy the token (it's only shown once)
Usage
o2switch-cli # Interactive mode (if TTY)
o2switch-cli --help # Show all commands
DNS Records
# Point a hostname to an IP (create or update A record)
o2switch-cli dns upsert --host staging.example.com --ip 203.0.113.25
# With explicit zone and custom TTL
o2switch-cli dns upsert --zone example.com --host staging --ip 203.0.113.25 --ttl 600
# Search DNS records
o2switch-cli dns search example
# Delete an A record
o2switch-cli dns delete --host staging.example.com
# Verify DNS resolution
o2switch-cli dns verify --host staging.example.com --ip 203.0.113.25
# Dry run (show what would change without applying)
o2switch-cli dns upsert --host staging.example.com --ip 203.0.113.25 --dry-run
Domains
o2switch-cli domains list
o2switch-cli domains list --page 2 --page-size 10
Subdomains
o2switch-cli subdomains create --root example.com --label staging --ip 203.0.113.25
o2switch-cli subdomains list
o2switch-cli subdomains delete --fqdn staging.example.com
Output formats
o2switch-cli domains list --json
o2switch-cli config show --json
Interactive mode includes loading spinners, real-time search suggestions, and paginated navigation.
Versioning
o2switch-cli suit Semantic Versioning.
- format:
MAJOR.MINOR.PATCH - version actuelle:
0.1.0 - tags de release:
vMAJOR.MINOR.PATCH - changelog:
CHANGELOG.md - politique detaillee:
VERSIONING.md
Regles de bump:
MAJOR: rupture de compatibilite sur la CLI, la sortie JSON stable, les comportements de mutation, ou les variables/configs publiquesMINOR: nouvelles commandes, nouvelles options retro-compatibles, nouveaux workflows ou nouveaux champs JSON optionnelsPATCH: corrections retro-compatibles, docs, tests, durcissement interne sans rupture contractuelle
Tant que le projet reste en 0.x, un bump MINOR peut encore embarquer des changements cassants. Les correctifs PATCH doivent rester retro-compatibles.
Source de verite:
- version package:
o2switch_cli/__init__.py - metadata build:
pyproject.tomllit cette version dynamiquement
Avant une release, mettre a jour le changelog, verifier o2switch-cli --version, puis tagger le commit avec vX.Y.Z.
Development
.venv/bin/ruff check .
.venv/bin/ruff format .
.venv/bin/pytest
Specs
Le pack de specifications projet est dans docs/specs/README.md.
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 o2switch_cli-0.1.3.tar.gz.
File metadata
- Download URL: o2switch_cli-0.1.3.tar.gz
- Upload date:
- Size: 45.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2a129e1f8a74e39c06c03b6b320243040a903ee902036116411d8b4c54f75b3
|
|
| MD5 |
6a891c06188588cfbeaf7aeeebaf4489
|
|
| BLAKE2b-256 |
6d85bf125ac7220880a471bb214ac5f8c436caa8d89b00db8b8c64236d8676d2
|
File details
Details for the file o2switch_cli-0.1.3-py3-none-any.whl.
File metadata
- Download URL: o2switch_cli-0.1.3-py3-none-any.whl
- Upload date:
- Size: 45.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48464af78776498b48f97bae281dc6eb898c4175c582a954106bf622cb030056
|
|
| MD5 |
47702869cf09ca37404da3467ef5aae3
|
|
| BLAKE2b-256 |
944f284ae70f1a4c44c437d4327584a50899a93605765d3b1b446c2a885dabd9
|