Browse Source

:hammer: Add convenience bash script for releasing one or multiple modules with one command

Signed-off-by: Alessadro Parisi <alessandro.parisi406@gmail.com>
Alessadro Parisi 2 years ago
parent
commit
3c143da7fa
1 changed files with 93 additions and 0 deletions
  1. 93 0
      scripts/release.sh

+ 93 - 0
scripts/release.sh

@@ -0,0 +1,93 @@
+#!/bin/bash
+set -x
+args=("$@")
+
+function printHelp() {
+  echo 'Shell Script utility to publish the modules of this project to Maven using the Gradle Wrapper'
+  echo 'You can decide what to publish with the following arguments:'
+  echo '  1) all : tells the script to publish all the modules'
+  echo '  2) A list of modules (ex. components, core,...)'
+  echo ''
+  echo 'Options:'
+  echo '-r to also automatically release the artifacts once they are published'
+  echo '-c to clean the project before everything else'
+  echo ''
+  echo ''
+  echo 'Before running this script makes sure that your JAVA_HOME environment variable is set and correct'
+}
+
+function checkArgs() {
+  for var in "${args[@]}"; do
+    if [ "$var" == "$1" ]; then
+      ret="true"
+      return
+    fi
+  done
+  ret="false"
+}
+
+function checkRelease() {
+  local ret=""
+  checkArgs '-r'
+
+  if [ "$ret" == "true" ]; then
+    rel_ret='closeAndReleaseRepository'
+  else
+    rel_ret=''
+  fi
+}
+
+function publishModules() {
+  local rel_ret=""
+  local tmp=""
+
+  checkRelease
+  if [ "$rel_ret" != "" ]; then
+    echo 'Publishing and RELEASING specified modules!'
+  else
+    echo 'Publishing specified modules!'
+  fi
+
+  for var in "${args[@]}"; do
+    tmp=$var # I don't fucking know why, it just works this way
+    if [ "$var" != "all" ] && [ "$var" != "-h" ] && [ "$var" != "-r" ] && [ "$var" != "-c" ]; then
+      ./gradlew "$tmp:publish"
+      if [ "$rel_ret" != "" ]; then
+        ./gradlew "$tmp:closeAndReleaseRepository"
+      fi
+    fi
+  done
+}
+
+function main() {
+  local ret=""
+
+  if [ $# == 0 ]; then
+    echo "No args provided"
+    exit 1
+  else
+    cd ..
+  fi
+
+  checkArgs '-h'
+  if [ "$ret" == "true" ]; then
+    printHelp
+    exit 1
+  fi
+
+  checkArgs '-c'
+  if [ "$ret" == "true" ]; then
+    ./gradlew clean
+  fi
+
+  checkArgs 'all'
+  if [ "$ret" == "true" ]; then
+    checkRelease
+    ./gradlew publish "$rel_ret"
+    exit 0
+  fi
+
+  publishModules
+}
+
+main "$@"