mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-01-08 20:03:14 -08:00
90 lines
2.7 KiB
Bash
90 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Usage
|
|
|
|
if [[ -z "${1}" || "${1}" =~ ^(--help|-h)$ ]]; then tee <<done
|
|
|
|
The MSYS2 Shell Manager 2016.6.22
|
|
Copyright (C) 2016 Renato Silva
|
|
Licensed under public domain
|
|
|
|
Usage: source $(basename "${0}") mingw32|mingw64|msys
|
|
|
|
Switch between shells without restarting MSYS2. This is done by setting the
|
|
MSYSTEM variable and sourcing /etc/profile. For interactive shells,
|
|
~/.bashrc is also sourced.
|
|
|
|
Usage: $(basename "${0}") COMMAND [ARGUMENTS]...
|
|
|
|
Execute native Windows programs with better MSYS2 integration. This is done
|
|
by using winpty to execute the Windows command prompt and commands from
|
|
/mingw32, /mingw64 and the Windows system32 directory, enabling them to work
|
|
better under MinTTY and similar terminals.
|
|
|
|
Usage: $(basename "${0}") DIRECTORY_OR_FILE...
|
|
|
|
Open each specified directory or file using Windows Explorer. This is done
|
|
by running one separate instance per argument, with paths converted to the
|
|
expected backslash format.
|
|
|
|
done
|
|
if [[ "${BASH_SOURCE}" = "${0}" ]]
|
|
then exit 1
|
|
else return 1
|
|
fi
|
|
fi
|
|
|
|
# Argument validation
|
|
|
|
if [[ "${BASH_SOURCE}" != "${0}" && ! "${1}" =~ ^(mingw32|mingw64|ucrt64|clang64|clang32|clangarm64|msys)$ ]]; then
|
|
echo "Unrecognized shell type ${1}"
|
|
return 1
|
|
fi
|
|
|
|
if [[ "${BASH_SOURCE}" = "${0}" && "${1}" =~ ^(mingw32|mingw64|ucrt64|clang64|clang32|clangarm64|msys)$ ]]; then
|
|
echo "Cannot switch to ${1} shell without sourcing"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${BASH_SOURCE}" = "${0}" && -z "$(type -t "${1}")" && ! -e "${1}" ]]; then
|
|
echo "Could not find command ${1}"
|
|
exit 1
|
|
fi
|
|
|
|
# Main section
|
|
|
|
if [[ "${BASH_SOURCE}" != "${0}" ]]; then
|
|
_current_directory="$(pwd)"
|
|
export MSYSTEM="${1^^}"
|
|
source /etc/profile
|
|
[[ "${-}" = *i* && -f ~/.bashrc ]] && source ~/.bashrc
|
|
cd "${_current_directory}"
|
|
unset _current_directory
|
|
return 0
|
|
elif [[ (-f "${1}" && ! -x "${1}") || -d "${1}" ]]; then
|
|
explorer="$(cygpath --windir)/explorer.exe"
|
|
for path in "${@}"; do
|
|
path="$(cygpath --windows "${path}")"
|
|
test -e "${path}" && "${explorer}" "${path}"
|
|
done
|
|
exit 0
|
|
else
|
|
command="$(type -P "${1}")"
|
|
command="${command,,}"
|
|
command="${command%.exe}"
|
|
system32="$(cygpath --windir)/system32"
|
|
system32="${system32,,}"
|
|
case "${command}" in
|
|
"${system32}"/*) winpty "${@}" || exit ;;
|
|
/usr/bin/cmd) winpty "${@}" || exit ;;
|
|
/mingw32/*) winpty "${@}" || exit ;;
|
|
/mingw64/*) winpty "${@}" || exit ;;
|
|
/ucrt64/*) winpty "${@}" || exit ;;
|
|
/clang64/*) winpty "${@}" || exit ;;
|
|
/clang32/*) winpty "${@}" || exit ;;
|
|
/clangarm64/*) winpty "${@}" || exit ;;
|
|
*) "${@}" || exit ;;
|
|
esac
|
|
exit 0
|
|
fi
|