Merge branch 'master' into docs
diff --git a/README.md b/README.md
index ee172b5..9de89cc 100644
--- a/README.md
+++ b/README.md
@@ -22,10 +22,14 @@
 $ pub global activate grinder
 ```
 
-The dart-services v2 API is defined in terms of Protobuf, which requires
-the installation of the Protobuf `protoc` compiler. Please see
-[Protocol Buffers](https://developers.google.com/protocol-buffers/)
-for detailed instalation instructions.
+The dart-services v2 API is defined in terms of Protobuf, which requires the
+installation of the Protobuf `protoc` compiler. Please see [Protocol
+Buffers](https://developers.google.com/protocol-buffers/) for detailed
+installation instructions. On macOS, you may also install with Homebrew via:
+
+```bash
+$ brew install protobuf
+```
 
 The Dart protoc plugin is also required for the above `protoc` compiler
 to generate Dart code. To install, please run:
diff --git a/tool/grind.dart b/tool/grind.dart
index d2d8bf4..a7e7fe3 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -312,10 +312,16 @@
 
 @Task('Generate Protobuf classes')
 void generateProtos() async {
-  await runWithLogging(
-    'protoc',
-    arguments: ['--dart_out=lib/src', 'protos/dart_services.proto'],
-  );
+  try {
+    await runWithLogging(
+      'protoc',
+      arguments: ['--dart_out=lib/src', 'protos/dart_services.proto'],
+    );
+  } catch (e) {
+    print('Error running "protoc"; make sure the Protocol Buffer compiler is '
+        'installed (see README.md)');
+    rethrow;
+  }
 
   // reformat generated classes so travis dart format test doesn't fail
   await runWithLogging(