59 lines
1.7 KiB
Bash
Executable file
59 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(cd -- "$SCRIPT_DIR/../.." && pwd)"
|
|
IDEA_DIR="$PROJECT_DIR/.idea"
|
|
LIBRARIES_DIR="$IDEA_DIR/libraries"
|
|
FLUTTER_SDK="$PROJECT_DIR/.devbox/nix/profile/default"
|
|
DART_SDK="$FLUTTER_SDK/bin/cache/dart-sdk"
|
|
|
|
mkdir -p "$IDEA_DIR"
|
|
if [ ! -x "$FLUTTER_SDK/bin/flutter" ]; then
|
|
echo "Flutter not found at $FLUTTER_SDK/bin/flutter. Run devbox install to download it." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$DART_SDK" ]; then
|
|
echo "Dart SDK not found at $DART_SDK. Run flutter doctor to populate the cache." >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$LIBRARIES_DIR"
|
|
|
|
cat > "$IDEA_DIR/flutter.xml" <<'EOF'
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project version="4">
|
|
<component name="FlutterSdkSettings">
|
|
<option name="FLUTTER_SDK_PATH" value="$PROJECT_DIR$/.devbox/nix/profile/default" />
|
|
</component>
|
|
</project>
|
|
EOF
|
|
|
|
cat > "$IDEA_DIR/dart.xml" <<'EOF'
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project version="4">
|
|
<component name="DartSdkGlobalLibSettings">
|
|
<option name="dartSdkPath" value="$PROJECT_DIR$/.devbox/nix/profile/default/bin/cache/dart-sdk" />
|
|
</component>
|
|
</project>
|
|
EOF
|
|
|
|
dart_libs=$(find "$DART_SDK/lib" -maxdepth 1 -mindepth 1 -type d -printf '%f\n' | sort)
|
|
tmp_file=$(mktemp)
|
|
{
|
|
echo '<component name="libraryTable">'
|
|
echo ' <library name="Dart SDK">'
|
|
echo ' <CLASSES>'
|
|
for lib in $dart_libs; do
|
|
printf ' <root url="file://$PROJECT_DIR$/.devbox/nix/profile/default/bin/cache/dart-sdk/lib/%s" />\n' "$lib"
|
|
done
|
|
echo ' </CLASSES>'
|
|
echo ' <JAVADOC />'
|
|
echo ' <SOURCES />'
|
|
echo ' </library>'
|
|
echo '</component>'
|
|
} > "$tmp_file"
|
|
mv "$tmp_file" "$LIBRARIES_DIR/Dart_SDK.xml"
|
|
|
|
echo "Android Studio configured. Flutter SDK: $FLUTTER_SDK"
|