#!/usr/bin/env groovy

def boardName = "enterprise"
def packages = [
    [packageName: 'bluez-imx', script: 'bluez_imx'],
    [packageName: 'edgetpudemo', script: 'edgetpudemo'],
    [packageName: 'edgetpuvision', script: 'edgetpuvision'],
    [packageName: 'enterprise-testing-tools', script: 'enterprise_testing_tools'],
    [packageName: 'imx-atf', script: 'imx_atf'],
    [packageName: 'imx-board-audio', script: 'imx_board_audio'],
    [packageName: 'imx-board-tools', script: 'imx_board_tools'],
    [packageName: 'imx-board-wlan', script: 'imx_board_wlan'],
    [packageName: 'imx-firmware', script: 'imx_firmware'],
    [packageName: 'imx-gpu-viv', script: 'imx_gpu_viv'],
    [packageName: 'imx-gpu-viv-ko', script: 'imx_gpu_viv_ko'],
    [packageName: 'imx-gst-plugins-bad', script: 'imx_gst_plugins_bad'],
    [packageName: 'imx-gst-plugins-base', script: 'imx_gst_plugins_base'],
    [packageName: 'imx-gst-plugins-good', script: 'imx_gst_plugins_good'],
    [packageName: 'imx-gst1.0-plugin', script: 'imx_gst1.0_plugin'],
    [packageName: 'imx-gstreamer', script: 'imx_gstreamer'],
    [packageName: 'imx-mkimage', script: 'imx_mkimage'],
    [packageName: 'imx-vpu-hantro', script: 'imx_vpu_hantro'],
    [packageName: 'imx-vpuwrap', script: 'imx_vpuwrap'],
    [packageName: 'libdrm-imx', script: 'libdrm_imx'],
    [packageName: 'linux-imx', script: 'linux_imx'],
    [packageName: 'meta-enterprise', script: 'meta_enterprise'],
    [packageName: 'uboot-imx', script: 'uboot_imx'],
    [packageName: 'wayland-protocols-imx', script: 'wayland_protocols_imx'],
    [packageName: 'weston-imx', script: 'weston_imx'],
]

packages.each {
    def packageName = it.packageName
    def script = it.script

    pipelineJob("${boardName}.${packageName}") {
        definition {
            cpsScm {
                scm {
                    git {
                        remote {
                            url('https://coral.googlesource.com/gke-jenkins')
                        }
                        branches('*/master')
                    }
                }

                scriptPath("cicd/pipelines/${boardName}/${script}.jenkins")
            }
        }
    }
}
