data pipeline
[laserbrain_demo] / tools / prepare_data
1 #!/bin/sh
2
3 indir=datasrc
4 descfile=$indir/datadesc
5 outdir=data
6
7 process()
8 {
9     src_path=$1
10     dst_path=$2
11     op=$3
12
13     cmd=$(echo $op | sed 's/<SRC>/$src_path/g;s/<DST>/$dst_path/g')
14     export src_path
15     export dst_path
16     if ! eval $cmd; then
17                 fname=$(basename $src_path)
18                 echo "Failed to process data file $fname" >&2
19                 echo "Command line was: \"$cmd\""
20                 exit 1
21         fi
22 }
23
24 copy()
25 {
26         src_path=$1
27         dst_path=$2
28
29         if ! cp $src_path $dst_path; then
30                 fname=$(basename $src_path)
31                 echo "Failed to copy data file $fname" >&2
32                 exit 1
33         fi
34 }
35
36 mkdir -p $outdir
37
38 while read line; do
39     line=$(echo $line | sed 's/#.*$//')
40     if [ -n "$line" ]; then
41         path=$(echo $line | awk -F : '{ print $1; }')
42         fname=$(basename $path)
43         op=$(echo $line | awk -F : '{ print $2; }' | xargs)
44
45         if [ "$op" = nop ]; then
46             echo copying $fname
47             mkdir -p $outdir/$(dirname $path)
48             copy $indir/$path $outdir/$path
49         else
50             echo processing $fname
51             mkdir -p $outdir/$(dirname $path)
52             process $indir/$path $outdir/$path "$op"
53         fi
54     fi
55 done <$descfile