# Some version goes here

# Version of schema to pull, will also determine level of yaml-language-schema
version: "some-upstream-repo-for-ruddle@some-api-version"

# The name of the service, used when unfolding ruddle, as well as proving tracing on where logs are coming from
name: "ruddle_base_plan"
# Usually most plugins come from the same registry, as such here we can set a common
implicitProvider: git.front.kjuulh.io

# Plugins / Components, provide either new functionality, or overrides for other plugins.
plugins:

  # ruddle package, comes prepacked with ruddle itself
  # global sets variables that are available to all the other plugins and descendants.
  # They can either be set inline or be used by child packages. If not added to properties, but not required until the root packages.
  ruddle/global@latest:
    # file to look for in child packages for overrides
    file: ruddle.yaml # is default, can be omitted
    # path to look for, for overrides
    path: org
    orgSettings:
    - key: "name"
      required: true # required is default and can be omitted
    - key: "squad"
      required: true
    - key: "domain"
      required: false

  # Vars are only used in scripts, and is meant to be either environment variables mounted directly
  # from existing values, or secrets unwrapped by mozilla/sops
  ruddle/vars@latest:
    path: vars
    vars:
      # when dev is provided as arg, this will be used `. ruddle run vars --features=dev`
      - when: dev
        vars:
          SOME_VARIABLE: SOME_VALUE
      - when: prod
        vars:
          SOME_VARIABLE:
            from_secret:
              sops: ruddle_some_variable

  # Actions are your bread and butter for providing scripts and actions to your descendants
  ruddle/actions@1.0.0:
    path: actions
    dependsOn:
      # Actions usually require an (action-provider) these can be anything between that can execute
      # something, in this case shell or dagger, but could also be python, go, rust or something else entirely.
      - ruddle/shell@1.0.0
      - ruddle/dagger@1.0.0
    # a global path is set for scripts, this means that each script can be implicit and not require specifying a direct path for each of them
    basePath: scripts/
    scripts:
      notify_team:
        description: |
          will send notification on slack
        args:
          - arg: "text"
          - env: "env"
          - env: "slack_secret"
        actions:
          - shell: "send_notification"
      build_service:
        description: |
          some quite long
          description
        args:
          - arg: "version"
        actions:
          - shell: get_cache.sh
          - dagger: download_dependencies
          - dagger: build_service
          - shell: upload_service
          - ruddle: notify_team