Command: add references

Usage

ocm add references [<options>] [<target>] {<referencefile> | <var>=<value>}

Options

      --addenv                 access environment for templating
      --component string       component name
      --dry-run                evaluate and print reference specifications
      --extra <name>=<value>   reference extra identity (default [])
  -F, --file string            target file/directory (default "component-archive")
  -h, --help                   help for references
      --label <name>=<YAML>    reference label (leading * indicates signature relevant, optional version separated by @)
      --name string            reference name
  -O, --output string          output file for dry-run
      --reference YAML         reference meta data (yaml)
  -s, --settings stringArray   settings file with variable settings (yaml)
      --templater string       templater to use (go, none, spiff, subst) (default "subst")
      --version string         reference version

Description

Add aggregation information specified in a reference file to a component version. So far only component archives are supported as target.

This command accepts reference specification files describing the references to add to a component version. Elements must follow the reference meta data description scheme of the component descriptor.

The description file might contain:

  • a single reference
  • a list of references under the key references
  • a list of yaml documents with a single reference or reference list

It is possible to describe a single reference via command line options. The meta data of this element is described by the argument of option –reference, which must be a YAML or JSON string. Alternatively, the name and version can be specified with the options –name and –version. With the option –extra it is possible to add extra identity attributes. Explicitly specified options override values specified by the –reference option. (Note: Go templates are not supported for YAML-based option values. Besides this restriction, the finally composed element description is still processd by the selected templater.)

The component name can be specified with the option –component. Therefore, basic references not requiring any additional labels or extra identities can just be specified by those simple value options without the need for the YAML option.

All yaml/json defined resources can be templated. Variables are specified as regular arguments following the syntax <name>=<value>. Additionally settings can be specified by a yaml file using the –settings option. With the option –addenv environment variables are added to the binding. Values are overwritten in the order environment, settings file, command line settings.

Note: Variable names are case-sensitive.

Example:

<command> <options> -- MY_VAL=test <args>

There are several templaters that can be selected by the –templater option:

  • go go templating supports complex values.

      key:
        subkey: "abc {{.MY_VAL}}"
    
  • none do not do any substitution.

  • spiff spiff templating.

    It supports complex values. the settings are accessible using the binding values.

      key:
        subkey: "abc (( values.MY_VAL ))"
    
  • subst simple value substitution with the drone/envsubst templater.

    It supports string values, only. Complex settings will be json encoded.

      key:
        subkey: "abc ${MY_VAL}"
    

All yaml/json defined resources can be templated. Variables are specified as regular arguments following the syntax <name>=<value>. Additionally settings can be specified by a yaml file using the –settings option. With the option –addenv environment variables are added to the binding. Values are overwritten in the order environment, settings file, command line settings.

Note: Variable names are case-sensitive.

Example:

<command> <options> -- MY_VAL=test <args>

There are several templaters that can be selected by the –templater option:

  • go go templating supports complex values.

      key:
        subkey: "abc {{.MY_VAL}}"
    
  • none do not do any substitution.

  • spiff spiff templating.

    It supports complex values. the settings are accessible using the binding values.

      key:
        subkey: "abc (( values.MY_VAL ))"
    
  • subst simple value substitution with the drone/envsubst templater.

    It supports string values, only. Complex settings will be json encoded.

      key:
        subkey: "abc ${MY_VAL}"
    

Examples


Add a reference directly by options
$ ocm add references --file path/to/ca --name myref --component github.com/my/component --version ${VERSION}

Add a reference by a description file:

*references.yaml*:
---
name: myref
component: github.com/my/component
version: ${VERSION]
$ ocm add references  path/to/ca  references.yaml VERSION=1.0.0

See Also

  • ocm add — Add elements to a component repository or component version