90 lines
3.2 KiB
Bash
Executable File
90 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
#Script for automatically exporting the apex application from APEX
|
|
#
|
|
# This script is designed to be run from the top level directory of your project and will break otherwise
|
|
|
|
function legacy_sqlplus_export {
|
|
|
|
if [ -z "${ORACLE_HOME}" ]; then
|
|
echo "Missing environment variable: ORACLE_HOME. Please add the path of your oracle installation to your environment variables under the variable name ORACLE_HOME"; exit 1
|
|
fi
|
|
|
|
if [ -z "${APEX_HOME}" ]; then
|
|
echo "Missing environment variable: APEX_HOME. Please add the path of your apex installation to your environment variables under the variable name APEX_HOME. Note: You should be using APEX version 5 or above"; exit 1
|
|
fi
|
|
|
|
if [ ! -e "${ORACLE_HOME}"/jdbc/lib/ojdbc6.jar ]; then
|
|
echo "Missing ojdbc6.jar: please download from oracle and put in ${ORACLE_HOME}/jdbc/lib directory"; exit 1
|
|
fi
|
|
|
|
if [ ! -e "${APEX_HOME}"/utilities/oracle/apex/APEXExport.class ]; then
|
|
echo "Missing APEXExport class. Please ensure you are using Apex 5 or above and have the APEXExport and APEXExportSplitter classes are in the $APEX_HOME/utilities/oracle/apex/ directory"; exit 1
|
|
fi
|
|
|
|
if [ ! -e "${APEX_HOME}"/utilities/oracle/apex/APEXExportSplitter.class ]; then
|
|
echo "Missing APEXExportSplitter class. Please ensure you are using Apex 5 or above and have the APEXExport and APEXExportSplitter classes are in the $APEX_HOME/utilities/oracle/apex/ directory"; exit 1
|
|
fi
|
|
|
|
source ./config/asc.conf
|
|
|
|
export CLASSPATH="${APEX_HOME}"/utilities:"${ORACLE_HOME}"/jdbc/lib/ojdbc6.jar
|
|
|
|
export_file="f${apexappid}.sql"
|
|
|
|
if [ -d apex/ ]; then
|
|
rm -r apex/
|
|
fi
|
|
if [ -e "${export_file}" ]; then
|
|
rm "${export_file}"
|
|
fi
|
|
|
|
java oracle.apex.APEXExport -db "${database_connection}" -user "${username}" -password "${password}" -applicationid "${apexappid}" -skipExportDate -expOriginalIds #
|
|
|
|
if [ ! 0 -eq "$?" ]; then
|
|
echo "Exit code #: $?. An error has occured while trying to use APEXExport. Please check that your database_connection, username, password, and apexappid variables are all set correctly."; exit 1
|
|
fi
|
|
|
|
java oracle.apex.APEXExportSplitter "${export_file}"
|
|
|
|
if [ ! 0 -eq "$?" ]; then
|
|
echo "Exit code #: $?. An error has occured while trying to use APEXExportSplitter. Please check that your apexappid variable is set correctly and that the application exists in the workspace you are trying to export from"; exit 1
|
|
fi
|
|
|
|
rm "${export_file}"
|
|
}
|
|
|
|
function main {
|
|
if which -s sql; then
|
|
source ./config/asc.conf
|
|
local connect_string="${username}/${password}@${database_connection}"
|
|
echo Using sqlcl to export app ${apexappid}
|
|
export_file="f${apexappid}.sql"
|
|
|
|
if [ -d apex/ ]; then
|
|
rm -r apex/
|
|
fi
|
|
if [ -e "${export_file}" ]; then
|
|
rm "${export_file}"
|
|
fi
|
|
|
|
sql "${connect_string}" @/dev/stdin <<EOF
|
|
apex export -skipExportDate -expOriginalIds -split -splitNoCheckSum -applicationid $apexappid
|
|
EOF
|
|
if [ -e "${export_file}" ]; then
|
|
rm "${export_file}"
|
|
fi
|
|
else
|
|
echo WARNING: Did not find SQLcl. Using legacy APEXExportSplitter instead
|
|
legacy_sqlplus_export
|
|
fi
|
|
|
|
mv "f${apexappid}" apex
|
|
|
|
# fixup install paths. The tool generates absolute paths
|
|
sed -E -i 'bak' 's^@(.*/)?application/^@apex/application/^' apex/install.sql
|
|
}
|
|
|
|
main
|
|
|