anchor.diff:      print('No results in input file');
       return;
     }
  +
  +  // TODO(karlklose): parse and validate data before sending it.
   
     final changedPattern = '"changed":true';
     List<String> changedResults =
  
positive.code: The options are as follows:
  
  ${parser.usage}''');
    exit(1);
  }
  
  const resultsPerMessage = 100;
  const postUrl =
      'https://pubsub.googleapis.com/v1/projects/dart-ci/topics/results:publish';
  
  main(List<String> args) async {
    final parser = new ArgParser();
  
negative.code:       abbr: 'f', help: 'File containing the results to send');
    parser.addOption('id', abbr: 'i', help: 'Buildbucket ID of this build');
    parser.addOption('base_revision', help: 'A try build\'s patch base');
    parser.addFlag('staging',
        abbr: 's', help: 'Publish to the staging system', defaultsTo: false);
  
    final options = parser.parse(args);
    if (options['help']) {
      usage(parser);
    }
  
    if (options['result_file'] == null) {
      print('Error: option "result_file" is required.\n');
      usage(parser, exitCode: 1);
    }
  
    if (options['auth_token'] == null) {
      print('Error: option "auth_token" is required.\n');
      usage(parser, exitCode: 1);
    }
  
    final project = options['staging'] ? "dart-ci-staging" : "dart-ci";
  
    final client = http.Client();
  
  