Skip to content

sncf-connect-tech/hesperides-cli

Repository files navigation

HESPERIDES CLI

TravisCI build Status Coverage Status Pypi latest version Supported Python versions License

Python 3 lib & CLI (Command Line Interface) for Hesperides

A changelog is available here: CHANGELOG.md

Installation

hesperides-cli is published on Pypi. It can be installed simply with pip:

pip install hesperides-cli

Developper environment installation

After cloning this repo and optionally creating a virtualenv:

pip install -e .

Releasing a new version

With a valid ~/.pypirc:

  1. update CHANGELOG.md
  2. bump version in hesperidescli/hesperidescli.py & git commit & git push
  3. python setup.py sdist
  4. twine upload dist/*
  5. perform a release on GitGub, including the description added to CHANGELOG.md

Usage

hesperides [OPTIONS] COMMAND [ARGS]

To get all hesperides commands, just type:

hesperides

Configure

This client configuration is stored locally in ~/.hesperides/:

To set up your environment and create a local user profile by answering to a few questions:

hesperides set-conf [PROFILE_NAME]

If you have multiple profiles, you can switch between them with:

hesperides use-profile [PROFILE_NAME]

To try your configuration, type one of these commands:

hesperides get-versions
hesperides get-user

Usage with Docker

You can using the following Dockerfile as a starting point:

FROM python:3
RUN pip install hesperides-cli
ARG USERNAME
ARG PASSWORD
RUN hesperides set-conf --username $USERNAME --password $PASSWORD --hesperides-endpoint https://hesperides.example --ignore-ssl-warnings
ENTRYPOINT ["hesperides"]

The resulting Docker image will contain some secret credentials, which is not a good practice, but makes it really easy to use for demos:

docker build --build-arg USERNAME=... --build-arg PASSWORD=... -t hesperides-cli .
docker run --rm hesperides-cli get-versions

If your goal is instead to generate files in your Docker image at startup time, you can start by putting something like this in your ENTRYPOINT:

hesperides write-files --app $APP --ptf $PTF

Exporting properties as environment variables

For this use case, you can use get-properties --export.

Here is an example of usage, that could be included in a Gitlab CD/CI step for instance:

tmp_file=$(mktemp) && hesperides get-properties --app APP --ptf PTF --path '#ROOT#test-module#1.1#WORKINGCOPY' --export > $tmp_file && source $tmp_file && rm $tmp_file

Local files generation with zero calls to the backend API

cf. hesperidescli.local

Warning for Windows bash users

When using this tool with a Python version installed through Windows, in combination with a Linux-like shell environment (e.g. Git Bash), the files generated by write-files may not be written were you expect, because your Python executable will interpret Unix path like /var/tmp as relative to your current drive (C:, D:...).

In this situation, use this command to find out where is the location of your root (/) for Python:

python -c 'import os; os.chdir("/"); print(os.getcwd())'