#!/bin/bash -ex

pkg="linux-yandex"
dir=`basename "$PWD"`
dists="xenial"
arch=amd64

#gbp dch --distribution=unstable --urgency=low --ignore-branch
ver=`sed -nE 's#.*\((.*)\).*#\1#p;q' debian/changelog`
tag=v`echo $ver | sed -E 's#~#-#'`

commit() {
stable_ver=`make kernelversion EXTRAVERSION=""`

new_ver=`echo ${stable_ver}-${ver#*-} | perl -pe 's/^((\d*\D+)*)(\d+)(.*)$/$1.($3+1).$4/e'`
new_ver=$new_ver$KERNEL_SUFFUX
[ -n "$KERNEL_VERSION" ] && new_ver=$KERNEL_VERSION
[ ${ver%-*} != ${stable_ver} ] && dch -v ${new_ver} ${stable_ver}
git log ${tag}..HEAD --not v${stable_ver} --reverse --no-merges --pretty=format:'%B%x00' | while IFS= read -r -d '' msg ; do
	dch -v "${new_ver}" -- `echo "$msg" | awk 's == "" && $0 != "" { s=$0 } /Commit [0-9a-f]+ upstream./ { s = s" BACKPORT" }  /^Link: https:\/\/st.yandex-team.ru\//  { s = s" "substr($2, 27)}  END {print s}'`
done
dch -r -D unstable -u low done
ver=${new_ver}
tag=v${ver}
stg new -m "release: ${ver}"
stg refresh debian/changelog
git tag -f -s "${tag}" -m "release: ${ver}"
}

if [ "${ver:0:4}" = "4.9." -o "${ver:0:5}" = "4.14." -o "${ver:0:5}" = "4.19." ] ; then
	dists="xenial"
fi

builder=kernel1
base_dir=/place/build/
tester="kernel2.search.yandex.net"
#tester=kernel-x.man.yp-c.yandex.net

build() {
branch=`git symbolic-ref --short HEAD`
#gitpkg "$branch"
#scp "../deb-packages/${pkg}/${pkg}_${ver}."* ${builder}:

git push -f ${builder}:${base_dir}${dir} ${tag}
ssh ${builder} "cd ${base_dir}${dir} && git checkout -f ${tag} && git clean -fdx && dpkg-source -b ."
#ssh kerenl2 "porto-release yandex-porto_${ver}.dsc"

for dist in $dists ; do
	time ssh ${builder} sudo pbuilder --build --distribution "${dist}" --configfile "/place/pbuilder/pbuilderrc" "${base_dir}${pkg}_${ver}.dsc"
done
}

sign() {
for dist in $dists ; do
	debsign -r ${builder} "/place/pbuilder/${dist}-${arch}/result/${pkg}_${ver}_${arch}.changes"
done
}

check() {
for dist in $dists ; do
	scp ${builder}:/place/pbuilder/${dist}-${arch}/result/linux-{image,headers}-${ver}_${ver}_${arch}.deb ${tester}:
	ssh ${tester} sudo dpkg -i linux-{image,headers}-${ver}_${ver}_${arch}.deb
	ssh ${tester} "sudo kexec-load /boot/vmlinuz-${ver} && sudo reboot"
done
}

publish() {
for dist in $dists ; do
	ssh ${builder} dupload --to "search-kernel" "/place/pbuilder/${dist}-${arch}/result/${pkg}_${ver}_${arch}.changes"
done
git push origin -f ${tag}:${tag}
}

stable() {
	ssh dupload.dist.yandex.ru sudo dmove "search-kernel" "stable" "linux-image-generic" "${ver}" "unstable"
}

case "$1" in
commit) commit;;
build) build;;
sign) sign;;
check) check;;
publish) publish;;
stable) stable;;
all) commit;build;sign;check;;
*) echo "commit|build|check|publish|all" ;;
esac
