Blame view

tools/functions.sh 3.38 KB
c16038356   Anchit Jindal   first commit
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