CLI reference#

Use ibek --help and ibek <group> <command> --help for the installed version. The complete command reference below is generated from the CLI.

When to run each command#

Phase

Commands

Purpose

Container build

support generate-schema, support apt-install-runtime-packages

Describe support YAML and install declared runtime Debian packages.

Container build

ioc generate-schema, ioc extract-runtime-assets

Describe the image’s available entities and package its runtime files.

Container startup

runtime generate2, runtime place-files, runtime generate-autosave, ioc do-wait

Generate the instance, place its files, prepare autosave, and wait for hardware.

Development container

dev instance, ioc build-docker

Select a checked-out instance; experimentally execute Dockerfile steps.

Outside the IOC container

pattern add/update/check/restore/schema

Maintain runtime support and editor schemas in an instance repository.

These are intended environments, not enforced modes. Schema generation can also run outside a container with explicit input paths. Compiling EPICS modules is handled by the build recipes in ibek-support, not by a general-purpose ibek build command.

Runtime generation#

In an IOC image, the startup script normally runs the equivalent of:

ibek runtime generate2 /epics/ioc/config
ibek runtime place-files /epics/ioc/config
ibek runtime generate-autosave
ibek ioc do-wait

generate2 reads ioc.yaml then runtime.yaml when present in the supplied folder. Repeated --instance / -i options add files before those two; the first file supplies the IOC name and later files append entities. Without --definitions, support definitions are discovered recursively in $EPICS_ROOT/ibek-defs and the config folder. Supplying --definitions replaces that automatic discovery; repeat it for each required file.

Generation recreates the output directory (default /epics/runtime), writing st.cmd, ioc.subst, and any generated auxiliary files. Run place-files after generation: it copies top-level .proto / .protocol files into runtime/protocol, and .db / .template files into runtime/db.

PVI generation is enabled by default; --no-pvi disables it. --output changes the startup/substitution output directory, but does not relocate every runtime or PVI path. See Paths and environment.

The image’s startup script still expands substitutions with EPICS msi and launches the IOC executable. generate2 does not start the IOC. runtime generate remains available for legacy single-file invocations; use generate2 for new scripts.

Schema generation#

The three schema commands have different inputs:

# The format accepted by every *.ibek.support.yaml file
ibek support generate-schema --output ibek.support.schema.json

# IOC entities supplied by explicitly named support definitions
ibek ioc generate-schema --no-ibek-defs motor.ibek.support.yaml \
    --output ibek.ioc.schema.json

# Published image entities plus an instance's local runtime support
ibek pattern schema services/my-ioc

The first two print JSON to stdout when --output is omitted. ioc generate-schema includes definitions directly in /epics/ibek-defs by default; --no-ibek-defs disables that lookup. pattern schema instead uses the published schema for the instance’s image; see Vendor runtime support and Paths and environment for its cache behavior.

Development commands#

ibek dev instance /workspaces/my-services/services/my-ioc

This replaces /epics/ioc/config with a symlink to the instance’s config directory. It removes the previous directory or link, so use it in the development container with the instance configuration kept in version control.

dev support is a placeholder and raises NotImplementedError. ioc build-docker is experimental: it interprets supported Dockerfile steps inside the development container; it is not a substitute for building an image. ioc extract-runtime-assets moves files out of its source tree for speed; run it only in the disposable packaging stage intended by the image build.

Complete command reference#

ibek#

ibek Usage: ibek [OPTIONS] COMMAND [ARGS]... IOC Builder for EPICS and Kubernetes Provides support for building generic EPICS IOC container images and for running IOC instances in a Kubernetes cluster. ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--versionPrint the version of ibek and exit│ │--install-completionInstall completion for the current shell.│ │--show-completionShow completion for the current shell, to copy│ │it or customize the installation.             │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │supportCommands for building support modules during container build       │ │ioc    Commands for building generic IOCs during container build          │ │runtimeCommands for building IOC instance startup files at container      │ │runtime                                                            │ │dev    Commands for working inside Generic IOC development containers     │ │patternCommands for vendoring runtime-support patterns into a services    │ │repo                                                               │ ╰──────────────────────────────────────────────────────────────────────────────╯
ibek Usage: ibek [OPTIONS] COMMAND [ARGS]... IOC Builder for EPICS and Kubernetes Provides support for building generic EPICS IOC container images and for running IOC instances in a Kubernetes cluster. ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--versionPrint the version of ibek and exit│ │--install-completionInstall completion for the current shell.│ │--show-completionShow completion for the current shell, to copy│ │it or customize the installation.             │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │supportCommands for building support modules during container build       │ │ioc    Commands for building generic IOCs during container build          │ │runtimeCommands for building IOC instance startup files at container      │ │runtime                                                            │ │dev    Commands for working inside Generic IOC development containers     │ │patternCommands for vendoring runtime-support patterns into a services    │ │repo                                                               │ ╰──────────────────────────────────────────────────────────────────────────────╯

support#

support Usage: ibek support [OPTIONS] COMMAND [ARGS]... Commands for building support modules during container build ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │apt-install-runtime-packagesInstall packages from the list collected by   │ │calls to add_runtime_packages                 │ │generate-schema             Produce JSON global schema for all            │ │<support_module>.ibek.support.yaml files      │ ╰──────────────────────────────────────────────────────────────────────────────╯
support Usage: ibek support [OPTIONS] COMMAND [ARGS]... Commands for building support modules during container build ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │apt-install-runtime-packagesInstall packages from the list collected by   │ │calls to add_runtime_packages                 │ │generate-schema             Produce JSON global schema for all            │ │<support_module>.ibek.support.yaml files      │ ╰──────────────────────────────────────────────────────────────────────────────╯
apt-install-runtime-packages#
apt-install-runtime-packages Usage: ibek support apt-install-runtime-packages [OPTIONS] Install packages from the list collected by calls to add_runtime_packages ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
apt-install-runtime-packages Usage: ibek support apt-install-runtime-packages [OPTIONS] Install packages from the list collected by calls to add_runtime_packages ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate-schema#
generate-schema Usage: ibek support generate-schema [OPTIONS] Produce JSON global schema for all <support_module>.ibek.support.yaml files ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--output<path>The filename to write the schema to│ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate-schema Usage: ibek support generate-schema [OPTIONS] Produce JSON global schema for all <support_module>.ibek.support.yaml files ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--output<path>The filename to write the schema to│ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯

ioc#

ioc Usage: ibek ioc [OPTIONS] COMMAND [ARGS]... Commands for building generic IOCs during container build ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │build-docker          EXPERIMENTAL: Attempt to interpret the Dockerfile   │ │and run it's commands                               │ │inside the devcontainer. For internal, incremental  │ │builds of the Dockerfile.                           │ │generate-schema       Create a json schema from a number of               │ │support_module.ibek.support.yaml                    │ │files                                               │ │extract-runtime-assetsFind all the runtime assets in an EPICS installation│ │and copy them to a                                  │ │new folder hierarchy for packaging into a container │ │runtime stage.                                      │ │do-wait               Read the YAML list file which includes the devices  │ │to wait for and execute the appropriate wait command│ │for each device type.                               │ │Currently only supports request to wait for         │ │successful connection to a remote socket.           │ │For now, unknown entry types (i.e. not              │ │"ibek.wait_ip") are treated as a non-fatal warning. │ ╰──────────────────────────────────────────────────────────────────────────────╯
ioc Usage: ibek ioc [OPTIONS] COMMAND [ARGS]... Commands for building generic IOCs during container build ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │build-docker          EXPERIMENTAL: Attempt to interpret the Dockerfile   │ │and run it's commands                               │ │inside the devcontainer. For internal, incremental  │ │builds of the Dockerfile.                           │ │generate-schema       Create a json schema from a number of               │ │support_module.ibek.support.yaml                    │ │files                                               │ │extract-runtime-assetsFind all the runtime assets in an EPICS installation│ │and copy them to a                                  │ │new folder hierarchy for packaging into a container │ │runtime stage.                                      │ │do-wait               Read the YAML list file which includes the devices  │ │to wait for and execute the appropriate wait command│ │for each device type.                               │ │Currently only supports request to wait for         │ │successful connection to a remote socket.           │ │For now, unknown entry types (i.e. not              │ │"ibek.wait_ip") are treated as a non-fatal warning. │ ╰──────────────────────────────────────────────────────────────────────────────╯
build-docker#
build-docker Usage: ibek ioc build-docker [OPTIONS] EXPERIMENTAL: Attempt to interpret the Dockerfile and run it's commands inside the devcontainer. For internal, incremental builds of the Dockerfile. Useful for debugging the Dockerfile without having to build the whole container from outside of the IOC devcontainer. ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--start<int>The step to start at in the Dockerfile│ │[default: 1]                          │ │--stop<int>The step to stop at in the Dockerfile│ │[default: 999]                       │ │--dockerfile<path>The filepath to the Dockerfile to build         │ │[default:                                       │ │/home/runner/work/ibek/ibek/Dockerfile]         │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
build-docker Usage: ibek ioc build-docker [OPTIONS] EXPERIMENTAL: Attempt to interpret the Dockerfile and run it's commands inside the devcontainer. For internal, incremental builds of the Dockerfile. Useful for debugging the Dockerfile without having to build the whole container from outside of the IOC devcontainer. ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--start<int>The step to start at in the Dockerfile│ │[default: 1]                          │ │--stop<int>The step to stop at in the Dockerfile│ │[default: 999]                       │ │--dockerfile<path>The filepath to the Dockerfile to build         │ │[default:                                       │ │/home/runner/work/ibek/ibek/Dockerfile]         │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate-schema#
generate-schema Usage: ibek ioc generate-schema [OPTIONS] [definitions]... Create a json schema from a number of support_module.ibek.support.yaml files ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │definitions<path>File paths to one or more support module YAML    │ │files                                            │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--output<path>The file path to the schema file to│ │be written                         │ │--ibek-defs--no-ibek-defsInclude definitions in             │ │/epics/ibek-defs in generated      │ │schema                             │ │[default: ibek-defs]               │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate-schema Usage: ibek ioc generate-schema [OPTIONS] [definitions]... Create a json schema from a number of support_module.ibek.support.yaml files ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │definitions<path>File paths to one or more support module YAML    │ │files                                            │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--output<path>The file path to the schema file to│ │be written                         │ │--ibek-defs--no-ibek-defsInclude definitions in             │ │/epics/ibek-defs in generated      │ │schema                             │ │[default: ibek-defs]               │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
extract-runtime-assets#
extract-runtime-assets Usage: ibek ioc extract-runtime-assets [OPTIONS] {destination} [extras]... Find all the runtime assets in an EPICS installation and copy them to a new  folder hierarchy for packaging into a container runtime stage. This should be performed in a throw away container stage (runtime_prep) as it is destructive of the source folder, because it uses move for speed. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*destination<path>The root folder to extract assets into│ │[required]                            │ │extras     <path>list of files to also extract│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--source<path>The root folder to extract assets    │ │from                                 │ │[default: /epics]                    │ │--defaults--no-defaultscopy the default assets│ │[default: defaults]    │ │--dry-run--no-dry-runshow what would happen│ │[default: no-dry-run] │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
extract-runtime-assets Usage: ibek ioc extract-runtime-assets [OPTIONS] {destination} [extras]... Find all the runtime assets in an EPICS installation and copy them to a new  folder hierarchy for packaging into a container runtime stage. This should be performed in a throw away container stage (runtime_prep) as it is destructive of the source folder, because it uses move for speed. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*destination<path>The root folder to extract assets into│ │[required]                            │ │extras     <path>list of files to also extract│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--source<path>The root folder to extract assets    │ │from                                 │ │[default: /epics]                    │ │--defaults--no-defaultscopy the default assets│ │[default: defaults]    │ │--dry-run--no-dry-runshow what would happen│ │[default: no-dry-run] │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
do-wait#
do-wait Usage: ibek ioc do-wait [OPTIONS] Read the YAML list file which includes the devices to wait for and execute the appropriate wait command for each device type. Currently only supports request to wait for successful connection to a remote socket. For now, unknown entry  types (i.e. not "ibek.wait_ip") are treated as a non-fatal warning. ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--source<path>The YAML file containing the list of wait commands  │ │to execute                                          │ │[default: /epics/runtime/wait_list.yaml]            │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
do-wait Usage: ibek ioc do-wait [OPTIONS] Read the YAML list file which includes the devices to wait for and execute the appropriate wait command for each device type. Currently only supports request to wait for successful connection to a remote socket. For now, unknown entry  types (i.e. not "ibek.wait_ip") are treated as a non-fatal warning. ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--source<path>The YAML file containing the list of wait commands  │ │to execute                                          │ │[default: /epics/runtime/wait_list.yaml]            │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯

runtime#

runtime Usage: ibek runtime [OPTIONS] COMMAND [ARGS]... Commands for building IOC instance startup files at container runtime ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │generate2        An updated version of generate that supports multiple    │ │instance files.                                          │ │This allows a main ioc.yaml with entities from the       │ │generic IOC image and                                    │ │additional runtime.yaml with entities from the services  │ │repository.                                              │ │place-files      Place runtime artifacts (proto / db / ...) from an IOC   │ │instance config                                          │ │folder into their runtime search-path locations for IOC  │ │boot.                                                    │ │generate         LEGACY single-instance generate; superseded by           │ │`generate2`.                                             │ │generate-autosaveGenerate autosave request files from autosave settings   │ │and positions                                            │ │template files found in support module db folders. Allow │ │overrides                                                │ │from ibek-support/* and /epics/ioc/config folders.       │ ╰──────────────────────────────────────────────────────────────────────────────╯
runtime Usage: ibek runtime [OPTIONS] COMMAND [ARGS]... Commands for building IOC instance startup files at container runtime ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │generate2        An updated version of generate that supports multiple    │ │instance files.                                          │ │This allows a main ioc.yaml with entities from the       │ │generic IOC image and                                    │ │additional runtime.yaml with entities from the services  │ │repository.                                              │ │place-files      Place runtime artifacts (proto / db / ...) from an IOC   │ │instance config                                          │ │folder into their runtime search-path locations for IOC  │ │boot.                                                    │ │generate         LEGACY single-instance generate; superseded by           │ │`generate2`.                                             │ │generate-autosaveGenerate autosave request files from autosave settings   │ │and positions                                            │ │template files found in support module db folders. Allow │ │overrides                                                │ │from ibek-support/* and /epics/ioc/config folders.       │ ╰──────────────────────────────────────────────────────────────────────────────╯
generate2#
generate2 Usage: ibek runtime generate2 [OPTIONS] [config_folder] An updated version of generate that supports multiple instance files. This  allows a main ioc.yaml with entities from the generic IOC image and additional runtime.yaml with entities from the services repository. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │config_folder<directory>The IOC instance folder containing entity │ │yaml files                                │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--instance-i<file>Additional IOC instance entity yaml  │ │files                                │ │--definitions<file>The filepath to a support module yaml│ │file                                 │ │--output-o<path>The folder to write the generated    │ │runtime files to                     │ │[default: /epics/runtime]            │ │--pvi--no-pvigenerate pvi PVs and opi files│ │[default: pvi]                │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate2 Usage: ibek runtime generate2 [OPTIONS] [config_folder] An updated version of generate that supports multiple instance files. This  allows a main ioc.yaml with entities from the generic IOC image and additional runtime.yaml with entities from the services repository. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │config_folder<directory>The IOC instance folder containing entity │ │yaml files                                │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--instance-i<file>Additional IOC instance entity yaml  │ │files                                │ │--definitions<file>The filepath to a support module yaml│ │file                                 │ │--output-o<path>The folder to write the generated    │ │runtime files to                     │ │[default: /epics/runtime]            │ │--pvi--no-pvigenerate pvi PVs and opi files│ │[default: pvi]                │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
place-files#
place-files Usage: ibek runtime place-files [OPTIONS] {config_folder} Place runtime artifacts (proto / db / ...) from an IOC instance config folder  into their runtime search-path locations for IOC boot. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*config_folder<directory>The IOC instance config folder         │ │containing runtime artifacts           │ │[required]                             │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
place-files Usage: ibek runtime place-files [OPTIONS] {config_folder} Place runtime artifacts (proto / db / ...) from an IOC instance config folder  into their runtime search-path locations for IOC boot. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*config_folder<directory>The IOC instance config folder         │ │containing runtime artifacts           │ │[required]                             │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate#
generate Usage: ibek runtime generate [OPTIONS] {instance} {definitions}... LEGACY single-instance generate; superseded by `generate2`. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*instance   <path>The filepath to the ioc instance entity file│ │[required]                                  │ │*definitions<path>The filepath to a support module yaml file│ │[required]                                │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--output-o<path>The folder to write the generated runtime │ │files to                                  │ │[default: /epics/runtime]                 │ │--pvi--no-pvigenerate pvi PVs and opi files│ │[default: pvi]                │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate Usage: ibek runtime generate [OPTIONS] {instance} {definitions}... LEGACY single-instance generate; superseded by `generate2`. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*instance   <path>The filepath to the ioc instance entity file│ │[required]                                  │ │*definitions<path>The filepath to a support module yaml file│ │[required]                                │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--output-o<path>The folder to write the generated runtime │ │files to                                  │ │[default: /epics/runtime]                 │ │--pvi--no-pvigenerate pvi PVs and opi files│ │[default: pvi]                │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate-autosave#
generate-autosave Usage: ibek runtime generate-autosave [OPTIONS] [subst_file] Generate autosave request files from autosave settings and positions template  files found in support module db folders. Allow overrides from ibek-support/*  and /epics/ioc/config folders. CONVENTION: req template files must be in the support module db folder after the module is built. The template files must be named with the same stem as the db file that defines the PVs to be saved. The naming convention is: DbTemplateFileStem_positions.req : for autosave stage 0 settings DbTemplateFileStem_settings.req : for autosave stage 1 settings The steps are: 1. at build time "ibek support generate-links" creates symlinks to override    req files in /epics/autosave. These override req files come from individual    ibek-support folders 2. at runtime "ibek runtime generate-autosave" handles the remaining steps: 3. All req files in /epics/support/*/db/ are symlinked to /epics/autosave    except if that req file name already exists (from 1.) 4. All req files in /epics/ioc/config are symlinked to /epics/autosave    overwriting any existing req file (thus supplying instance overrides) 5. AutosaveGenerator generates two substitution files for settings and  positions.    These substitution files are the same as ioc.db except that they contain    the file names of the req templates instead of the db files. If ioc.db    contains a database template that has no corresponding req template, then    that line is omitted from the new substitution file. 6. Two req files are generated from the two substitution files using MSI. Where the database template has a full path, this will be stripped in substitution files created in step 5. At runtime autosave will be pointed at the /epics/autosave folder for its search path. There is an issue with name collisions that we will address if this ever arises. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │subst_file<path>[default: /epics/runtime/ioc.subst]│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
generate-autosave Usage: ibek runtime generate-autosave [OPTIONS] [subst_file] Generate autosave request files from autosave settings and positions template  files found in support module db folders. Allow overrides from ibek-support/*  and /epics/ioc/config folders. CONVENTION: req template files must be in the support module db folder after the module is built. The template files must be named with the same stem as the db file that defines the PVs to be saved. The naming convention is: DbTemplateFileStem_positions.req : for autosave stage 0 settings DbTemplateFileStem_settings.req : for autosave stage 1 settings The steps are: 1. at build time "ibek support generate-links" creates symlinks to override    req files in /epics/autosave. These override req files come from individual    ibek-support folders 2. at runtime "ibek runtime generate-autosave" handles the remaining steps: 3. All req files in /epics/support/*/db/ are symlinked to /epics/autosave    except if that req file name already exists (from 1.) 4. All req files in /epics/ioc/config are symlinked to /epics/autosave    overwriting any existing req file (thus supplying instance overrides) 5. AutosaveGenerator generates two substitution files for settings and  positions.    These substitution files are the same as ioc.db except that they contain    the file names of the req templates instead of the db files. If ioc.db    contains a database template that has no corresponding req template, then    that line is omitted from the new substitution file. 6. Two req files are generated from the two substitution files using MSI. Where the database template has a full path, this will be stripped in substitution files created in step 5. At runtime autosave will be pointed at the /epics/autosave folder for its search path. There is an issue with name collisions that we will address if this ever arises. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │subst_file<path>[default: /epics/runtime/ioc.subst]│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯

dev#

dev Usage: ibek dev [OPTIONS] COMMAND [ARGS]... Commands for working inside Generic IOC development containers ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │instanceSymlink an IOC instance config folder into /epics/ioc/config.     │ │support enable a support module for development.                          │ ╰──────────────────────────────────────────────────────────────────────────────╯
dev Usage: ibek dev [OPTIONS] COMMAND [ARGS]... Commands for working inside Generic IOC development containers ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │instanceSymlink an IOC instance config folder into /epics/ioc/config.     │ │support enable a support module for development.                          │ ╰──────────────────────────────────────────────────────────────────────────────╯
instance#
instance Usage: ibek dev instance [OPTIONS] {instance} Symlink an IOC instance config folder into /epics/ioc/config. Used in the devcontainer to allow the IOC instance to be run using /epics/ioc/starts.sh. Changes made to the config will be immediately available and also under version control. e.g. if instance is /workspaces/bl38p/iocs/bl38p-mo-panda-01 then we need: - /epics/ioc/config -> /workspaces/bl38p/iocs/bl38p-mo-panda-01/config ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*instance<directory>The filepath to the ioc instance entity file│ │[required]                                  │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
instance Usage: ibek dev instance [OPTIONS] {instance} Symlink an IOC instance config folder into /epics/ioc/config. Used in the devcontainer to allow the IOC instance to be run using /epics/ioc/starts.sh. Changes made to the config will be immediately available and also under version control. e.g. if instance is /workspaces/bl38p/iocs/bl38p-mo-panda-01 then we need: - /epics/ioc/config -> /workspaces/bl38p/iocs/bl38p-mo-panda-01/config ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*instance<directory>The filepath to the ioc instance entity file│ │[required]                                  │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
support#
support Usage: ibek dev support [OPTIONS] {module} enable a support module for development. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*module<path>The filepath to the support module to work on│ │[required]                                   │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
support Usage: ibek dev support [OPTIONS] {module} enable a support module for development. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*module<path>The filepath to the support module to work on│ │[required]                                   │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯

pattern#

pattern Usage: ibek pattern [OPTIONS] COMMAND [ARGS]... Commands for vendoring runtime-support patterns into a services repo ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │add    Vendor a pattern into a destination: files + runtime-lock.yaml +   │ │schema.                                                            │ │update Re-vendor a pattern to a new pinned version; refresh hashes +      │ │schema.                                                            │ │check  Verify vendored files match runtime-lock.yaml (vendor integrity).  │ │restoreRevert vendored files to the version pinned in runtime-lock.yaml.  │ │schema Generate the instance's ioc.schema.json and rewrite ioc.yaml's     │ │header.                                                            │ ╰──────────────────────────────────────────────────────────────────────────────╯
pattern Usage: ibek pattern [OPTIONS] COMMAND [ARGS]... Commands for vendoring runtime-support patterns into a services repo ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ───────────────────────────────────────────────────────────────────╮ │add    Vendor a pattern into a destination: files + runtime-lock.yaml +   │ │schema.                                                            │ │update Re-vendor a pattern to a new pinned version; refresh hashes +      │ │schema.                                                            │ │check  Verify vendored files match runtime-lock.yaml (vendor integrity).  │ │restoreRevert vendored files to the version pinned in runtime-lock.yaml.  │ │schema Generate the instance's ioc.schema.json and rewrite ioc.yaml's     │ │header.                                                            │ ╰──────────────────────────────────────────────────────────────────────────────╯
add#
add Usage: ibek pattern add [OPTIONS] {name} [dest] Vendor a pattern into a destination: files + runtime-lock.yaml + schema. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*name<str>Pattern reference: name, e.g. │ │ibek-runtime-streamdevice:lakeshore340@1.0.0│ │[required]                                      │ │dest<directory>The destination folder to vendor into (an IOC   │ │instance root)                                  │ │[default: .]                                    │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--source-s<str>Override the library source URI (git URL or local │ │path)                                             │ │--include<str>Also vendor pattern files matching the regex SRC, │ │to DEST (a manifest-style dest). Given as         │ │SRC=DEST; repeatable; recorded in                 │ │runtime-lock.yaml                                 │ │--exclude<str>Do not vendor manifest files matching this regex; │ │repeatable; recorded in runtime-lock.yaml         │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
add Usage: ibek pattern add [OPTIONS] {name} [dest] Vendor a pattern into a destination: files + runtime-lock.yaml + schema. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │*name<str>Pattern reference: name, e.g. │ │ibek-runtime-streamdevice:lakeshore340@1.0.0│ │[required]                                      │ │dest<directory>The destination folder to vendor into (an IOC   │ │instance root)                                  │ │[default: .]                                    │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--source-s<str>Override the library source URI (git URL or local │ │path)                                             │ │--include<str>Also vendor pattern files matching the regex SRC, │ │to DEST (a manifest-style dest). Given as         │ │SRC=DEST; repeatable; recorded in                 │ │runtime-lock.yaml                                 │ │--exclude<str>Do not vendor manifest files matching this regex; │ │repeatable; recorded in runtime-lock.yaml         │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
update#
update Usage: ibek pattern update [OPTIONS] [dest] Re-vendor a pattern to a new pinned version; refresh hashes + schema. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │dest<directory>The destination folder to vendor into (an IOC      │ │instance root)                                     │ │[default: .]                                       │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--name-n<str>Restrict to a single pattern by name (default: all│ │in the lock)                                      │ │--version-v<str>New pinned version to vendor│ │--source-s<str>Override the library source URI (git URL or local │ │path)                                             │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
update Usage: ibek pattern update [OPTIONS] [dest] Re-vendor a pattern to a new pinned version; refresh hashes + schema. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │dest<directory>The destination folder to vendor into (an IOC      │ │instance root)                                     │ │[default: .]                                       │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--name-n<str>Restrict to a single pattern by name (default: all│ │in the lock)                                      │ │--version-v<str>New pinned version to vendor│ │--source-s<str>Override the library source URI (git URL or local │ │path)                                             │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
check#
check Usage: ibek pattern check [OPTIONS] [dest] Verify vendored files match runtime-lock.yaml (vendor integrity). ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │dest<directory>The destination folder to vendor into (an IOC      │ │instance root)                                     │ │[default: .]                                       │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--allow-dirtyDowngrade hash mismatches to warnings (also enabled  │ │by IBEK_ALLOW_DIRTY=1)                               │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
check Usage: ibek pattern check [OPTIONS] [dest] Verify vendored files match runtime-lock.yaml (vendor integrity). ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │dest<directory>The destination folder to vendor into (an IOC      │ │instance root)                                     │ │[default: .]                                       │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--allow-dirtyDowngrade hash mismatches to warnings (also enabled  │ │by IBEK_ALLOW_DIRTY=1)                               │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
restore#
restore Usage: ibek pattern restore [OPTIONS] [dest] Revert vendored files to the version pinned in runtime-lock.yaml. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │dest<directory>The destination folder to vendor into (an IOC      │ │instance root)                                     │ │[default: .]                                       │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--name-n<str>Restrict to a single pattern by name (default: all in│ │the lock)                                            │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
restore Usage: ibek pattern restore [OPTIONS] [dest] Revert vendored files to the version pinned in runtime-lock.yaml. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │dest<directory>The destination folder to vendor into (an IOC      │ │instance root)                                     │ │[default: .]                                       │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--name-n<str>Restrict to a single pattern by name (default: all in│ │the lock)                                            │ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
schema#
schema Usage: ibek pattern schema [OPTIONS] [dest] Generate the instance's ioc.schema.json and rewrite ioc.yaml's header. Fetches the published base schema for the instance's pinned image and merges the instance's vendored / local support entities into it. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │dest<directory>The destination folder to vendor into (an IOC      │ │instance root)                                     │ │[default: .]                                       │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯
schema Usage: ibek pattern schema [OPTIONS] [dest] Generate the instance's ioc.schema.json and rewrite ioc.yaml's header. Fetches the published base schema for the instance's pinned image and merges the instance's vendored / local support entities into it. ╭─ Arguments ──────────────────────────────────────────────────────────────────╮ │dest<directory>The destination folder to vendor into (an IOC      │ │instance root)                                     │ │[default: .]                                       │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ────────────────────────────────────────────────────────────────────╮ │--helpShow this message and exit.│ ╰──────────────────────────────────────────────────────────────────────────────╯