| 1 | #!/usr/bin/env bash
 | 
| 2 | #
 | 
| 3 | # Usage:
 | 
| 4 | #   ./run.sh <function name>
 | 
| 5 | 
 | 
| 6 | set -o nounset
 | 
| 7 | set -o pipefail
 | 
| 8 | set -o errexit
 | 
| 9 | 
 | 
| 10 | boilerplate() {
 | 
| 11 |   local rel_name=${1:-osh/bool_stat}
 | 
| 12 |   local ns=$(basename $rel_name)  # bool_stat
 | 
| 13 | 
 | 
| 14 |   local name="$(echo $rel_name | tr / _)"
 | 
| 15 | 
 | 
| 16 |   local prefix="cpp/$name"  # cpp/core_bool_stat
 | 
| 17 |   echo $prefix
 | 
| 18 | 
 | 
| 19 |   local guard="$(echo $rel_name | tr a-z/ A-Z_)_H"
 | 
| 20 |   echo $guard
 | 
| 21 | 
 | 
| 22 |   cat > $prefix.h <<EOF
 | 
| 23 | // $name.h
 | 
| 24 | 
 | 
| 25 | #ifndef $guard
 | 
| 26 | #define $guard
 | 
| 27 | 
 | 
| 28 | namespace $ns {
 | 
| 29 |  
 | 
| 30 | }  // namespace $ns
 | 
| 31 | 
 | 
| 32 | #endif  // $guard
 | 
| 33 | 
 | 
| 34 | EOF
 | 
| 35 | 
 | 
| 36 |   cat > $prefix.cc <<EOF
 | 
| 37 | // $name.cc
 | 
| 38 | 
 | 
| 39 | #include "$name.h"
 | 
| 40 | 
 | 
| 41 | namespace $ns {
 | 
| 42 | 
 | 
| 43 | // TODO: fill in
 | 
| 44 | 
 | 
| 45 | }  // namespace $ns
 | 
| 46 | EOF
 | 
| 47 | 
 | 
| 48 |   ls -l $prefix.{h,cc}
 | 
| 49 |   echo Wrote $prefix.{h,cc}
 | 
| 50 | 
 | 
| 51 | 
 | 
| 52 | }
 | 
| 53 | 
 | 
| 54 | "$@"
 |