blob: 3d9c99e5a1279efac8b882e351084eb02913dea6 [file] [log] [blame]
#!/bin/bash -e
# Explicitly unset any pre-existing environment variables to avoid variable collision
unset DRY_RUN
INCREMENT_TITLES="Template:Version/Gecko/release/next \
Template:Version/Gecko/central/current \
Template:Version/Gecko/aurora/current \
Template:Version/Gecko/beta/current \
Template:Version/Gecko/release/current"
B2G_TITLES="Template:B2G_DEV_VERSION"
ESR_TITLES="Template:Version/Gecko/esr/current"
SIX_WEEK_DATE_TITLES="Template:NextReleaseDate"
WIKI_COMMENT="Merge day"
. "$(dirname "${0}")/wiki_functions.sh"
function usage {
echo "Usage: $0 -h"
echo "Usage: $0 -b B2G_VERSION [-e ESR_VERSION] [-d]"
echo
echo " -h: Display help."
echo " -b B2G_VERSION: REQUIRED! New B2G version for mozilla-central. e.g. 2.1"
echo " -e ESR_VERSION: New ESR version (only set this when a new ESR version comes along!)"
echo " -r NEXT_RELEASE_DATE: Next release date YYYY-MM-DD . By default we'll increment 6 weeks."
echo " -d: Dry run; will not make changes, only validates login."
echo "You need to set WIKI_USERNAME and WIKI_PASSWORD in env before running."
}
function increment_wiki_integer {
echo " * Preparing wiki page to include new content..."
old_content=$(cat ${current_content})
expr $old_content + 1 > "${new_content}"
}
function add_six_weeks {
echo " * Preparing wiki page to include new content..."
old_content=$(cat ${current_content})
{
echo '#!/usr/bin/env python'
echo 'import datetime'
echo 'import time'
echo "s = '${old_content}'"
echo 't = time.mktime(datetime.datetime.strptime(s, "%Y-%m-%d").timetuple()) + 3600 * 24 * 7 * 6'
echo 'print datetime.datetime.fromtimestamp(t).strftime("%Y-%m-%d")'
} > "${current_content}"
python "${current_content}" > "${new_content}"
}
echo " * Parsing parameters of $(basename "${0}")..."
# Parse parameters passed to this script
while getopts ":dhb:e:r:" opt; do
case "${opt}" in
d) DRY_RUN=1
;;
h) usage
exit 0
;;
b) B2G_VERSION="${OPTARG}"
;;
e) ESR_VERSION="${OPTARG}"
;;
r) NEXT_RELEASE_DATE="${OPTARG}"
;;
?) echo foo; usage >&2
exit 1
;;
esac
done
DRY_RUN="${DRY_RUN:-0}"
if [ ! -n "${B2G_VERSION}" ]; then
echo "Missing b2g version!"
usage
exit 1
fi
check_wiki_login_env
wiki_login
# Bump b2g version. This is more prone to error, so let's do it first.
for WIKI_TITLE in ${B2G_TITLES}; do
# create some temporary files
current_content="$(mktemp -t current-content.XXXXXXXXXX)"
new_content="$(mktemp -t new-content.XXXXXXXXXX)"
echo " * Retrieving current wiki text of https://wiki.mozilla.org/${WIKI_TITLE}..."
curl -s "https://wiki.mozilla.org/${WIKI_TITLE}?action=raw" >> "${current_content}"
old_content=$(cat ${current_content})
if [ "${old_content}" == "${B2G_VERSION}" ]; then
echo "***** B2g version ${B2G_VERSION} hasn't changed!"
rm "${new_content}"
rm "${current_content}"
continue
fi
echo ${B2G_VERSION} > "${new_content}"
wiki_edit_login
wiki_post
echo " * Deleting temporary files..."
rm "${new_content}"
rm "${current_content}"
done
# Bump esr version.
if [ -n "${ESR_VERSION}" ]; then
for WIKI_TITLE in ${ESR_TITLES}; do
# create some temporary files
current_content="$(mktemp -t current-content.XXXXXXXXXX)"
new_content="$(mktemp -t new-content.XXXXXXXXXX)"
echo " * Retrieving current wiki text of https://wiki.mozilla.org/${WIKI_TITLE}..."
curl -s "https://wiki.mozilla.org/${WIKI_TITLE}?action=raw" >> "${current_content}"
old_content=$(cat ${current_content})
if [ "${old_content}" == "${ESR_VERSION}" ]; then
echo "***** ESR version ${ESR_VERSION} hasn't changed!"
rm "${new_content}"
rm "${current_content}"
continue
fi
echo ${ESR_VERSION} > "${new_content}"
wiki_edit_login
wiki_post
echo " * Deleting temporary files..."
rm "${new_content}"
rm "${current_content}"
done
fi
# Bump next release date.
for WIKI_TITLE in ${SIX_WEEK_DATE_TITLES}; do
# create some temporary files
current_content="$(mktemp -t current-content.XXXXXXXXXX)"
new_content="$(mktemp -t new-content.XXXXXXXXXX)"
echo " * Retrieving current wiki text of https://wiki.mozilla.org/${WIKI_TITLE}..."
curl -s "https://wiki.mozilla.org/${WIKI_TITLE}?action=raw" >> "${current_content}"
old_content=$(cat ${current_content})
if [ -n "${NEXT_RELEASE_DATE}" ]; then
if [ "${old_content}" == "${NEXT_RELEASE_DATE}" ]; then
echo "***** Next release date ${NEXT_RELEASE_DATE} hasn't changed!"
rm "${new_content}"
rm "${current_content}"
continue
fi
echo "huh?"
echo ${NEXT_RELEASE_DATE} > "${new_content}"
else
add_six_weeks
fi
new_date=$(cat "${new_content}")
echo " * New date: ${new_date}"
wiki_edit_login
wiki_post
echo " * Deleting temporary files..."
rm "${new_content}"
rm "${current_content}"
done
# Increment these wiki template numbers!
for WIKI_TITLE in ${INCREMENT_TITLES}; do
# create some temporary files
current_content="$(mktemp -t current-content.XXXXXXXXXX)"
new_content="$(mktemp -t new-content.XXXXXXXXXX)"
echo " * Retrieving current wiki text of https://wiki.mozilla.org/${WIKI_TITLE}..."
curl -s "https://wiki.mozilla.org/${WIKI_TITLE}?action=raw" >> "${current_content}"
increment_wiki_integer
wiki_edit_login
wiki_post
echo " * Deleting temporary files..."
rm "${new_content}"
rm "${current_content}"
done
wiki_logout
rm "${cookie_jar}"
exit "${EXIT_CODE}"