mirror of
https://mirror.ghproxy.com/https://github.com/StarCitizenToolBox/app.git
synced 2024-12-23 11:13:46 +08:00
89 lines
2.0 KiB
Bash
89 lines
2.0 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
BASEDIR=$(dirname "$0")
|
|
|
|
mkdir -p "$CARGOKIT_TOOL_TEMP_DIR"
|
|
|
|
cd "$CARGOKIT_TOOL_TEMP_DIR"
|
|
|
|
# Write a very simple bin package in temp folder that depends on build_tool package
|
|
# from Cargokit. This is done to ensure that we don't pollute Cargokit folder
|
|
# with .dart_tool contents.
|
|
|
|
BUILD_TOOL_PKG_DIR="$BASEDIR/build_tool"
|
|
|
|
if [[ -z $FLUTTER_ROOT ]]; then # not defined
|
|
DART=dart
|
|
else
|
|
DART="$FLUTTER_ROOT/bin/cache/dart-sdk/bin/dart"
|
|
fi
|
|
|
|
cat << EOF > "pubspec.yaml"
|
|
name: build_tool_runner
|
|
version: 1.0.0
|
|
publish_to: none
|
|
|
|
environment:
|
|
sdk: '>=3.0.0 <4.0.0'
|
|
|
|
dependencies:
|
|
build_tool:
|
|
path: "$BUILD_TOOL_PKG_DIR"
|
|
EOF
|
|
|
|
mkdir -p "bin"
|
|
|
|
cat << EOF > "bin/build_tool_runner.dart"
|
|
import 'package:build_tool/build_tool.dart' as build_tool;
|
|
void main(List<String> args) {
|
|
build_tool.runMain(args);
|
|
}
|
|
EOF
|
|
|
|
# Dart run will not cache any package that has a path dependency, which
|
|
# is the case for our build_tool_runner. So instead we precompile the package
|
|
# ourselves.
|
|
# To invalidate the cached kernel we use the hash of ls -LR of the build_tool
|
|
# package directory. This should be good enough, as the build_tool package
|
|
# itself is not meant to have any path dependencies.
|
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
PACKAGE_HASH=$(ls -lTR "$BUILD_TOOL_PKG_DIR" | shasum)
|
|
else
|
|
PACKAGE_HASH=$(ls -lR --full-time "$BUILD_TOOL_PKG_DIR" | shasum)
|
|
fi
|
|
|
|
PACKAGE_HASH_FILE=".package_hash"
|
|
|
|
if [ -f "$PACKAGE_HASH_FILE" ]; then
|
|
EXISTING_HASH=$(cat "$PACKAGE_HASH_FILE")
|
|
if [ "$PACKAGE_HASH" != "$EXISTING_HASH" ]; then
|
|
rm "$PACKAGE_HASH_FILE"
|
|
fi
|
|
fi
|
|
|
|
# Run pub get if needed.
|
|
if [ ! -f "$PACKAGE_HASH_FILE" ]; then
|
|
"$DART" pub get --no-precompile
|
|
"$DART" compile kernel bin/build_tool_runner.dart
|
|
echo "$PACKAGE_HASH" > "$PACKAGE_HASH_FILE"
|
|
fi
|
|
|
|
set +e
|
|
|
|
"$DART" bin/build_tool_runner.dill "$@"
|
|
|
|
exit_code=$?
|
|
|
|
# 253 means invalid snapshot version.
|
|
if [ $exit_code == 253 ]; then
|
|
"$DART" pub get --no-precompile
|
|
"$DART" compile kernel bin/build_tool_runner.dart
|
|
"$DART" bin/build_tool_runner.dill "$@"
|
|
exit_code=$?
|
|
fi
|
|
|
|
exit $exit_code
|