Blame view
tools/functions.sh
3.38 KB
c16038356
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
#!/bin/sh ##################################################################### # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. ##################################################################### # This shell script tries to be as close to POSIX as possible. # external dependencies: # mkdir # tee # git rev-parse # git rebase --continue set -x # Simulate mkdir -p, which isn't POSIX; this is modelled after # 'install', which is what standard unix makefiles tend to use for the # purpose _install_dir() { # POSIX doesn't support the shell 'local' keyword, so simulate # that with () ( IFS="/" set -- $1 while [ $# -gt 0 ]; do [ -d "$1" ] || mkdir "$1" cd "$1" shift done ) } # create the entire directory path. Multiple directories can be given. install_dir() { while [ $# -gt 0 ]; do _install_dir "$1" shift done } # args: # $1: how many loops # $2-$#: command to call thru each loop git_rebase_runner() { install_dir runtime/git-rebase/logs ( set -- runtime/git-rebase/logs/* if [ -e "$1" ]; then rm "$@" fi ) total_loops="$1" cleaner="$2" shift 2 if [ -e runtime/git-rebase/hook.sh ]; then runtime/git-rebase/hook.sh start $total_loops || break fi eval "$cleaner" while [ $total_loops -gt 0 ]; do git_rebase_runner_success=0 total_loops=$(($total_loops - 1)) hash="$(git rev-parse HEAD)" local_log="runtime/git-rebase/logs/$hash.log" [ -e "$local_log" ] && rm "$local_log" # POSIX tee does not support -a, so we have to run everything # inside a single redirection. { if [ -e runtime/git-rebase/hook.sh ]; then runtime/git-rebase/hook.sh pre-run $total_loops || break fi eval "$@" || break eval "$cleaner" || break if [ -e runtime/git-rebase/hook.sh ]; then runtime/git-rebase/hook.sh post-run $total_loops || break fi } 2>&1 | tee "runtime/git-rebase/logs/$hash.log" git rebase --continue || break git_rebase_runner_success=1 done if [ -e runtime/git-rebase/hook.sh ]; then runtime/git-rebase/hook.sh stop $total_loops || break fi # POSIX [ doesn't deal well when one of the arguments is empty; this # could occur if $total_loops = 0. if [ "z$git_rebase_runner_success" = "z0" ]; then eval "$cleaner" while [ $total_loops -gt 0 ]; do total_loops=$(($total_loops - 1)) git rebase --continue done fi } run_ant() { # POSIX [ doesn't deal well when one of the arguments is empty, and # [ doesn't support [ ! if [ "z$USE_LOCAL_ANT" = "z" ]; then ant "$@" else ./ant "$@" fi } standard_cleanup() { run_ant clean-all } install_worker() { run_ant load-demo } fulltestsuite_worker() { run_ant load-demo run_ant run-tests } #git_rebase_runner 3 fulltestsuite_cleanup fulltestsuite_worker |