# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.

project:
  name: EXT_PROJECT
packages:
  EXT_PACKAGE:
      dependencies:
        ext_lib1_bind:
          location: /_/lib1_package
        ext_lib2_bind:
          location: /_/lib2_package
      triggers:
        trigger_ext1:
        trigger_ext2:
      rules:
        rule_ext1:
          trigger: trigger_ext1
          action: ext_lib1_bind/lib1_greeting1
        rule_ext2:
          trigger: trigger_ext2
          action: ext_lib2_bind/lib2_greeting1
