esysrepo-ctl
Control-plane tool for installing, updating, diagnosing, and managing the native
esysrepo CLI (distributed via Conan). Distributed as a Python package on PyPI.
Native repository operations use esysrepo / erepo (from the Conan package).
This tool only manages the lifecycle of that native CLI.
Install
pipx install esysrepo-ctl
Or from a development checkout:
python -m pip install -e ".[dev]"
Both esysrepo-ctl and erepo-ctl are equivalent entry points.
Then install the native CLI (first run bootstraps a Python env + Conan 2 per ADR-0008):
# Interactive: detect mode, confirm, persist
esysrepo-ctl install
# Non-interactive installer-like (managed home venv + always-on wrappers)
esysrepo-ctl install --mode managed --yes
# Project-private: activate your venv first, then:
esysrepo-ctl install --mode project --yes
| Mode | Conan lives in | Native esysrepo / erepo wrappers |
|---|---|---|
project |
Active project venv | That venv’s bin / Scripts (while activated) |
pipx |
Managed home venv | Managed …/esysrepo-ctl/bin |
managed |
Managed home venv | Managed …/esysrepo-ctl/bin |
Overrides: ESYSREPO_CTL_MODE, ESYSREPO_CTL_YES=1, --reconfigure (ignore
persisted mode). Choice is persisted under ESYSREPO_CTL_HOME / platform data
dir (config.json).
Commands
| Command | Purpose |
|---|---|
install |
Install the native esysrepo CLI via Conan |
update |
Update the native CLI (auto-bootstraps when allowed) |
list |
List available native CLI versions on Conan remotes |
remove |
Remove the native CLI from the Conan cache |
doctor |
Diagnose environment, PATH, and compatibility |
version |
Print control-plane and native CLI versions |
esysrepo-ctl --help
esysrepo-ctl --version
esysrepo-ctl version
esysrepo-ctl doctor
esysrepo-ctl install
esysrepo-ctl install --mode managed --yes
esysrepo-ctl install --mode project --yes --reconfigure
esysrepo-ctl install --version 0.2.4
esysrepo-ctl install --linkage shared # thin shared esysrepo-cli + DLLs/.so
esysrepo-ctl install --channel center # unnamed Conan Center-style refs
esysrepo-ctl list --dev # develop ships on @libesys/testing
esysrepo-ctl list
esysrepo-ctl list --linkage shared
esysrepo-ctl list --all-linkages
esysrepo-ctl update
esysrepo-ctl remove
Native CLI package (ADR-0009)
Installs pick one Conan application name. Wrappers stay esysrepo / erepo.
| Linkage | How | Package |
|---|---|---|
static (default) |
--linkage static or unset |
esysrepo-cli-static |
shared |
--linkage shared or ESYSREPO_CTL_CLI_LINKAGE=shared |
esysrepo-cli |
Until esysrepo-cli-static exists on Artifactory for that version/os/arch, the
default install fails (hint: --linkage shared or wait for the static-exe
Conan ship). ctl does not fall back to shared. Switching linkage can leave the
other package in the Conan cache until you remove it with the same --linkage.
Conan channel (ADR-0007)
By default, package refs use LibESys Artifactory identity:
esysrepo-cli-static/<version>@libesys/stable
| Mode | How | Package ref shape |
|---|---|---|
libesys (default) |
--channel libesys or unset |
…@libesys/stable |
testing |
--dev or --channel testing |
…@libesys/testing (develop *-dev.<iid>) |
center |
--channel center or ESYSREPO_CTL_CHANNEL=center |
unnamed (<pkg>/<ver>) |
Configure the LibESys Conan remote yourself (or via CI vars CONAN_REMOTE_URL /
CONAN_LOGIN_USERNAME / CONAN_PASSWORD). Install writes VirtualBuildEnv +
VirtualRunEnv under the managed data dir and places wrappers per mode (above);
doctor / discovery look at PATH, project Scripts/bin, and the managed bin.
Strict mode / no auto-bootstrap
By default, eligible commands (currently update) may auto-install the native CLI when
it is missing (ADR-0005). Disable that with:
esysrepo-ctl --no-bootstrap update
# or
esysrepo-ctl --strict update
Auto-bootstrap is also disabled when any of these are set:
CI=true(typical CI environments)ESYSREPO_CTL_NO_BOOTSTRAP=1ESYSREPO_CTL_STRICT=1
Explicit install / list / remove / doctor never trigger implicit native CLI install. version / update may auto-bootstrap when allowed.
Exit codes
Stable codes for scripting (ADR-0006):
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Usage error (bad arguments / unknown command) |
| 3 | Native esysrepo / erepo missing |
| 4 | Auto-bootstrap failure |
| 5 | Conan failure |
| 6 | Environment / compatibility error |
Errors print to stderr as error: … with optional hint: … remediation lines.
Troubleshooting
| Symptom | What to try |
|---|---|
doctor reports Conan missing |
Install Conan 2 and ensure conan is on PATH (or re-run esysrepo-ctl install --mode … --yes so ctl bootstraps Conan into the chosen venv) |
doctor reports esysrepo missing |
esysrepo-ctl install then re-check doctor / version |
| Install/update fails talking to remotes | conan remote list, fix auth/network, retry |
| Package installed but CLI not found | Check managed bin (esysrepo-ctl doctor) and Conan remotes |
| Wrong package identity / not found | Use default --channel libesys for Artifactory; ensure remote is configured |
| CI must not mutate the environment | Use --no-bootstrap or rely on CI=true |
where esysrepo lists ~/.conan2/…/bin before the venv wrapper |
Shell PATH is polluted (Conan cache bins first), so Windows never runs the .bat. cmd.exe: set "PATH=%VIRTUAL_ENV%\\Scripts;%PATH%" then where esysrepo — or call "%VIRTUAL_ENV%\\Scripts\\_esysrepo_ctl_fix_path.bat". PowerShell: $env:PATH = (@("$env:VIRTUAL_ENV\\Scripts") + ($env:PATH -split ';' | ? { $_ -notmatch '\\.conan2' })) -join ';'. Or deactivate/reactivate the venv after esysrepo-ctl install --mode project --yes. |
esysrepo-ctl doctor
esysrepo-ctl version
Documentation
Development
python scripts/setup-dev.sh # or scripts/setup-dev.ps1 on Windows
pytest
pre-commit run --all-files
Metadata
Release files for esysrepo-ctl 0.3.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| esysrepo_ctl-0.3.5.tar.gz | 55.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| esysrepo_ctl-0.3.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 102.8 kB
Release files / esysrepo_ctl-0.3.5.tar.gz
| Download URL | esysrepo_ctl-0.3.5.tar.gz |
|---|---|
| Size | 55.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
daf7ab3687811699b0556611084bcd888b93712f80d9515414014198626afcd6
|
|
BLAKE2b-256 checksum How to use checksums |
6bacc2f7a0e679decf087e0830316b8eb24eec4ef227fff98a9008c2c2bd33d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / esysrepo_ctl-0.3.5-py3-none-any.whl
| Download URL | esysrepo_ctl-0.3.5-py3-none-any.whl |
|---|---|
| Size | 47.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2c9e17181422c0880247037801e0a6036f38505d52869a61d29da8fcefcdf50d
|
|
BLAKE2b-256 checksum How to use checksums |
9200d4d00f9f34a47443fc0367e605c3820524e0e3a33bcb5b3aeb371b7b1e9c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Security for esysrepo-ctl 0.3.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.