diff --git a/bin/symbolic-link b/bin/symbolic-link index a203975..960de1b 100644 --- a/bin/symbolic-link +++ b/bin/symbolic-link @@ -24,5 +24,5 @@ fi if [[ $3 ]]; then expand_symlinks=$3; else expand_symlinks=0; fi -confirm_link=1 +confirm_link=0 link_file "$source_path" "$dest_path" $confirm_link $expand_symlinks diff --git a/script_helpers/file_ops.sh b/script_helpers/file_ops.sh index b2ffc4e..dbef154 100644 --- a/script_helpers/file_ops.sh +++ b/script_helpers/file_ops.sh @@ -145,19 +145,15 @@ link_file() { os_is_windows is_windows os_is_unix is_unix - # @INSTEAD ESCAPE THE SPACES IN THE FINAL WINDOWS PATH - # @INSTEAD ESCAPE THE SPACES IN THE FINAL WINDOWS PATH - # @INSTEAD ESCAPE THE SPACES IN THE FINAL WINDOWS PATH - # @INSTEAD ESCAPE THE SPACES IN THE FINAL WINDOWS PATH - # @INSTEAD ESCAPE THE SPACES IN THE FINAL WINDOWS PATH - # @INSTEAD ESCAPE THE SPACES IN THE FINAL WINDOWS PATH - #https://stackoverflow.com/questions/1473981/how-to-check-if-a-string-has-spaces-in-bash-shell - #https://stackoverflow.com/questions/28256178/how-can-i-match-spaces-with-a-regexp-in-bash + # @INSTEAD ESCAPE THE SPACES IN THE FINAL WINDOWS PATH: + # e.g. path="${path// /\\ }" # Add a backslash before spaces. + # https://stackoverflow.com/questions/1473981/how-to-check-if-a-string-has-spaces-in-bash-shell + # https://stackoverflow.com/questions/28256178/how-can-i-match-spaces-with-a-regexp-in-bash source_has_space=$(path_has_a_space "$source_path") dest_has_space=$(path_has_a_space "$dest_path") - debug=1 + debug=0 if [[ $debug -eq 1 ]]; then echo source path: $source_path echo dest path: $dest_path diff --git a/script_helpers/msvc.sh b/script_helpers/msvc.sh new file mode 100644 index 0000000..5faa076 --- /dev/null +++ b/script_helpers/msvc.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +#--------------------------------------------------------------------------------------------------- +# API +#--------------------------------------------------------------------------------------------------- + +# If you're using msys/mingw shell for compiling then it's possible for its gcc +# link.exe to take precedence over the VC link.exe simply due to the path +# order. We get around this by prefixing all VC tools with the active VC arch +# bin path. +# +# This will only work if the shell ran vcvarsall.bat. + +get_msvc_bin_path() { + declare -n _path=$1 + declare -n _x64_toolset=$2 + + _path="" + _x64_toolset=0 + + if [[ $VisualStudioVersion == "14.0" ]]; then + ########################################## + # Visual Studio 2015 + ########################################## + _path="$VCINSTALLDIR" + + if [[ $(env | grep "LIB=" | grep "x64") != "" ]]; then + printf "${BOLD}${YELLOW}[VS2015 X64]${NORMAL}\n" + _x64_toolset=1 + _path+="bin/amd64" + elif [[ $(env | grep "LIB=" | grep "x86") != "" ]]; then + printf "${BOLD}${YELLOW}[VS2015 X86]${NORMAL}\n" + _path+="bin/" + else + error "Unable to determine if you're using an x86 or x64 MSVC toolset\n" + exit 1 + fi + elif [[ $VisualStudioVersion == "15.0" ]]; then + ########################################## + # Visual Studio 2017 + ########################################## + _path="$VCToolsInstallDir" + + if [[ $VSCMD_ARG_HOST_ARCH == "x64" ]]; then + printf "${BOLD}${YELLOW}[VS2017 X64]${NORMAL}\n" + _x64_toolset=1 + _path+="bin/Hostx64/x64" + elif [[ $VSCMD_ARG_HOST_ARCH == "x86" ]]; then + printf "${BOLD}${YELLOW}[VS2017 X86]${NORMAL}\n" + _path+="bin/Hostx86/x86" + else + error "Unable to determine if you're using an x86 or x64 MSVC toolset\n" + exit 1 + fi + elif [[ $VisualStudioVersion == "16.0" ]]; then + ########################################## + # Visual Studio 2019 + ########################################## + _path="$VCToolsInstallDir" + + if [[ $VSCMD_ARG_HOST_ARCH == "x64" ]]; then + printf "${BOLD}${YELLOW}[VS2019 X64]${NORMAL}\n" + _x64_toolset=1 + _path+="bin/Hostx64/x64" + elif [[ $VSCMD_ARG_HOST_ARCH == "x86" ]]; then + printf "${BOLD}${YELLOW}[VS2019 X86]${NORMAL}\n" + _path+="bin/Hostx86/x86" + else + error "Unable to determine if you're using an x86 or x64 MSVC toolset\n" + exit 1 + fi + else + error "Either you don't have Visual Studio installed or it's not supported by this script.\nFound version '$VisualStudioVersion'\n" + exit 1 + fi + + # Fix up the path + _path="/${_path/:/}" # Remove ':'. + _path="${_path//\\//}" # Remove Windows slashes. + _path="${_path// /\\ }" # Add a backslash before spaces. +} +