installation-instruction

Library and CLI for generating installation instructions from json schema and jinja templates.

GitHub License PyPI - Version Documentation Status codecov FOSSA Status

Installation

pipx

pipx install installation-instruction

pip

python -m pip install installation-instruction

installation-instruction

(Don’t try at home.)

name: installation-instruction
type: object
properties:
  method:
    enum:
      - pipx
      - pip
----------------------------------
{% if method == "pip" %}
  python -m pip
{% else %}
  pipx
{% endif %}
  install installation-instruction

CLI Usage

Usage: ibi [OPTIONS] COMMAND [ARGS]...

  Library and CLI for generating installation instructions from json schema
  and jinja templates.

Options:
  --version   Show the version and exit.
  -h, --help  Show this message and exit.

Commands:
  install  Installs with config and parameters given.
  show     Shows installation instructions for your specified config file...

Options are dynamically created with the schema part of the config file.

[!TIP] Show help for a config file with: ibi show CONFIG_FILE/FOLDER/GIT_REPO_URL --help.

Config

  • The config is comprised of a single file install.cfg.

  • The config has two parts delimited by ------ (6 or more -).

  • Both parts should be developed in different files for language server support.

Schema

  • The first section of the config is a json-schema.

  • It can be written in JSON or to JSON capabilites restricted YAML.

  • When creating a schema use the following schema draft version: https://json-schema.org/draft/2020-12/schema

  • title are used for pretty print option names.

  • description is used for the options help message.

  • For adding a description and a pretty print name to enum values (for web-installation-instruction):

    1. Indent the schema with the key schema.

    2. Add pretty and description keys.

    3. Create lists like key: Pretty Key.

  • title and description from within the schema overwrite pretty and description outside of the schema.

  • For the package to set the default os to the running system, name the property __os__.

schema:
  name: installation-instruction
  type: object
  properties:
    method:
      enum:
        - pipx
        - pip
pretty:
  pipx: Pipx
  pip: Pip
description:
  pipx: Installs python packages into virtual environments.
  pip: Standard python package manager.

Template

  • You can have as much whitespace and line breaks as you wish in and inbetween your commands.

  • Commands must be seperated by &&! (pip install installation-instruction && pip uninstall installation-instruction.)

  • If you wish to stop the render from within the template you can use the macro raise. ({{ raise("no support!") }}.)

MISC

Please have a look at the examples.

Development installation

If you want to contribute to the development of installation_instruction, we recommend the following editable installation from this repository:

python -m pip install --editable .[tests]

Having done so, the test suite can be run using pytest:

python -m pytest

Contributors

Acknowledgments

This repository was set up using the SSC Cookiecutter for Python Packages.

License Scan

FOSSA Status