6 echo "Usage: $(basename $0) [-hyvqcC] [<options>]"
8 echo " -h, --help Display this help"
9 echo " -y, --yes Always assume yes"
10 echo " -v, --verbose Be more verbose"
11 echo " -q, --quiet Be more quiet"
12 echo " -c, --clean Clean build"
13 echo " -C, --vcsclean Clean repo/branch"
16 echo " -f, --config=<file> Read configuration from a file"
17 echo " -s, --source=<rules> Use the specified source ruleset"
18 echo " -b, --build=<rules> Use the specified build ruleset"
19 echo " -r, --report=<rules> Use the specifued report ruleset"
20 echo " -T, --test=<args> Provide test runner arguments"
21 echo " -B, --branch=<branch> Checkout this branch"
22 echo " -D, --directory=<directory> Use this directory as work root"
23 echo " -S, --suffix=<suffix> Append suffix to the build name"
26 echo " type=argument e.g: git=git@github.com:m6w6/btr.git"
27 echo " irc=irc://btr@chat.freenode.org/#btr"
28 echo " mail=\"-c copy@to rcpt@to\""
29 echo " notify-send=\"-u low\""
31 echo " Note though, that some rules do not use any argument."
34 for ruleset
in source build report
36 printf " %10s: %s\n" $ruleset \
37 "$(find "$BTR_LIBDIR/$ruleset" -name '*.mk' -exec basename {} .mk \; | sort | xargs)"
44 function btr-parseopts
{
45 local shortoptions
="hvqycCf:T:B:D:S:s:b:r:"
46 local longoptions
="help,verbose,quiet,yes,clean,vcsclean,config:,test:,branch:,directory:,suffix:,source:,build:,report:"
47 local options
=$
(getopt \
48 --options "$shortoptions" \
49 --longoptions "$longoptions" \
53 if test $?
-ne 0 ; then
57 eval set -- "$options"
108 test -z "$BTR_BRANCH" && BTR_BRANCH
=master
111 test -z "$BTR_BRANCH" && BTR_BRANCH
=trunk
114 test -z "$BTR_BRANCH" && BTR_BRANCH
=HEAD
117 BTR_SOURCE_RULES
="$(cut -d= -f1 <<<$2)"
118 BTR_SOURCE_ARGS
="$(cut -s -d= -f2- <<<$2)"
122 BTR_BUILD_RULES
="$(cut -d= -f1 <<<$2)"
123 BTR_BUILD_ARGS
="$(cut -s -d= -f2- <<<$2)"
127 BTR_REPORT_RULES
="$(cut -d= -f1 <<<$2)"
128 BTR_REPORT_ARGS
="$(cut -s -d= -f2- <<<$2)"
144 export -f btr-parseopts
147 if test -z "$BTR_SOURCE_RULES" -o -z "$BTR_BUILD_RULES" -o -z "$BTR_REPORT_RULES"
152 btr-setup-verbosity true
155 export BTR_SOURCE_RULES BTR_BUILD_RULES BTR_REPORT_RULES
156 test -z "$BTR_SOURCE_ARGS" ||
export BTR_SOURCE_ARGS
157 test -z "$BTR_SOURCE_CLEAN" ||
export BTR_SOURCE_CLEAN
158 test -z "$BTR_BUILD_ARGS" ||
export BTR_BUILD_ARGS
159 test -z "$BTR_BUILD_CLEAN" ||
export BTR_BUILD_CLEAN
160 test -z "$BTR_TEST_ARGS" ||
export BTR_TEST_ARGS
161 test -z "$BTR_REPORT_ARGS" ||
export BTR_REPORT_ARGS
162 BTR_REPO
=$
(basename $
(sed -re 's~^.*[/:#]~~' <<<"$BTR_SOURCE_ARGS") .git
)
163 BTR_SAFE_BRANCH
=$
(tr ":/" "_" <<<$
(basename "$BTR_BRANCH"))
164 export BTR_REPO BTR_BRANCH BTR_SAFE_BRANCH
166 if test -z "$BTR_SUFFIX"
168 export BTR_BUILD
="$BTR_REPO@$BTR_SAFE_BRANCH"
170 export BTR_BUILD
="$BTR_REPO@$BTR_SAFE_BRANCH-$BTR_SUFFIX"
173 export BTR_REPO_DIR
="$BTR_REPO"
174 export BTR_BRANCH_DIR
="$BTR_BUILD/checkout"
175 export BTR_BUILD_DIR
="$BTR_BUILD/build"
176 export BTR_LOG_DIR
="$BTR_BUILD/log"
177 export BTR_CONFIG_REPORT
="$BTR_LOG_DIR/config@$DATE.log"
178 export BTR_BUILD_REPORT
="$BTR_LOG_DIR/build@$DATE.log"
179 export BTR_TEST_REPORT
="$BTR_LOG_DIR/test@$DATE.log"
180 export BTR_LAST_REPORT
=$
(basename $
(ls -t "$BTR_RUNDIR/$BTR_LOG_DIR/test@"* 2>/dev
/null |
head -n1) 2>/dev
/null
)
181 export BTR_REPORT
="$BTR_LOG_DIR/report@$DATE.log"
185 function btr-conf-dump
{
186 echo "BTR_QUIET='$BTR_QUIET'"
187 echo "BTR_VERBOSE='$BTR_VEROSE'"
188 echo "BTR_FORCEYES='$BTR_FORCEYES'"
189 echo "BTR_BRANCH='$BTR_BRANCH'"
190 echo "BTR_SUFFIX='$BTR_SUFFIX'"
191 echo "BTR_RUNDIR='$BTR_RUNDIR'"
192 echo "BTR_SOURCE_RULES='$BTR_SOURCE_RULES'"
193 test ${BTR_SOURCE_ARGS+defined} && echo "BTR_SOURCE_ARGS='$BTR_SOURCE_ARGS'"
194 test ${BTR_SOURC_CLEAN+defined} && echo "BTR_SOURCE_CLEAN='$BTR_SOURCE_CLEAN'"
195 echo "BTR_BUILD_RULES='$BTR_BUILD_RULES'"
196 test ${BTR_BUILD_ARGS+defined} && echo "BTR_BUILD_ARGS='$BTR_BUILD_ARGS'"
197 test ${BTR_BUILD_CLEAN+defined} && echo "BTR_BUILD_CLEAN='$BTR_BUILD_CLEAN'"
198 test ${BTR_TEST_ARGS+defined} && echo "BTR_TEST_ARGS='$BTR_TEST_ARGS'"
199 echo "BTR_REPORT_RULES='$BTR_REPORT_RULES'"
200 test ${BTR_REPORT_ARGS+defined} && echo "BTR_REPORT_ARGS='$BTR_REPORT_ARGS'"
202 export -f btr-conf-dump
204 function btr-conf-show
{
206 echo "# Configuration:"
208 echo "BTR_RUNDIR = $BTR_RUNDIR"
209 echo "BTR_BINDIR = $BTR_BINDIR"
210 echo "BTR_LIBDIR = $BTR_LIBDIR"
212 echo "BTR_SOURCE_RULES = $BTR_SOURCE_RULES"
213 echo "BTR_SOURCE_ARGS = $BTR_SOURCE_ARGS"
214 echo "BTR_SOURCE_CLEAN = $BTR_SOURCE_CLEAN"
215 echo "BTR_BUILD_RULES = $BTR_BUILD_RULES"
216 echo "BTR_BUILD_ARGS = $BTR_BUILD_ARGS"
217 echo "BTR_BUILD_CLEAN = $BTR_BUILD_CLEAN"
218 echo "BTR_TEST_ARGS = $BTR_TEST_ARGS"
219 echo "BTR_REPORT_RULES = $BTR_REPORT_RULES"
220 echo "BTR_REPORT_ARGS = $BTR_REPORT_ARGS"
221 echo "BTR_REPO = $BTR_REPO"
222 echo "BTR_BRANCH = $BTR_BRANCH"
223 echo "BTR_SAFE_BRANCH = $BTR_SAFE_BRANCH"
224 echo "BTR_BUILD = $BTR_BUILD"
226 echo "BTR_REPO_DIR = $BTR_REPO_DIR"
227 echo "BTR_BRANCH_DIR = $BTR_BRANCH_DIR"
228 echo "BTR_BUILD_DIR = $BTR_BUILD_DIR"
229 echo "BTR_LOG_DIR = $BTR_LOG_DIR"
230 echo "BTR_CONFIG_REPORT = $BTR_CONFIG_REPORT"
231 echo "BTR_BUILD_REPORT = $BTR_BUILD_REPORT"
232 echo "BTR_TEST_REPORT = $BTR_TEST_REPORT"
233 echo "BTR_LAST_REPORT = $BTR_LAST_REPORT"
236 export -f btr-conf-show
240 make -e $BTR_SILENT_FLAG -C $BTR_RUNDIR -f $BTR_LIBDIR/source
/$BTR_SOURCE_RULES.mk
241 make -e $BTR_SILENT_FLAG -C $BTR_RUNDIR -f $BTR_LIBDIR/build
/$BTR_BUILD_RULES.mk
242 make -e $BTR_SILENT_FLAG -C $BTR_RUNDIR -f $BTR_LIBDIR/report
/$BTR_REPORT_RULES.mk