#!/usr/bin/env groovy

def boardName = "excelsior"
def packages = [
    [packageName: 'edgetpudemo', script: 'edgetpudemo'],
    [packageName: 'edgetpuvision', script: 'edgetpuvision'],
    [packageName: 'excelsior-bluetooth', script: 'excelsior_bluetooth'],
    [packageName: 'excelsior-bootloader', script: 'excelsior_bootloader'],
    [packageName: 'excelsior-connectivity-fw', script: 'excelsior_connectivity_fw'],
    [packageName: 'excelsior-img-fw', script: 'excelsior_img_fw'],
    [packageName: 'excelsior-nvram', script: 'excelsior_nvram'],
    [packageName: 'excelsior-wlan', script: 'excelsior_wlan'],
    [packageName: 'glmark2', script: 'glmark2'],
    [packageName: 'gst-plugins-bad1.0', script: 'gst_plugins_bad1.0'],
    [packageName: 'gst-plugins-base1.0', script: 'gst_plugins_base1.0'],
    [packageName: 'gst-plugins-good1.0', script: 'gst_plugins_good1.0'],
    [packageName: 'gst-shark', script: 'gst_shark'],
    [packageName: 'gstreamer1.0', script: 'gstreamer1.0'],
    [packageName: 'libdrm', script: 'libdrm'],
    [packageName: 'libmdp-prot', script: 'libmdp_prot'],
    [packageName: 'linux-mtk', script: 'linux_mtk'],
    [packageName: 'lk-bootloader', script: 'lk_bootloader'],
    [packageName: 'mdpd', script: 'mdpd'],
    [packageName: 'mesa-mtk', script: 'mesa_mtk'],
    [packageName: 'meta-excelsior', script: 'meta_excelsior'],
    [packageName: 'mtk-board-audio', script: 'mtk_board_audio'],
    [packageName: 'optee-os', script: 'optee_os'],
    [packageName: 'tf-a', script: 'tf_a'],
    [packageName: 'u-boot', script: 'u_boot'],
    [packageName: 'wayland-protocols-mtk', script: 'wayland_protocols_mtk'],
    [packageName: 'weston-mtk', script: 'weston_mtk'],
]

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")
            }
        }
    }
}
