|  | @@ -34,6 +34,13 @@
 | 
	
		
			
				|  |  |  #   tools/codegen/core/gen_nano_proto.sh \
 | 
	
		
			
				|  |  |  #     src/proto/grpc/lb/v0/load_balancer.proto
 | 
	
		
			
				|  |  |  #     $PWD/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0
 | 
	
		
			
				|  |  | +#
 | 
	
		
			
				|  |  | +# Exit statuses:
 | 
	
		
			
				|  |  | +# 1: Incorrect number of arguments
 | 
	
		
			
				|  |  | +# 2: Input proto file (1st argument) doesn't exist or is not a regular file.
 | 
	
		
			
				|  |  | +# 3: Options file for nanopb not found in same dir as the input proto file.
 | 
	
		
			
				|  |  | +# 4: Output dir not an absolute path.
 | 
	
		
			
				|  |  | +# 5: Couldn't create output directory (2nd argument).
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  read -r -d '' COPYRIGHT <<'EOF'
 | 
	
		
			
				|  |  |  /*
 | 
	
	
		
			
				|  | @@ -76,7 +83,7 @@ COPYRIGHT_FILE=$(mktemp)
 | 
	
		
			
				|  |  |  echo "${COPYRIGHT/<YEAR>/$CURRENT_YEAR}" > $COPYRIGHT_FILE
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  set -ex
 | 
	
		
			
				|  |  | -if [ $# -lt 2 ]; then
 | 
	
		
			
				|  |  | +if [ $# -lt 2 ] || [ $# -gt 3 ]; then
 | 
	
		
			
				|  |  |    echo "Usage: $0 <input.proto> <absolute path to output dir> [grpc path]"
 | 
	
		
			
				|  |  |    exit 1
 | 
	
		
			
				|  |  |  fi
 | 
	
	
		
			
				|  | @@ -89,22 +96,22 @@ readonly EXPECTED_OPTIONS_FILE_PATH="${1%.*}.options"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  if [[ ! -f "$INPUT_PROTO" ]]; then
 | 
	
		
			
				|  |  |    echo "Input proto file '$INPUT_PROTO' doesn't exist."
 | 
	
		
			
				|  |  | -  exit 3
 | 
	
		
			
				|  |  | +  exit 2
 | 
	
		
			
				|  |  |  fi
 | 
	
		
			
				|  |  |  if [[ ! -f "${EXPECTED_OPTIONS_FILE_PATH}" ]]; then
 | 
	
		
			
				|  |  |    echo "Expected nanopb options file '${EXPECTED_OPTIONS_FILE_PATH}' missing"
 | 
	
		
			
				|  |  | -  exit 4
 | 
	
		
			
				|  |  | +  exit 3
 | 
	
		
			
				|  |  |  fi
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  if [[ "${OUTPUT_DIR:0:1}" != '/' ]]; then
 | 
	
		
			
				|  |  |    echo "The output directory must be an absolute path. Got '$OUTPUT_DIR'"
 | 
	
		
			
				|  |  | -  exit 5
 | 
	
		
			
				|  |  | +  exit 4
 | 
	
		
			
				|  |  |  fi
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  mkdir -p "$OUTPUT_DIR"
 | 
	
		
			
				|  |  |  if [ $? != 0 ]; then
 | 
	
		
			
				|  |  |    echo "Error creating output directory $OUTPUT_DIR"
 | 
	
		
			
				|  |  | -  exit 2
 | 
	
		
			
				|  |  | +  exit 5
 | 
	
		
			
				|  |  |  fi
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  readonly VENV_DIR=$(mktemp -d)
 |