|  | #!/usr/bin/env bash | 
|  | # Copyright 2013 The Flutter Authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | # Generates objc docs for Flutter iOS libraries. | 
|  |  | 
|  | FLUTTER_UMBRELLA_HEADER=$(find ../out -maxdepth 4 -type f -name Flutter.h | grep 'ios_' | head -n 1) | 
|  | if [[ ! -f "$FLUTTER_UMBRELLA_HEADER" ]] | 
|  | then | 
|  | echo "Error: This script must be run at the root of the Flutter source tree with at least one built Flutter.framework in ../out/ios*/Flutter.framework." | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | if [[ $# -eq 0 ]] | 
|  | then | 
|  | echo "Error: Argument specifying output directory required." | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | # If GEM_HOME is set, prefer using its copy of jazzy. | 
|  | # LUCI will put jazzy here instead of on the path. | 
|  | if [[ -n "${GEM_HOME}" ]] | 
|  | then | 
|  | PATH="${GEM_HOME}/bin:$PATH" | 
|  | fi | 
|  |  | 
|  | # Use iPhoneSimulator SDK | 
|  | # See: https://github.com/realm/jazzy/issues/791 | 
|  | jazzy \ | 
|  | --objc\ | 
|  | --sdk iphonesimulator\ | 
|  | --clean\ | 
|  | --author Flutter Team\ | 
|  | --author_url 'https://flutter.io'\ | 
|  | --github_url 'https://github.com/flutter'\ | 
|  | --github-file-prefix 'http://github.com/flutter/engine/blob/master'\ | 
|  | --module-version 1.0.0\ | 
|  | --xcodebuild-arguments --objc,"$FLUTTER_UMBRELLA_HEADER",--,-x,objective-c,-isysroot,"$(xcrun --show-sdk-path --sdk iphonesimulator)",-I,"$(pwd)"\ | 
|  | --module Flutter\ | 
|  | --root-url https://api.flutter.dev/objc/\ | 
|  | --output "$1" | 
|  |  | 
|  | EXPECTED_CLASSES="FlutterAppDelegate.html | 
|  | FlutterBasicMessageChannel.html | 
|  | FlutterCallbackCache.html | 
|  | FlutterCallbackInformation.html | 
|  | FlutterDartProject.html | 
|  | FlutterEngine.html | 
|  | FlutterEngineGroup.html | 
|  | FlutterError.html | 
|  | FlutterEventChannel.html | 
|  | FlutterHeadlessDartRunner.html | 
|  | FlutterMethodCall.html | 
|  | FlutterMethodChannel.html | 
|  | FlutterPluginAppLifeCycleDelegate.html | 
|  | FlutterStandardMessageCodec.html | 
|  | FlutterStandardMethodCodec.html | 
|  | FlutterStandardReader.html | 
|  | FlutterStandardReaderWriter.html | 
|  | FlutterStandardTypedData.html | 
|  | FlutterStandardWriter.html | 
|  | FlutterViewController.html" | 
|  |  | 
|  | ACTUAL_CLASSES=$(ls "$1/Classes" | sort) | 
|  |  | 
|  | if [[ $EXPECTED_CLASSES != $ACTUAL_CLASSES ]]; then | 
|  | echo "Expected classes did not match actual classes" | 
|  | echo | 
|  | diff <(echo "$EXPECTED_CLASSES") <(echo "$ACTUAL_CLASSES") | 
|  | exit -1 | 
|  | fi |