93 lines
3.0 KiB
Bash
Executable File
93 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script is a bit of a hack to generate DocC documentation until Bazel has support for it.
|
|
# https://github.com/bazelbuild/rules_apple/issues/2241
|
|
# To use this script, make sure the XCFramework is built with Bazel (see ios-ci.yml).
|
|
# Then to start a local preview, run:
|
|
# $ platform/ios/scripts/docc.sh preview
|
|
# You can also build the documentation locally
|
|
# $ platform/ios/scripts/docc.sh
|
|
# Then go to build/MapLibre.doccarchive and run
|
|
# $ python3 -m http.server
|
|
# Go to http://localhost:8000/documentation/maplibre/
|
|
|
|
set -e
|
|
shopt -s extglob
|
|
|
|
cmd="convert"
|
|
if [[ "$1" == "preview" ]]; then
|
|
cmd="preview"
|
|
fi
|
|
|
|
SDK_PATH=$(xcrun -sdk iphoneos --show-sdk-path)
|
|
|
|
build_dir=build
|
|
|
|
rm -rf "$build_dir"/symbol-graphs
|
|
rm -rf "$build_dir"/headers
|
|
|
|
mkdir -p "$build_dir"/symbol-graphs
|
|
mkdir -p "$build_dir"/headers
|
|
|
|
bazel build --//:renderer=metal //platform/darwin:generated_style_public_hdrs
|
|
|
|
# download resources from S3
|
|
|
|
aws s3 sync --no-sign-request "s3://maplibre-native/ios-documentation-resources" "platform/ios/MapLibre.docc/Resources"
|
|
|
|
public_headers=$(bazel query 'kind("source file", deps(//platform:ios-sdk, 2))' --output location | grep ".h$" | sed -r 's#.*/([^:]+).*#\1#')
|
|
style_headers=$(bazel cquery --//:renderer=metal //platform/darwin:generated_style_public_hdrs --output=files)
|
|
|
|
cp $style_headers "$build_dir"/headers
|
|
|
|
filter_filenames() {
|
|
local prefix="$1"
|
|
local filenames="$2"
|
|
local filtered_filenames=""
|
|
|
|
for filename in $filenames; do
|
|
local prefixed_filename="$prefix/$filename"
|
|
|
|
if [ -f "$prefixed_filename" ]; then
|
|
filtered_filenames="$filtered_filenames $prefixed_filename"
|
|
fi
|
|
done
|
|
|
|
echo "$filtered_filenames"
|
|
}
|
|
|
|
ios_headers=$(filter_filenames "platform/ios/src" "$public_headers")
|
|
darwin_headers=$(filter_filenames "platform/darwin/src" "$public_headers")
|
|
|
|
for header in $ios_headers $darwin_headers $style_headers; do
|
|
xcrun --toolchain swift clang \
|
|
-extract-api \
|
|
--product-name=MapLibre \
|
|
-isysroot $SDK_PATH \
|
|
-F "$SDK_PATH"/System/Library/Frameworks \
|
|
-I "$PWD" \
|
|
-I "$build_dir"/headers \
|
|
-I platform/darwin/src \
|
|
-x objective-c-header \
|
|
-o "$build_dir"/symbol-graphs/$(basename $header).symbols.json \
|
|
$header
|
|
done
|
|
|
|
export DOCC_HTML_DIR=$(dirname $(xcrun --toolchain swift --find docc))/../share/docc/render
|
|
$(xcrun --find docc) "$cmd" platform/ios/MapLibre.docc \
|
|
--fallback-display-name "MapLibre Native for iOS" \
|
|
--fallback-bundle-identifier org.swift.MyProject \
|
|
--fallback-bundle-version 0.0.1 \
|
|
--additional-symbol-graph-dir "$build_dir"/symbol-graphs \
|
|
--source-service github \
|
|
--source-service-base-url https://github.com/maplibre/maplibre-native/blob/main \
|
|
--checkout-path $(realpath .) \
|
|
--output-path "$build_dir"/MapLibre.doccarchive
|
|
|
|
if [[ "$cmd" == "convert" ]]; then
|
|
rm -rf build/docs
|
|
$(xcrun --find docc) process-archive transform-for-static-hosting "$build_dir"/MapLibre.doccarchive \
|
|
${HOSTING_BASE_PATH:+--hosting-base-path "$HOSTING_BASE_PATH"} \
|
|
--output-path build/docs
|
|
fi
|