xref: /aosp_15_r20/build/soong/scripts/update_out (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker#! /bin/bash
2*333d2b36SAndroid Build Coastguard Worker# Run given command application and update the contents of a given file.
3*333d2b36SAndroid Build Coastguard Worker# Will not change the file if its contents has not changed.
4*333d2b36SAndroid Build Coastguard Worker[[ $# -gt 1 ]] || { echo "Usage: ${0##*/} FILE COMMAND" >&2; exit 1; }
5*333d2b36SAndroid Build Coastguard Workerset -u
6*333d2b36SAndroid Build Coastguard Workerdeclare -r outfile="$1"
7*333d2b36SAndroid Build Coastguard Workershift
8*333d2b36SAndroid Build Coastguard Workerif [[ ! -f $outfile ]]; then
9*333d2b36SAndroid Build Coastguard Worker	$@ >$outfile
10*333d2b36SAndroid Build Coastguard Worker	exit
11*333d2b36SAndroid Build Coastguard Workerfi
12*333d2b36SAndroid Build Coastguard Worker
13*333d2b36SAndroid Build Coastguard Workerdeclare -r newout=${outfile}.new
14*333d2b36SAndroid Build Coastguard Worker$@ >$newout
15*333d2b36SAndroid Build Coastguard Workerrc=$?
16*333d2b36SAndroid Build Coastguard Workerif cmp -s $newout $outfile; then
17*333d2b36SAndroid Build Coastguard Worker	rm $newout
18*333d2b36SAndroid Build Coastguard Workerelse
19*333d2b36SAndroid Build Coastguard Worker	mv -f $newout $outfile
20*333d2b36SAndroid Build Coastguard Workerfi
21*333d2b36SAndroid Build Coastguard Workerexit $rc
22