blob: 4e9bf91bd5e6eb9821fb06a98b9c067bc7e0a20f [file] [log] [blame] [edit]
#!/bin/sh
#
# cobenv.sh
# Shell script for setting GnuCOBOL Environment
# in MSYS2 MINGW32/MINGW64
#
# Copyright (C) 2017 Free Software Foundation, Inc.
# Written by Simon Sobisch
#
# This file is part of GnuCOBOL.
#
# The GnuCOBOL compiler is free software: you can redistribute it
# and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# GnuCOBOL is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GnuCOBOL. If not, see <https://www.gnu.org/licenses/>.
_ce_help () {
echo
echo "$_ce_myname - set, show, store or restore GnuCOBOL environment"
echo
echo "usage: source $_ce_myextname [options]"
echo " or: . $_ce_myextname [options]"
echo " note: if no option is given $_ce_myname defaults to --setenv"
echo
echo "options:"
echo " --help, -h display this information"
echo " --verbose, -v print the environment variables set / restored"
echo " --quiet, -q don't print anything"
echo " --setenv store current environment and set environment"
echo " according to MSYS2 package structure"
echo " --save store current environment"
echo " --restore restore environment to previous saved point"
echo " --showenv show current environment"
}
_ce_output () {
if test $_ce_verbose -lt 0; then return; fi
if test $_ce_verbose -eq 0; then
echo "$1"
else
echo "$1:"
echo " COB_LIBRARY_PATH=$COB_LIBRARY_PATH"
echo " COB_CONFIG_DIR=$COB_CONFIG_DIR"
echo " COB_COPY_DIR=$COB_COPY_DIR"
fi
}
_ce_save () {
export "_ce_restore_library_path=$COB_LIBRARY_PATH"
export "_ce_restore_config=$COB_CONFIG_DIR"
export "_ce_restore_copy=$COB_COPY_DIR"
if test $_ce_verbose -lt 0; then return; fi
_ce_output "environment saved"
}
_ce_setenv () {
if test $_ce_verbose -ge 0; then
echo "Setup GnuCOBOL environment (MinGW within MSYS2)..."
fi
if test "-z ${_ce_restore_config+x}"; then
_ce_save
else
_ce_restore silent
fi
export "COB_CONFIG_DIR=`cygpath.exe -pw $MINGW_PREFIX/share/gnucobol/config`"
export "COB_COPY_DIR=`cygpath.exe -pw $MINGW_PREFIX/share/gnucobol/copy`"
if test "x$COB_LIBRARY_PATH" != "x"; then
"COB_LIBRARY_PATH=:$COB_LIBRARY_PATH"
fi
export "COB_LIBRARY_PATH=`cygpath.exe -pw $MINGW_PREFIX/lib/gnucobol`$COB_LIBRARY_PATH"
if test $_ce_verbose -lt 0; then return; fi
_ce_output "environment set"
}
_ce_unset_restore () {
unset "_ce_restore_library_path"
unset "_ce_restore_config"
unset "_ce_restore_copy"
}
_ce_restore () {
if test "-z ${_ce_restore_config+x}"; then
if test $_ce_verbose -ge 0; then
echo nothing to restore, environment is cleaned
fi
unset "COB_LIBRARY_PATH"
unset "COB_CONFIG_DIR"
unset "COB_COPY_DIR"
else
export "COB_LIBRARY_PATH=$_ce_restore_library_path"
export "COB_CONFIG_DIR=$_ce_restore_config"
export "COB_COPY_DIR=$_ce_restore_copy"
if test "-z ${1+x}"; then
_ce_output "environment restored"
fi
fi
}
_ce_showenv () {
_ce_verbose=1
_ce_output "current environment"
}
# evaluate options
_ce_myname=cobenv.sh
_ce_myextname=$_ce_myname
if test ${BASH_VERSINFO[0]} -gt 2; then
if test "${BASH_SOURCE[0]}" = "${0}"; then
# if we know that we aren't sourced we can use the external name
_ce_myextname=$0
if test "$1" != "--help" -a "$1" != "-h" -a "$1" != "--showenv"; then
echo "This shell sets the local environment and therefore needs"
echo "to be sourced, consider calling $_ce_myname --help !"
exit 1
fi
fi
fi
_ce_verbose=0
case "$2" in
"--verbose" | "-v") _ce_verbose=1;;
"--quiet" | "-q") _ce_verbose=-1;;
*)
case "$1" in
"--verbose" | "-v") _ce_verbose=1 && shift;;
"--quiet" | "-q") _ce_verbose=-1 && shift;;
esac
;;
esac
case "$1" in
"--restore") _ce_restore && _ce_unset_restore;;
"--save") _ce_save;;
"--help" | "-h") _ce_help;;
"--showenv") _ce_showenv;;
"" | "--setenv") _ce_setenv;;
*)
echo unrecognized or misplaced option "$1"
_ce_help
;;
esac
unset _ce_help _ce_restore _ce_save _ce_setenv _ce_showenv _ce_output