exit 1
}
-usage() {
+usage()
+{
echo "Usage: script/release.sh <PRODUCT> <COMMAND>"
echo ""
echo "PRODUCT: ldb, talloc, tevent, tdb, samba-rc, samba-stable"
exit 1
}
-check_args() {
+check_args()
+{
local cmd="$1"
local got_args="$2"
local take_args="$3"
return 0
}
-min_args() {
+min_args()
+{
local cmd="$1"
local got_args="$2"
local min_args="$3"
cmds=""
next_cmd=""
-require_tagname() {
+require_tagname()
+{
min_args "${FUNCNAME}" "$#" "1" || return 1
local cmd="$1"
return 0
}
-cmd_allowed() {
+cmd_allowed()
+{
min_args "${FUNCNAME}" "$#" "2" || return 1
local cmd="$1"
shift 1
return 0
}
-verify_samba_rc() {
+verify_samba_rc()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
test -f VERSION || {
return 0
}
-load_samba_stable_versions() {
+load_samba_stable_versions()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
test -n "${version-}" && {
return 0
}
-verify_samba_stable() {
+verify_samba_stable()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
test -f VERSION || {
return 0
}
-verify_release() {
+verify_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
test -n "${verify_fn}" || {
${verify_fn}
}
-create_release() {
+create_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
echo "Releasing product ${product}"
return 0
}
-patch_release() {
+patch_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
pushd "${TMPDIR}"
tar xfz "${oldpwd}/${oldtagname}.tar.gz"
tar xfz "${oldpwd}/${tagname}.tar.gz"
- diff -Npur "${oldtagname}/" "${tagname}/" > "${patchfile}"
+ diff -Npur "${oldtagname}/" "${tagname}/" >"${patchfile}"
popd
)
CLEANUP_FILES="${CLEANUP_FILES} ${patchfile}"
return 0
}
-whatsnew_release() {
+whatsnew_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
echo "extract ${tagname}.WHATSNEW.txt"
- tar xf ${tagname}.tar.gz --to-stdout ${tagname}/WHATSNEW.txt > ${tagname}.WHATSNEW.txt
+ tar xf ${tagname}.tar.gz --to-stdout ${tagname}/WHATSNEW.txt >${tagname}.WHATSNEW.txt
CLEANUP_FILES="${CLEANUP_FILES} ${tagname}.WHATSNEW.txt"
return 0
}
-check_nopatch() {
+check_nopatch()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
return 0
}
-check_samba_stable() {
+check_samba_stable()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
return 0
}
-check_release() {
+check_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
test -n "${check_fn}" || {
${check_fn}
}
-push_release() {
+push_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
return 0
}
-upload_nopatch() {
+upload_nopatch()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
return 0
}
-upload_samba_stable() {
+upload_samba_stable()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
return 0
}
-upload_release() {
+upload_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
test -n "${upload_fn}" || {
${upload_fn}
}
-announcement_samba_rc() {
+announcement_samba_rc()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.to.txt"
{
echo "samba-announce@lists.samba.org, samba@lists.samba.org, samba-technical@lists.samba.org"
- } > announce.${tagname}.to.txt
+ } >announce.${tagname}.to.txt
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.subject.txt"
{
echo "[Announce] Samba ${version} Available for Download"
- } > announce.${tagname}.subject.txt
+ } >announce.${tagname}.subject.txt
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.mail.txt"
{
echo ""
echo " --Enjoy"
echo " The Samba Team"
- } > announce.${tagname}.mail.txt
+ } >announce.${tagname}.mail.txt
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.mutt-arguments.txt"
{
echo -n "-i announce.${tagname}.mail.txt "
echo -n "-s \"$(cat announce.${tagname}.subject.txt | xargs)\" "
echo -n "$(cat announce.${tagname}.to.txt | xargs)"
- } > announce.${tagname}.mutt-arguments.txt
+ } >announce.${tagname}.mutt-arguments.txt
local headlinefile="posted_news/@UTCTIME@.${version}.headline.html"
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.headline.html"
echo "<!-- BEGIN: ${headlinefile} -->"
echo "<li> @UTCDATE@ <a href=\"${href}\">Samba ${version} Available for Download</a></li>"
echo "<!-- END: ${headlinefile} -->"
- } > announce.${tagname}.headline.html
+ } >announce.${tagname}.headline.html
local bodyfile="posted_news/@UTCTIME@.${version}.body.html"
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.body.html"
echo "See <a href=\"${download_url}${tagname}.WHATSNEW.txt\">the release notes for more info</a>."
echo "</p>"
echo "<!-- END: ${bodyfile} -->"
- } > announce.${tagname}.body.html
+ } >announce.${tagname}.body.html
local webrepo="${TMPDIR}/webrepo"
return 1
}
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.patch.txt"
- git -C "${webrepo}" format-patch --stdout -1 HEAD > announce.${tagname}.patch.txt || {
+ git -C "${webrepo}" format-patch --stdout -1 HEAD >announce.${tagname}.patch.txt || {
return 1
}
echo "NOTICE: you're not done yet! Read the above instructions carefully!"
echo "See: announce.${tagname}.todo.txt"
echo ""
- } > announce.${tagname}.todo.txt
+ } >announce.${tagname}.todo.txt
ls -lart announce.${tagname}.*
return 0
}
-announcement_samba_stable() {
+announcement_samba_stable()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
local patch_url="${download_url}samba/patches/"
echo "extract WHATSNEW.txt"
- tar xf ${tagname}.tar.gz --to-stdout ${tagname}/WHATSNEW.txt > ${TMPDIR}/WHATSNEW.txt
+ tar xf ${tagname}.tar.gz --to-stdout ${tagname}/WHATSNEW.txt >${TMPDIR}/WHATSNEW.txt
local t=""
local oldversion=$(echo "${oldtagname}" | sed -e 's!^samba-!!')
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.to.txt"
{
echo "samba-announce@lists.samba.org, samba@lists.samba.org, samba-technical@lists.samba.org"
- } > announce.${tagname}.to.txt
+ } >announce.${tagname}.to.txt
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.subject.txt"
{
echo "[Announce] Samba ${version} Available for Download"
- } > announce.${tagname}.subject.txt
+ } >announce.${tagname}.subject.txt
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.mail.txt"
{
top=$(cat ${TMPDIR}/WHATSNEW.txt | wc -l)
}
local skip=$(cat ${TMPDIR}/WHATSNEW.txt | grep -n '^[^ ]' | head -1 | cut -d ':' -f1)
- local headlimit=$(expr ${top} - 1 )
+ local headlimit=$(expr ${top} - 1)
local taillimit=$(expr ${headlimit} - \( ${skip} - 1 \))
echo ""
echo ""
echo " --Enjoy"
echo " The Samba Team"
- } > announce.${tagname}.mail.txt
+ } >announce.${tagname}.mail.txt
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.mutt-arguments.txt"
{
echo -n "-i announce.${tagname}.mail.txt "
echo -n "-s \"$(cat announce.${tagname}.subject.txt | xargs)\" "
echo -n "$(cat announce.${tagname}.to.txt | xargs)"
- } > announce.${tagname}.mutt-arguments.txt
+ } >announce.${tagname}.mutt-arguments.txt
local htmlfile="history/${tagname}.html"
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.html"
-e 's!Ü!\Ü!g' \
-e 's!ß!\ß!g' \
-e 's!"!\"!g' \
- -e "s!'!\'!g" \
- | cat
+ -e "s!'!\'!g" |
+ cat
echo "</pre>"
echo "</p>"
echo "</body>"
echo "</html>"
- } > announce.${tagname}.html
+ } >announce.${tagname}.html
local headlinefile="posted_news/@UTCTIME@.${version}.headline.html"
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.headline.html"
echo "<!-- BEGIN: ${headlinefile} -->"
echo "<li> @UTCDATE@ <a href=\"${href}\">Samba ${version} Available for Download</a></li>"
echo "<!-- END: ${headlinefile} -->"
- } > announce.${tagname}.headline.html
+ } >announce.${tagname}.headline.html
local bodyfile="posted_news/@UTCTIME@.${version}.body.html"
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.body.html"
echo "See <a href=\"${history_url}${tagname}.html\">the release notes for more info</a>."
echo "</p>"
echo "<!-- END: ${bodyfile} -->"
- } > announce.${tagname}.body.html
+ } >announce.${tagname}.body.html
local webrepo="${TMPDIR}/webrepo"
return 1
}
CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.patch.txt"
- git -C "${webrepo}" format-patch --stdout -1 HEAD > announce.${tagname}.patch.txt || {
+ git -C "${webrepo}" format-patch --stdout -1 HEAD >announce.${tagname}.patch.txt || {
return 1
}
echo "NOTICE: you're not done yet! Read the above instructions carefully!"
echo "See: announce.${tagname}.todo.txt"
echo ""
- } > announce.${tagname}.todo.txt
+ } >announce.${tagname}.todo.txt
ls -lart announce.${tagname}.*
return 0
}
-announcement_release() {
+announcement_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
test -n "${announcement_fn}" || {
${announcement_fn}
}
-announce_release() {
+announce_release()
+{
check_args "${FUNCNAME}" "$#" "0" || return 1
require_tagname "${FUNCNAME}"
GPG_USER='Samba Library Distribution Key <samba-bugs@samba.org>'
}
- test -z "${GPG_KEYID-}" && {
+ test -z "${GPG_KEYID-}" && {
GPG_KEYID='4793916113084025'
}
GPG_USER='Samba Distribution Verification Key <samba-bugs@samba.org>'
}
- test -z "${GPG_KEYID-}" && {
+ test -z "${GPG_KEYID-}" && {
GPG_KEYID='AA99442FB680B620'
}
GPG_USER='Samba Distribution Verification Key <samba-bugs@samba.org>'
}
- test -z "${GPG_KEYID-}" && {
+ test -z "${GPG_KEYID-}" && {
GPG_KEYID='AA99442FB680B620'
}
GPG_USER='Samba Distribution Verification Key <samba-bugs@samba.org>'
}
- test -z "${GPG_KEYID-}" && {
+ test -z "${GPG_KEYID-}" && {
GPG_KEYID='AA99442FB680B620'
}
usage
echo "Unknown product ${product}"
exit 1
+ ;;
esac
pushd ${srcdir} || {
exit 1
}
-trap_handler() {
+trap_handler()
+{
echo ""
echo "ERROR: cleaning up"
echo ""