{{ if .Values.pipelines.deployableResources.tasks }}
apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: edp-dotnet
  labels:
    {{- include "edp-tekton.labels" . | nindent 4 }}
  annotations:
    tekton.dev/pipelines.minVersion: "0.12.1"
    tekton.dev/displayName: DotNet
    tekton.dev/categories: Build Tools
    tekton.dev/tags: build-tool
    tekton.dev/platforms: "linux/amd64,linux/s390x,linux/ppc64le"
spec:
  description: >-
   This task builds and tests a .NET project using a specified base image, with support for caching dependencies and running coverage analysis on test projects.

  workspaces:
    - name: source
      description: The workspace consisting of the dotnet project.
  params:
    - name: BASE_IMAGE
      description: DotNet base image.
      type: string
      default: "mcr.microsoft.com/dotnet/sdk:3.1.423-alpine3.16"
    - name: PROJECT_DIR
      description: The directory containing build.gradle
      type: string
      default: "source"
    - name: DOTNET_CACHE
      type: string
      description: name of the secret for the Sonarqube integration
      default: "/workspace/source/cache"
  steps:
    - name: build
      image: $(params.BASE_IMAGE)
      workingDir: $(workspaces.source.path)/$(params.PROJECT_DIR)
      env:
        - name: HOME
          value: $(workspaces.source.path)
        - name: DOTNET_CACHE
          value: $(params.DOTNET_CACHE)
      script: |
        #!/usr/bin/env sh
        set -e
        dotnet restore --packages ${DOTNET_CACHE}
        dotnet build
    - name: test
      image: $(params.BASE_IMAGE)
      workingDir: $(workspaces.source.path)/$(params.PROJECT_DIR)
      env:
        - name: HOME
          value: $(workspaces.source.path)
        - name: DOTNET_CACHE
          value: $(params.DOTNET_CACHE)
      script: |
        #!/usr/bin/env sh
        set -e
        dotnet restore --packages ${DOTNET_CACHE}
        ls *Tests*/*.csproj | while read -r file;
            do dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover "${file}";
        done
{{- include "resources" . | nindent 6 }}
{{ end }}
