"Fossies" - the Fresh Open Source Software Archive

Member "pmd-bin-6.19.0/bin/run.sh" (31 Oct 2019, 6042 Bytes) of package /linux/misc/pmd-bin-6.19.0.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 #!/bin/bash
    2 
    3 usage() {
    4     echo "Usage:"
    5     echo "    $(basename $0) <application-name> [-h|-v] ..."
    6     echo ""
    7     echo "application-name: valid options are: $(valid_app_options)"
    8     echo "-h print this help"
    9     echo "-v display PMD's version"
   10 }
   11 
   12 valid_app_options () {
   13     echo "pmd, cpd, cpdgui, designer, bgastviewer, designerold"
   14 }
   15 
   16 is_cygwin() {
   17     case "$(uname)" in
   18         CYGWIN*|MINGW*)
   19             readonly cygwin=true
   20             ;;
   21     esac
   22     # OS specific support.  $var _must_ be set to either true or false.
   23     if [ -z ${cygwin} ] ; then
   24         readonly cygwin=false
   25     fi
   26 }
   27 
   28 cygwin_paths() {
   29     # For Cygwin, switch paths to Windows format before running java
   30     if ${cygwin} ; then
   31         [ -n "${JAVA_HOME}" ] && JAVA_HOME=$(cygpath --windows "${JAVA_HOME}")
   32         [ -n "${JAVAFX_HOME}" ] && JAVAFX_HOME=$(cygpath --windows "${JAVAFX_HOME}")
   33         [ -n "${DIRECTORY}" ] && DIRECTORY=$(cygpath --windows "${DIRECTORY}")
   34         classpath=$(cygpath --path --windows "${classpath}")
   35     fi
   36 }
   37 
   38 convert_cygwin_vars() {
   39     # If cygwin, convert to Unix form before manipulating
   40     if ${cygwin} ; then
   41         [ -n "${JAVA_HOME}" ] && JAVA_HOME=$(cygpath --unix "${JAVA_HOME}")
   42         [ -n "${JAVAFX_HOME}" ] && JAVAFX_HOME=$(cygpath --unix "${JAVAFX_HOME}")
   43         [ -n "${CLASSPATH}" ] && CLASSPATH=$(cygpath --path --unix "${CLASSPATH}")
   44     fi
   45 }
   46 
   47 java_heapsize_settings() {
   48     local heapsize=${HEAPSIZE}
   49     case "${heapsize}" in
   50         [1-9]*[mgMG])
   51             readonly HEAPSIZE="-Xmx${heapsize}"
   52             ;;
   53         '')
   54             ;;
   55         *)
   56             echo "HEAPSIZE '${HEAPSIZE}' unknown (try: 1024m)"
   57             exit 1
   58     esac
   59 }
   60 
   61 
   62 set_lib_dir() {
   63   if [ -z ${LIB_DIR} ]; then
   64     # Allow for symlinks to this script
   65     if [ -L $0 ]; then
   66       local script_real_loc=$(readlink "$0")
   67     else
   68       local script_real_loc=$0
   69     fi
   70     local script_dir=$(dirname "${script_real_loc}")
   71     local cwd="${PWD}"
   72 
   73     cd "${script_dir}/../lib"
   74     readonly LIB_DIR=$(pwd -P)
   75     cd "${cwd}"
   76   fi
   77 }
   78 
   79 check_lib_dir() {
   80   if [ ! -e "${LIB_DIR}" ]; then
   81     echo "The jar directory [${LIB_DIR}] does not exist"
   82   fi
   83 }
   84 
   85 function script_exit() {
   86     echo $1 >&2
   87     exit 1
   88 }
   89 
   90 determine_java_version() {
   91     local full_ver=$(java -version 2>&1)
   92     # java_ver is eg "18" for java 1.8, "90" for java 9.0, "100" for java 10.0.x
   93     readonly java_ver=$(echo $full_ver | sed -n '{
   94         # replace early access versions, e.g. 11-ea with 11.0.0
   95         s/-ea/.0.0/
   96         # replace versions such as 10 with 10.0.0
   97         s/version "\([0-9]\{1,\}\)"/version "\1.0.0"/
   98         # extract the major and minor parts of the version
   99         s/^.* version "\(.*\)\.\(.*\)\..*".*$/\1\2/p
  100     }')
  101     # java_vendor is either java (oracle) or openjdk
  102     readonly java_vendor=$(echo $full_ver | sed -n -e 's/^\(.*\) version .*$/\1/p')
  103 }
  104 
  105 jre_specific_vm_options() {
  106   if [ "${APPNAME}" = "designer" ]
  107   then
  108     options=""
  109 
  110     if [ "$java_ver" -ge 80 ] && [ "$java_ver" -lt 90 ]
  111     then
  112       # no options needed for java8.
  113       options=""
  114     elif [ "$java_ver" -ge 90 ] && [ "$java_ver" -lt 110 ] && [ "$java_vendor" = "java" ]
  115     then
  116       # java9 and java10 from oracle contain javafx as a module
  117       # open internal module of javafx to reflection (for our TreeViewWrapper)
  118       options="--add-opens javafx.controls/javafx.scene.control.skin=ALL-UNNAMED"
  119       # The rest here is for RichtextFX
  120       options+=" --add-opens javafx.graphics/javafx.scene.text=ALL-UNNAMED"
  121       options+=" --add-opens javafx.graphics/com.sun.javafx.scene.text=ALL-UNNAMED"
  122       options+=" --add-opens javafx.graphics/com.sun.javafx.text=ALL-UNNAMED"
  123       options+=" --add-opens javafx.graphics/com.sun.javafx.geom=ALL-UNNAMED"
  124       # Warn of remaining illegal accesses
  125       options+=" --illegal-access=warn"
  126     elif [ "$java_vendor" = "openjdk" ] || ( [ "$java_vendor" = "java" ] && [ "$java_ver" -ge 110 ] )
  127     then
  128       # openjdk and java11 from oracle onwards do not contain javafx directly
  129       # there are no extra options either - javafx will be added to the classpath without modules
  130       options=""
  131     fi
  132 
  133     echo $options
  134   else
  135     echo ""
  136   fi
  137 }
  138 
  139 function add_pmd_classpath() {
  140     if [ -n "$classpath" ]; then
  141         classpath="$classpath:${LIB_DIR}/*"
  142     else
  143         classpath="${LIB_DIR}/*"
  144     fi
  145 }
  146 
  147 function add_openjfx_classpath() {
  148   if [ "${APPNAME}" = "designer" ]
  149   then
  150     if [ "$java_vendor" = "openjdk" ] && [ "$java_ver" -lt 100 ]
  151     then
  152       script_exit "For openjfx at least java 10 is required"
  153     elif [ "$java_vendor" = "openjdk" ] || ( [ "$java_vendor" = "java" ] && [ "$java_ver" -ge 110 ] )
  154     then
  155       # openjfx is required for openjdk builds and oracle java 11 or later
  156       if [ -z "${JAVAFX_HOME}" ]
  157       then
  158         script_exit "The environment variable JAVAFX_HOME is missing."
  159       else
  160         if [ -n "$classpath" ]; then
  161           classpath="$classpath:${JAVAFX_HOME}/lib/*"
  162         else
  163           classpath="${JAVAFX_HOME}/lib/*"
  164         fi
  165       fi
  166     fi
  167   fi
  168 }
  169 
  170 readonly APPNAME="${1}"
  171 if [ -z "${APPNAME}" ]; then
  172     usage
  173     exit 1
  174 fi
  175 shift
  176 
  177 case "${APPNAME}" in
  178   "pmd")
  179     readonly CLASSNAME="net.sourceforge.pmd.PMD"
  180     ;;
  181   "cpd")
  182     readonly CLASSNAME="net.sourceforge.pmd.cpd.CPD"
  183     ;;
  184   "designer")
  185     readonly CLASSNAME="net.sourceforge.pmd.util.fxdesigner.DesignerStarter"
  186     ;;
  187   "designerold")
  188     readonly CLASSNAME="net.sourceforge.pmd.util.designer.Designer"
  189     ;;
  190   "bgastviewer")
  191     readonly CLASSNAME="net.sourceforge.pmd.util.viewer.Viewer"
  192     ;;
  193   "cpdgui")
  194     readonly CLASSNAME="net.sourceforge.pmd.cpd.GUI"
  195     ;;
  196   *)
  197     echo "${APPNAME} is NOT a valid application name, valid options are:$(valid_app_options)"
  198     ;;
  199 esac
  200 
  201 is_cygwin
  202 
  203 set_lib_dir
  204 check_lib_dir
  205 
  206 convert_cygwin_vars
  207 
  208 classpath=$CLASSPATH
  209 
  210 add_pmd_classpath
  211 determine_java_version
  212 add_openjfx_classpath
  213 
  214 cygwin_paths
  215 
  216 java_heapsize_settings
  217 
  218 java ${HEAPSIZE} ${PMD_JAVA_OPTS} $(jre_specific_vm_options) -cp "${classpath}" "${CLASSNAME}" "$@"