| #!/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 |