github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/soong/scripts/jar-args.sh (about)

     1  #!/bin/bash -e
     2  
     3  # Copyright 2017 Google Inc. All rights reserved.
     4  #
     5  # Licensed under the Apache License, Version 2.0 (the "License");
     6  # you may not use this file except in compliance with the License.
     7  # You may obtain a copy of the License at
     8  #
     9  #     http://www.apache.org/licenses/LICENSE-2.0
    10  #
    11  # Unless required by applicable law or agreed to in writing, software
    12  # distributed under the License is distributed on an "AS IS" BASIS,
    13  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  # See the License for the specific language governing permissions and
    15  # limitations under the License.
    16  
    17  # Script that takes a list of files on stdin and converts it to arguments to jar on stdout
    18  # Usage:
    19  #        find $dir -type f | sort | jar-args.sh $dir > jar_args.txt
    20  #        jar cf out.jar @jar_args.txt
    21  
    22  case $(uname) in
    23    Linux)
    24      extended_re=-r
    25      ;;
    26    Darwin)
    27      extended_re=-E
    28      ;;
    29    *) echo "unknown OS:" $(uname) >&2 && exit 1;;
    30  esac
    31  
    32  if [ "$1" == "--test" ]; then
    33    in=$(mktemp)
    34    expected=$(mktemp)
    35    out=$(mktemp)
    36    cat > $in <<EOF
    37  a
    38  a/b
    39  a/b/'
    40  a/b/"
    41  a/b/\\
    42  a/b/#
    43  a/b/a
    44  EOF
    45    cat > $expected <<EOF
    46  
    47  -C 'a' 'b'
    48  -C 'a' 'b/\\''
    49  -C 'a' 'b/"'
    50  -C 'a' 'b/\\\\'
    51  -C 'a' 'b/#'
    52  -C 'a' 'b/a'
    53  EOF
    54    cat $in | $0 a > $out
    55  
    56    if cmp $out $expected; then
    57      status=0
    58      echo "PASS"
    59    else
    60      status=1
    61      echo "FAIL"
    62      echo "got:"
    63      cat $out
    64      echo "expected:"
    65      cat $expected
    66    fi
    67    rm -f $in $expected $out
    68    exit $status
    69  fi
    70  
    71  # In order, the regexps:
    72  #   - Strip $1/ from the beginning of each line, and everything from lines that just have $1
    73  #   - Escape single and double quotes, '#', ' ', and '\'
    74  #   - Prefix each non-blank line with -C $1
    75  sed ${extended_re} \
    76    -e"s,^$1(/|\$),," \
    77    -e"s,(['\\]),\\\\\1,g" \
    78    -e"s,^(.+),-C '$1' '\1',"