#!/bin/bash

print_usage()
{
    cat <<EOF
Usage: $0 [OPTION]...
Prepare the source tree for a release.

Options:
  -u    Prepare for development (undo the release preparation)
EOF
}

# Copyright The Mbed TLS Contributors
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

set -eu

if [ $# -ne 0 ] && [ "$1" = "--help" ]; then
    print_usage
    exit
fi

unrelease= # if non-empty, we're in undo-release mode
while getopts u OPTLET; do
    case $OPTLET in
        u) unrelease=1;;
        \?)
            echo 1>&2 "$0: unknown option: -$OPTLET"
            echo 1>&2 "Try '$0 --help' for more information."
            exit 3;;
    esac
done



#### .gitignore processing ####

GITIGNORES=$(find . -name ".gitignore")
for GITIGNORE in $GITIGNORES; do
    if [ -n "$unrelease" ]; then
        sed -i '/###START_COMMENTED_GENERATED_FILES###/,/###END_COMMENTED_GENERATED_FILES###/s/^# //' $GITIGNORE
        sed -i 's/###START_COMMENTED_GENERATED_FILES###/###START_GENERATED_FILES###/' $GITIGNORE
        sed -i 's/###END_COMMENTED_GENERATED_FILES###/###END_GENERATED_FILES###/' $GITIGNORE
    else
        sed -i '/###START_GENERATED_FILES###/,/###END_GENERATED_FILES###/s/^/# /' $GITIGNORE
        sed -i 's/###START_GENERATED_FILES###/###START_COMMENTED_GENERATED_FILES###/' $GITIGNORE
        sed -i 's/###END_GENERATED_FILES###/###END_COMMENTED_GENERATED_FILES###/' $GITIGNORE
    fi
done



#### Build scripts ####

# GEN_FILES defaults on (non-empty) in development, off (empty) in releases
if [ -n "$unrelease" ]; then
    r=' yes'
else
    r=''
fi
sed -i 's/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1'"$r/" Makefile */Makefile

# GEN_FILES defaults on in development, off in releases
if [ -n "$unrelease" ]; then
    r='ON'
else
    r='OFF'
fi
sed -i '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES  *"[^"]*"  *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1'"$r/" CMakeLists.txt
