An open API service indexing awesome lists of open source software.

https://github.com/sncf-connect-tech/hesperides-cli

Command Line Interface for Hesperides
https://github.com/sncf-connect-tech/hesperides-cli

cli hesperides python

Last synced: about 1 year ago
JSON representation

Command Line Interface for Hesperides

Awesome Lists containing this project

README

          

# HESPERIDES CLI

[![TravisCI build Status](https://travis-ci.org/voyages-sncf-technologies/hesperides-cli.svg?branch=master)](https://travis-ci.org/voyages-sncf-technologies/hesperides-cli) [![Coverage Status](https://coveralls.io/repos/github/voyages-sncf-technologies/hesperides-cli/badge.svg?branch=master)](https://coveralls.io/github/voyages-sncf-technologies/hesperides-cli?branch=master) [![Pypi latest version](https://img.shields.io/pypi/v/hesperides-cli.svg)](https://pypi.python.org/pypi/hesperides-cli) [![Supported Python versions](https://img.shields.io/pypi/pyversions/hesperides-cli.svg)](https://pypi.python.org/pypi/hesperides-cli) [![License](https://img.shields.io/pypi/l/hesperides-cli.svg)](https://pypi.python.org/pypi/hesperides-cli)

Python 3 lib & CLI (_Command Line Interface_) for [Hesperides](https://github.com/voyages-sncf-technologies/hesperides)

A changelog is available here: [CHANGELOG.md](CHANGELOG.md)

## Installation

`hesperides-cli` is published on [Pypi](https://pypi.python.org/pypi/hesperides-cli). It can be installed simply with `pip`:

pip install hesperides-cli

### Developper environment installation
After cloning this repo and optionally creating a [virtualenv](https://github.com/berdario/pew):

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](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())'