@Library('SHS.Platforms') _
def build_docker(dist, release_dir, is_testing, is_debug) {
	def image_from = "${dist.docker.image_basename}"
	def image_name = "${dist.docker.image_basename}-shstk"
	if (is_testing) {
		image_name += "-test"
	}
	if (is_debug) {
		image_from += "-debug"
		image_name += "-debug"
	}

	echo "Build image ${image_name}"
	def args = ""
	for (arg in dist.docker.build_options) {
		args += " --build-arg ${arg.key}=\"${arg.value}\""
	}
	if (env.DOCKER_PREFIX) {
		args += " --build-arg DOCKER_PREFIX=${env.DOCKER_PREFIX}/"
	}
	if (env.BRANCH_NAME) {
		if ("${env.BRANCH_NAME}" != "shstk") {
			args += " --build-arg BRANCH=${env.BRANCH_NAME}"
		}
	}
	args += " --build-arg IMAGE_FROM=${image_from}"
	args += " --build-arg LIBS_BUILD_NUMBER=${env.BUILD_NUMBER}"
	args += " --build-arg JOBS_COUNT=${env.JOBS_COUNT}"
	def shstk_docker = docker.build("${image_name}", "./docker/${dist.docker.directory}-shstk --no-cache ${args}")
	shstk_docker.inside("-v " + release_dir + ":/soft/release") {
		sh 'cp -vf /soft/shstk/release/* /soft/release/ || true'
	}
	return "\n - ${image_name}"
}
properties([
	buildDiscarder(logRotator(numToKeepStr: "2000", artifactNumToKeepStr: "10")),
	parameters([
		booleanParam(name: 'Debug', defaultValue: false, description: 'Build debug version')
	]),	
	copyArtifactPermission('*')
]);
node {
	stage("Download SRC") {
		checkout scm
	}
		
	def currentBranch = "${env.BRANCH_NAME}"
	def is_testing = currentBranch.toLowerCase().contains("test")
	def is_debug = Boolean.valueOf(Debug)

	def pl = new org.SHS.Platforms(this)
	pl.get()
	
	def local_release_dir = 'release'
	if (is_testing) {
		local_release_dir += '-test'
	}

	def rel_dir = sh(script: "pwd", returnStdout: true).trim() + '/' + local_release_dir
	echo "Release to ${rel_dir}"
	sh "rm -rvf ${rel_dir}"
	sh "mkdir -p ${rel_dir}"

	def _msg = "Built images:"
	pl.forEach ({ dist ->
			_msg += build_docker(dist, rel_dir, is_testing, is_debug)
		},
		stageSuffix: "-shstk",
		ondemand: true
	)

	stage("Clean") {
		sh "docker system prune -f"
	}

	archiveArtifacts "${local_release_dir}/*"
	echo "${_msg}"
}

