From a55360312c917f60f5a1b5fb89d0c213c7767e4e Mon Sep 17 00:00:00 2001
From: Allan Blanchard <allan.blanchard@cea.fr>
Date: Mon, 15 May 2023 13:38:00 +0200
Subject: [PATCH] [release] fix set-version

---
 dev/set-version.sh | 106 ++++++++++++++++++++++++++-------------------
 1 file changed, 62 insertions(+), 44 deletions(-)

diff --git a/dev/set-version.sh b/dev/set-version.sh
index cbf0a4af06f..09f362f28ff 100755
--- a/dev/set-version.sh
+++ b/dev/set-version.sh
@@ -29,13 +29,13 @@ if ! test -f VERSION; then
 fi
 if test -z "$NEXT"; then
   echo "Missing argument. Usage is:"
-  echo "\$ ./dev/set-version.sh <NN.M>"
+  echo "\$ ./dev/set-version.sh [<NN.M>|dev]"
   echo "See the Release Management Documentation for an example."
   exit 2
 fi
 
 # For macOS: use gsed if available, otherwise test if sed is BSD
-if command -v gsed &> /dev/null; then
+if command -v gsed &>/dev/null; then
   SED=gsed
 else
   if sed --version 2>/dev/null | grep -q GNU; then
@@ -46,64 +46,82 @@ else
   fi
 fi
 
-NEXT_MAJOR=$(echo "$NEXT" | $SED -e s/\\\([0-9]*\\\).[0-9]*.*/\\1/)
-NEXT_MINOR=$(echo "$NEXT" | $SED -e s/[0-9]*.\\\([0-9]*\\\).*/\\1/)
-NEXT_CODENAME=$(grep "$NEXT_MAJOR " ./doc/release/periodic-elements.txt | cut -d " " -f2)
-
 CURRENT=$(cat VERSION)
 CURRENT_MAJOR=$(echo "$CURRENT" | $SED -e s/\\\([0-9]*\\\).[0-9]*.*/\\1/)
 CURRENT_MINOR=$(echo "$CURRENT" | $SED -e s/[0-9]*.\\\([0-9]*\\\).*/\\1/)
 CURRENT_CODENAME=$(grep "$CURRENT_MAJOR " ./doc/release/periodic-elements.txt | cut -d " " -f2)
 
-echo "NEXT VERSION is:"
-echo "- MAJOR:    $NEXT_MAJOR"
-echo "- MINOR:    $NEXT_MINOR"
-echo "- CODENAME: $NEXT_CODENAME"
+if [[ $NEXT == "dev" ]]; then
+  echo "Set VERSION to $CURRENT+dev"
+  echo "Continue? [y/N] "
+  read CHOICE
+  case "${CHOICE}" in
+  "Y" | "y") ;;
+  *) exit 1 ;;
+  esac
 
-echo ""
-echo "Continue? [y/N] "
-read CHOICE
-case "${CHOICE}" in
-  "Y"|"y") ;;
+  echo "$CURRENT+dev" >VERSION
+  $SED -i "s/^version: .*/version: \"$CURRENT+dev\"/g" opam
+  $SED -i "s/^version: .*/version: \"$CURRENT+dev\"/g" tools/lint/frama-c-lint.opam
+  $SED -i "s/^version: .*/version: \"$CURRENT+dev\"/g" tools/hdrck/frama-c-hdrck.opam
+else
+  NEXT_MAJOR=$(echo "$NEXT" | $SED -e s/\\\([0-9]*\\\).[0-9]*.*/\\1/)
+  NEXT_MINOR=$(echo "$NEXT" | $SED -e s/[0-9]*.\\\([0-9]*\\\).*/\\1/)
+  NEXT_CODENAME=$(grep "$NEXT_MAJOR " ./doc/release/periodic-elements.txt | cut -d " " -f2)
+
+  echo "NEXT VERSION is:"
+  echo "- MAJOR:    $NEXT_MAJOR"
+  echo "- MINOR:    $NEXT_MINOR"
+  echo "- CODENAME: $NEXT_CODENAME"
+
+  echo ""
+  echo "Continue? [y/N] "
+  read CHOICE
+  case "${CHOICE}" in
+  "Y" | "y") ;;
   *) exit 1 ;;
-esac
+  esac
 
-# Version
+  # Version
 
-echo "$NEXT" > VERSION
-echo "$NEXT_CODENAME" > VERSION_CODENAME
+  echo "$NEXT" >VERSION
+  echo "$NEXT_CODENAME" >VERSION_CODENAME
 
-# Opam file
-$SED -i "s/^version: .*/version: \"$NEXT_MAJOR.$NEXT_MINOR\"/g" opam
-$SED -i "s/\(.*\)$CURRENT_MAJOR.$CURRENT_MINOR-$CURRENT_CODENAME\(.*\)/\1$NEXT_MAJOR.$NEXT_MINOR-$NEXT_CODENAME\2/g" opam
+  # Opam files
+  $SED -i "s/^version: .*/version: \"$NEXT_MAJOR.$NEXT_MINOR\"/g" opam
+  $SED -i "s/\(.*\)$CURRENT_MAJOR.$CURRENT_MINOR-$CURRENT_CODENAME\(.*\)/\1$NEXT_MAJOR.$NEXT_MINOR-$NEXT_CODENAME\2/g" opam
 
-# Changelogs
+  $SED -i "s/^version: .*/version: \"$NEXT_MAJOR.$NEXT_MINOR\"/g" tools/lint/frama-c-lint.opam
+  $SED -i "s/^version: .*/version: \"$NEXT_MAJOR.$NEXT_MINOR\"/g" tools/hdrck/frama-c-hdrck.opam
 
-FC_CL_MSG_FUTURE="Open Source Release <next-release>"
-FC_CL_MSG_NEXT="Open Source Release $NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)"
-FC_CL_LIN="###############################################################################"
+  # Changelogs
 
-$SED -i "s/\($FC_CL_MSG_FUTURE\)/\1\n$FC_CL_LIN\n\n$FC_CL_LIN\n$FC_CL_MSG_NEXT/g" Changelog
+  FC_CL_MSG_FUTURE="Open Source Release <next-release>"
+  FC_CL_MSG_NEXT="Open Source Release $NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)"
+  FC_CL_LIN="###############################################################################"
 
-EA_CL_MSG_FUTURE="Plugin E-ACSL <next-release>"
-EA_CL_MSG_NEXT="Plugin E-ACSL $NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)"
+  $SED -i "s/\($FC_CL_MSG_FUTURE\)/\1\n$FC_CL_LIN\n\n$FC_CL_LIN\n$FC_CL_MSG_NEXT/g" Changelog
 
-$SED -i "s/\($EA_CL_MSG_FUTURE\)/\1\n$FC_CL_LIN\n\n$FC_CL_LIN\n$EA_CL_MSG_NEXT/g" src/plugins/e-acsl/doc/Changelog
+  EA_CL_MSG_FUTURE="Plugin E-ACSL <next-release>"
+  EA_CL_MSG_NEXT="Plugin E-ACSL $NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)"
 
-WP_CL_MSG_FUTURE="Plugin WP <next-release>"
-WP_CL_MSG_NEXT="Plugin WP $NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)"
+  $SED -i "s/\($EA_CL_MSG_FUTURE\)/\1\n$FC_CL_LIN\n\n$FC_CL_LIN\n$EA_CL_MSG_NEXT/g" src/plugins/e-acsl/doc/Changelog
 
-$SED -i "s/\($WP_CL_MSG_FUTURE\)/\1\n$FC_CL_LIN\n\n$FC_CL_LIN\n$WP_CL_MSG_NEXT/g" src/plugins/wp/Changelog
+  WP_CL_MSG_FUTURE="Plugin WP <next-release>"
+  WP_CL_MSG_NEXT="Plugin WP $NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)"
 
-# API doc
-find src -name '*.ml*' -exec $SED -i -e "s/Frama-C+dev/${NEXT}-${NEXT_CODENAME}/gI" '{}' ';'
+  $SED -i "s/\($WP_CL_MSG_FUTURE\)/\1\n$FC_CL_LIN\n\n$FC_CL_LIN\n$WP_CL_MSG_NEXT/g" src/plugins/wp/Changelog
 
-# Manuals changes
-$SED -i "s/\(^\\\\section\*{Frama-C+dev}\)/%\1\n\n\\\\section\*{$NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)}/g" \
-  doc/userman/user-changes.tex
-$SED -i "s/\(^\\\\section\*{Frama-C+dev}\)/%\1\n\n\\\\section\*{$NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)}/g" \
-  doc/developer/changes.tex
-$SED -i "s/\(^\\\\subsection{Frama-C+dev}\)/%\1\n\n\\\\subsection{Frama-C $NEXT_CODENAME}/g" \
-  doc/aorai/main.tex
-$SED -i "s/\(^\\\\section\*{E-ACSL \\\\eacslpluginversion \\\\eacslplugincodename}\)/%\1\n\n\\\\section\*{E-ACSL $NEXT_MAJOR.$NEXT_MINOR $NEXT_CODENAME}/g" \
-  src/plugins/e-acsl/doc/userman/changes.tex
+  # API doc
+  find src -name '*.ml*' -exec $SED -i -e "s/Frama-C+dev/${NEXT}-${NEXT_CODENAME}/gI" '{}' ';'
+
+  # Manuals changes
+  $SED -i "s/\(^\\\\section\*{Frama-C+dev}\)/%\1\n\n\\\\section\*{$NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)}/g" \
+    doc/userman/user-changes.tex
+  $SED -i "s/\(^\\\\section\*{Frama-C+dev}\)/%\1\n\n\\\\section\*{$NEXT_MAJOR.$NEXT_MINOR ($NEXT_CODENAME)}/g" \
+    doc/developer/changes.tex
+  $SED -i "s/\(^\\\\subsection{Frama-C+dev}\)/%\1\n\n\\\\subsection{Frama-C $NEXT_CODENAME}/g" \
+    doc/aorai/main.tex
+  $SED -i "s/\(^\\\\section\*{E-ACSL \\\\eacslpluginversion \\\\eacslplugincodename}\)/%\1\n\n\\\\section\*{E-ACSL $NEXT_MAJOR.$NEXT_MINOR $NEXT_CODENAME}/g" \
+    src/plugins/e-acsl/doc/userman/changes.tex
+fi
-- 
GitLab