X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Fgenerator%2Fwrapdoze.sh;h=ab0a9998ddd1a8b443d0137b16f0a61bf8d1a017;hb=1777fd6364dbc37344cc1a1040c714e1b96e0deb;hp=99d610ca29018d6b04c6d9c5e946d134abb48784;hpb=46198a8a6081484e0e452a3a47c8bec10f254487;p=feisty_meow.git diff --git a/scripts/generator/wrapdoze.sh b/scripts/generator/wrapdoze.sh old mode 100644 new mode 100755 index 99d610ca..ab0a9998 --- a/scripts/generator/wrapdoze.sh +++ b/scripts/generator/wrapdoze.sh @@ -1,24 +1,77 @@ #!/bin/bash -source "$FEISTY_MEOW_SCRIPTS/core/functions.sh" +source $FEISTY_MEOW_SCRIPTS/core/functions.sh -declare -a commands=() +#hmmm: make this support multiple vars as parameters. +# replaces a specific environment variable with a dos approved equivalent. +function dossify_environment_variable() +{ + local var="$1"; shift -for i in "$@"; do - # we only mess with the command line on windows. - if [ "$OS" == "Windows_NT" ]; then - commands+=($(msys_to_dos_path $i)) - else - commands+=("$i") + old_value="${!var}" + if [[ ! "$old_value" =~ \/cygdrive\/ ]]; then +#echo didnt have a cygdrive in it: $old_value + return 0 +#hmmm: want this to continue in multi parm version. fi -done -# echo commands are now: -# for i in "${commands[@]}"; do -# echo $i -# done + # replace single back-slashes with double ones. + local new_value="$(unix_to_dos_path "${old_value}")" -# now actually run the possibly chewed command. -"${commands[@]}" + # remove any quote characters in the value. + new_value="${new_value//\"/}" +# echo "new value: $var = $new_value" + eval "export $var=\"$new_value\"" +} + +# for a windows build, this will replace any forward slashes +# and other cygwin notation with the appropriate dos style paths. +function dossify_and_run_commands() +{ + if [ "$OS" != "Windows_NT" ]; then + # for non windows, just run the commands straight up. + eval "${@}" + return $? + fi + + # force all slashes to be dossy. +# export SERIOUS_SLASH_TREATMENT=true + + dossify_environment_variable INCLUDE + + declare -a darc_commands=() + + for i in "$@"; do + if [[ "$i" =~ ^-[a-zA-z][/\"].* ]]; then + flag="${i:0:2}" + filename="$(unix_to_dos_path ${i:2})" +#echo "first two chars are $flag" +#echo "last after that are $filename" + recombined="$flag$filename" +#echo combined flag and file is $recombined + darc_commands+=("$recombined") + else + darc_commands+=($(unix_to_dos_path $i)) + fi + done + + declare -a real_commands=() + for i in "${darc_commands[@]}"; do + real_commands+=($(echo $i | sed -e 's/\\/\\\\/g')) + done + + if [ ! -z "$SHELL_DEBUG" ]; then + echo commands are now: + for i in "${real_commands[@]}"; do + echo -n "$i " + done + echo + fi + + # now actually run the chewed command. + cmd /c "${real_commands[@]}" +} + +dossify_and_run_commands "$@"