| #!/bin/bash |
| |
| # Copyright (c) 2011-2014, Intel Corporation |
| # All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without modification, |
| # are permitted provided that the following conditions are met: |
| # |
| # 1. Redistributions of source code must retain the above copyright notice, this |
| # list of conditions and the following disclaimer. |
| # |
| # 2. Redistributions in binary form must reproduce the above copyright notice, |
| # this list of conditions and the following disclaimer in the documentation and/or |
| # other materials provided with the distribution. |
| # |
| # 3. Neither the name of the copyright holder nor the names of its contributors |
| # may be used to endorse or promote products derived from this software without |
| # specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
| # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| |
| # This script generate an xml from a .pfw in an easy and fast way |
| # It only works if you have an parameter running with criterion compatible |
| # with the .pfw |
| |
| set -eu -o pipefail |
| |
| adbShell="adb shell" |
| parameterCommandAccess="eval remote-process localhost 5000" |
| parameter="$adbShell $parameterCommandAccess" |
| |
| tmpfile="/tmp/pfw_commands" |
| target_tmpfile="/data/pfw_commands" |
| |
| |
| adbShellForward () { |
| |
| echo 'echo $?; exit' >> "$1" |
| |
| # Send commands |
| adb push "$1" "$target_tmpfile" |
| $adbShell chmod 700 "$target_tmpfile" |
| |
| $adbShell "$target_tmpfile" | |
| # keep only the -2 line, the output of "echo $?" |
| tee /dev/stderr | tail -2 | sed '1{s/\r//;q}' | |
| # stop if $? != 0 (as of set -e) |
| xargs test 0 -eq 2> /dev/null |
| |
| } |
| |
| function parameterExecute () |
| { |
| echo " \$ $parameter $@" |
| result="$($parameter $@ | sed 's/\r$//')" |
| |
| if [[ "$result" != "Done"* ]]; then |
| echo "$result" |
| return 2 |
| fi |
| return 0 |
| } |
| |
| function log () |
| { |
| echo "$@" >&2 |
| } |
| |
| # Clean tmp file |
| echo > "${tmpfile}" |
| |
| ################# |
| # Configure PFW # |
| ################# |
| |
| echo "setTuningMode on" >> "${tmpfile}" |
| echo "setAutoSync off" >> "${tmpfile}" |
| |
| |
| log "Delete routing domains" |
| for domain in $(parameterExecute listDomains |grep -io '^Routing.[^ ]*') |
| do |
| log "Will delete domain $domain" |
| echo "deleteDomain $domain" >> "${tmpfile}" |
| done |
| |
| ######################### |
| # Generate PFW commands # |
| ######################### |
| |
| log "Generate domain commands from file(s): $*" |
| m4 "$@" \ |
| | $(dirname $0)/PFWScriptGenerator.py --output-kind pfw >> "${tmpfile}" |
| |
| |
| echo "setAutoSync off" >> "${tmpfile}" |
| echo "setTuningMode off" >> "${tmpfile}" |
| |
| sed -i -e':a |
| # look for line finishing with \ |
| /\\$/{ |
| # Delete the last char (\) |
| s/\\$//; |
| # Append the next line and delete the \n separator |
| N; |
| s/\n/ /; |
| # Jump back to the expression beginning |
| ta; |
| }; |
| # delete empty lines; |
| /^$/d |
| # delete leading space |
| s/^ *// |
| # delete multiple spaces |
| s/ */ /g; |
| # Prefix each line with "$parameterCommandAccess |
| '"s/^/$parameterCommandAccess /" \ |
| "${tmpfile}" |
| |
| echo "set -xeu" > "${tmpfile}2" |
| cat "${tmpfile}" >> "${tmpfile}2" |
| |
| log "Execute commands" |
| adbShellForward "${tmpfile}2" |
| |
| |
| ##################### |
| # Generate xml file # |
| ##################### |
| |
| outputFilePath="domains.xml" |
| |
| if test $# -ne 0 |
| then |
| # Output file is the input file with the xml extension |
| outputFilePath="${1%.*}.xml" |
| if test "$outputFilePath" == "$1" |
| then |
| # There is a conflict |
| outputFilePath="${1}.xml" |
| fi |
| fi |
| |
| log "Output file: $outputFilePath" |
| |
| parameter_execute_if_exist () { |
| $parameter help | grep --quiet --word $1 || return $? |
| $parameter $1 | sed 's/\r//' |
| } |
| |
| parameter_execute_if_exist getDomainsWithSettingsXML > "$outputFilePath" || |
| # Fall back on old command |
| parameter_execute_if_exist getDomainsXML > "$outputFilePath" |
| |
| |
| log "The media server PFW domains have been change, please restart it to restore old domains" |