name: hdf4 dev daily build

# Triggers the workflow on demand or on a call from another workflow
# NOTE: inputs must be duplicated between triggers
on:
  workflow_dispatch:
    inputs:
      use_ignore:
        description: 'Ignore has_changes check'
        type: string
        required: false
        default: check
  workflow_call:
    inputs:
      use_ignore:
        description: 'Ignore has_changes check'
        type: string
        required: false
        default: check

permissions:
  contents: read

jobs:
  get-old-names:
    runs-on: ubuntu-latest
    outputs:
      hdf4-name: ${{ steps.gethdf4base.outputs.HDF4_NAME_BASE }}
      run-ignore: ${{ steps.getinputs.outputs.INPUTS_IGNORE }}

    steps:
    - uses: actions/checkout@v4.1.7

    - name: Get hdf4 release base name
      uses: dsaltares/fetch-gh-release-asset@master
      with:
        version: 'tags/snapshot'
        file: 'last-file.txt'
      continue-on-error: true

    - name: Read base-name file
      id: gethdf4base
      run: echo "HDF4_NAME_BASE=$(cat last-file.txt)" >> $GITHUB_OUTPUT

    - run: echo "hdf4 base name is ${{ steps.gethdf4base.outputs.HDF4_NAME_BASE }}."

    - name: Read inputs
      id: getinputs
      run: |
        echo "INPUTS_IGNORE=${{ inputs.use_ignore }}" >> $GITHUB_OUTPUT

    - run: echo "use_ignore is ${{ steps.getinputs.outputs.INPUTS_IGNORE }}."

  call-workflow-tarball:
    needs: [get-old-names]
    uses: ./.github/workflows/tarball.yml
    with:
      use_ignore: ${{ needs.get-old-names.outputs.run-ignore }}
      use_tag: snapshot
      use_environ: snapshots

  call-release-cmake-cygwin:
    needs: [get-old-names, call-workflow-tarball]
    name: "CMake Cygwin Workflows"
    uses: ./.github/workflows/cygwin-cmake.yml
    with:
      file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
      use_environ: snapshots
    if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) }}

  call-workflow-c-script:
    needs: [get-old-names, call-workflow-tarball]
    uses: ./.github/workflows/cmake-script.yml
    with:
      file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
      use_environ: snapshots
    if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) }}

  call-workflow-sanitizers:
    needs: [get-old-names, call-workflow-tarball]
    uses: ./.github/workflows/cmake-analysis.yml
    with:
      file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
      use_environ: snapshots
    if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) }}

  call-workflow-ctest:
    needs: [get-old-names, call-workflow-tarball]
    uses: ./.github/workflows/cmake-ctest.yml
    with:
      preset_name: ci-StdShar
      file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
#      use_tag: snapshot
      use_environ: snapshots
    secrets:
        APPLE_CERTS_BASE64: ${{ secrets.APPLE_CERTS_BASE64 }}
        APPLE_CERTS_BASE64_PASSWD: ${{ secrets.APPLE_CERTS_BASE64_PASSWD }}
        KEYCHAIN_PASSWD: ${{ secrets.KEYCHAIN_PASSWD }}
        AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
        AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
        AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
        AZURE_ENDPOINT: ${{ secrets.AZURE_ENDPOINT }}
        AZURE_CODE_SIGNING_NAME: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
        AZURE_CERT_PROFILE_NAME: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
    if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) }}

  call-workflow-abi:
    needs: [get-old-names, call-workflow-tarball, call-workflow-ctest]
    uses: ./.github/workflows/abi-report.yml
    with:
      file_ref: '4.3.0'
      file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
      use_tag: snapshot
      use_environ: snapshots
    if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) }}

  call-workflow-release:
    needs: [get-old-names, call-workflow-tarball, call-workflow-ctest, call-workflow-abi]
    permissions:
      contents: write # In order to allow tag creation
    uses: ./.github/workflows/release-files.yml
    with:
      file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
      file_branch: ${{ needs.call-workflow-tarball.outputs.file_branch }}
      file_sha: ${{ needs.call-workflow-tarball.outputs.file_sha }}
      use_tag: snapshot
      use_environ: snapshots
    if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) }}

  call-workflow-remove:
    needs: [get-old-names, call-workflow-tarball, call-workflow-ctest, call-workflow-abi, call-workflow-release]
    permissions:
      contents: write # In order to allow file deletion
    uses: ./.github/workflows/remove-files.yml
    with:
      file_base: ${{ needs.get-old-names.outputs.hdf4-name }}
      use_tag: snapshot
      use_environ: snapshots
    if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) && (needs.get-old-names.outputs.hdf4-name != needs.call-workflow-tarball.outputs.file_base) }}

