Metadata-Version: 2.1
Name: ibek
Version: 0.3
Summary: IOC Builder for EPICS and Kubernetes
Home-page: https://github.com/epics-containers/ibek
Author: Tom Cobb
Author-email: tom.cobb@diamond.ac.uk
License: Apache License 2.0
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Description-Content-Type: text/x-rst
Requires-Dist: typing-extensions
Requires-Dist: apischema (>=0.15)
Requires-Dist: typer
Requires-Dist: ruamel.yaml

ibek
====

|code_ci| |docs_ci| |coverage| |pypi_version| |license|

IOC Builder for EPICS and Kubernetes:

- In an EPICS support module describe what entities an IOC using it can create,
  what arguments they take, and what database and st.cmd snippets it should
  generate in a ``builder.yaml`` file
- Build support modules together in a container image and use ``ibek`` in the
  image to create a JSON schema of what an IOC using that image can contain
- Write an ``ioc.yaml`` file against that schema listing instances of the
  entities with arguments
- Use ``ibek`` to generate a startup script, database and Helm chart that runs
  up the IOC contained in the image with them

============== ==============================================================
PyPI           ``pip install ibek``
Source code    https://github.com/epics-containers/ibek
Documentation  https://epics-containers.github.io/ibek
Changelog      https://github.com/epics-containers/ibek/blob/master/CHANGELOG.rst
============== ==============================================================

TODO
----

This project is incomplete. The following items are still to do:

    - Complete documentation in general

    - Break out Helm Chart generation and boot script generation into two
      separate commands:

      - build-helm will make a helm chart which just has the ioc instance yaml
        in its config folder. This is to be run outside of the container to
        make the helm chart

      - make-boot will generate an ioc.boot from an instance yaml and this
        will run inside the container at ioc startup and hence have access to
        all the needed <support>.ibek.yaml definition files.

      - this will require changes to start.sh to support converting yaml to
        ioc.boot but should also continue to support a native ioc.boot for
        non ibek users.

      - The CI will be responsible for making a schema file from all of the
        <support>.ibek.yaml definition files and publishing it as a repository
        artifact on github. This means that editors will be able to make use
        of the schema for preparing IOC instance entity files.

    - finally support for multiple support definition files is required at
      present the cli only takes a single support definition file. All these
      commands need to support multiple definition files for the whole container.

        - make-script
        - make-helm
        - ioc-schema

    - this will require an additional class to represent a container as a set
      of support modules.

    - Add a diagram and more details. Use draw.io for image, and save as SVG
      with source embed in it, save as something.draw.io.svg

.. |code_ci| image:: https://github.com/epics-containers/ibek/workflows/Code%20CI/badge.svg?branch=master
    :target: https://github.com/epics-containers/ibek/actions?query=workflow%3A%22Code+CI%22
    :alt: Code CI

.. |docs_ci| image:: https://github.com/epics-containers/ibek/workflows/Docs%20CI/badge.svg?branch=master
    :target: https://github.com/epics-containers/ibek/actions?query=workflow%3A%22Docs+CI%22
    :alt: Docs CI

.. |coverage| image:: https://codecov.io/gh/epics-containers/ibek/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/epics-containers/ibek
    :alt: Test Coverage

.. |pypi_version| image:: https://img.shields.io/pypi/v/ibek.svg
    :target: https://pypi.org/project/ibek
    :alt: Latest PyPI version

.. |license| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
    :target: https://opensource.org/licenses/Apache-2.0
    :alt: Apache License

..
    Anything below this line is used when viewing README.rst and will be replaced
    when included in index.rst

See https://epics-containers.github.io/ibek for more detailed documentation.


