{{- $ctx := dict "helm" . }}
{{- range $name, $app := .Values }}
{{- if and (kindIs "map" $app) $app.enabled ($app.route).enabled }}
{{- $route := $app.route }}
{{- $_ := set $ctx "extraLabels" $route.extraLabels }}
{{- $_ := set $ctx "appKey" $name }}
{{- $fullname := include "vm.plain.fullname" $ctx }}
---
apiVersion: {{ $route.apiVersion | default "gateway.networking.k8s.io/v1" }}
kind: {{ $route.kind | default "HTTPRoute" }}
metadata:
  name: {{ $fullname }}
  namespace: {{ include "vm.namespace" $ }}
  labels: {{ include "vm.labels" $ctx | nindent 4 }}
  {{- with $route.annotations }}
  annotations: {{ tpl (toYaml .) $ | nindent 4 }}
  {{- end }}
spec:
  {{- with $route.parentRefs }}
  parentRefs: {{ toYaml . | nindent 4 }}
  {{- end }}
  {{- with $route.hostnames }}
  hostnames: {{ tpl (toYaml .) $ | nindent 4 }}
  {{- end }}
  rules:
    {{- with $route.extraRules }}
    {{- tpl (toYaml .) $ | nindent 4 }}
    {{- end }}
    - backendRefs:
        - name: {{ $fullname }}
          port: {{ $route.port | default (include "vm.port.from.flag" (dict "flag" ($app.extraArgs).httpListenAddr)) }}
          group: ''
          kind: Service
          weight: 1
      {{- with $route.timeouts }}
      timeouts: {{ toYaml . | nindent 8 }}
      {{- end }}
      {{- with $route.filters }}
      filters: {{ toYaml . | nindent 8 }}
      {{- end }}
      {{- with $route.matches }}
      matches: {{ tpl (toYaml .) $ | nindent 8 }}
      {{- end }}

{{- end }}
{{- end }}
