This repository has been archived by the owner on Aug 9, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from Superformula/feat/wrap-flutter
Add Flutter wrapper to our project.
- Loading branch information
Showing
6 changed files
with
176 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
[submodule "app/.flutter"] | ||
path = app/.flutter | ||
url = https://github.com/flutter/flutter.git | ||
branch = stable |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
{ | ||
// Use IntelliSense to learn about possible attributes. | ||
// Hover to view descriptions of existing attributes. | ||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||
"version": "0.2.0", | ||
"configurations": [{ | ||
"name": "app", | ||
"cwd": "app", | ||
"request": "launch", | ||
"type": "dart" | ||
}] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"dart.flutterSdkPath": "app/.flutter", | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
#!/usr/bin/env sh | ||
|
||
############################################################################## | ||
## | ||
## Flutter start up script for UN*X | ||
## Version: v1.1.2 | ||
## Date: 2021-02-12 10:12:44 | ||
## | ||
## Use this flutter wrapper to bundle Flutter within your project to make | ||
## sure everybody builds with the same version. | ||
## | ||
## Read about the install and uninstall process in the README on GitHub | ||
## https://github.com/passsy/flutter_wrapper | ||
## | ||
## Inspired by gradle-wrapper. | ||
## | ||
############################################################################## | ||
|
||
# Attempt to set APP_HOME | ||
# Resolve links: $0 may be a link | ||
PRG="$0" | ||
# Need this for relative symlinks. | ||
while [ -h "$PRG" ]; do | ||
ls=$(ls -ld "$PRG") | ||
link=$(expr "$ls" : '.*-> \(.*\)$') | ||
if expr "$link" : '/.*' >/dev/null; then | ||
PRG="$link" | ||
else | ||
PRG=$(dirname "$PRG")"/$link" | ||
fi | ||
done | ||
SAVED="$(pwd)" | ||
cd "$(dirname "$PRG")/" >/dev/null | ||
APP_HOME="$(pwd -P)" | ||
cd "$SAVED" >/dev/null | ||
|
||
FLUTTER_SUBMODULE_NAME='.flutter' | ||
FLUTTER_DIR="$APP_HOME/$FLUTTER_SUBMODULE_NAME" | ||
|
||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | ||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then | ||
cd "$(dirname "$0")" | ||
fi | ||
|
||
# submodule starting with "-" are not initialized | ||
init_status=$(git submodule | grep "\ $FLUTTER_SUBMODULE_NAME$" | cut -c 1) | ||
|
||
# Fix not initialized flutter submodule | ||
if [ "$init_status" = "-" ]; then | ||
echo "$FLUTTER_SUBMODULE_NAME submodule not initialized. Initializing..." | ||
git submodule update --init ${FLUTTER_SUBMODULE_NAME} | ||
fi | ||
|
||
# Detect detach HEAD and fix it. commands like upgrade expect a valid branch, not a detached HEAD | ||
FLUTTER_SYMBOLIC_REF=$(git -C ${FLUTTER_SUBMODULE_NAME} symbolic-ref -q HEAD) | ||
if [ -z ${FLUTTER_SYMBOLIC_REF} ]; then | ||
FLUTTER_REV=$(git -C ${FLUTTER_SUBMODULE_NAME} rev-parse HEAD) | ||
FLUTTER_CHANNEL=$(git config -f .gitmodules submodule.${FLUTTER_SUBMODULE_NAME}.branch) | ||
|
||
if [ -z $FLUTTER_CHANNEL ]; then | ||
echo "Warning: Submodule '$FLUTTER_SUBMODULE_NAME' doesn't point to an official Flutter channel \ | ||
(one of stable|beta|dev|master). './flutterw upgrade' will fail without a channel." | ||
echo "Fix this by adding a specific channel with:" | ||
echo "\t- './flutterw channel <channel>' or" | ||
echo "\t- Add 'branch = <channel>' to '$FLUTTER_SUBMODULE_NAME' submodule in .gitmodules" | ||
else | ||
echo "Fixing detached HEAD: '$FLUTTER_SUBMODULE_NAME' submodule points to a specific commit $FLUTTER_REV, not channel '$FLUTTER_CHANNEL' (as defined in .gitmodules)." | ||
# Make sure channel is fetched | ||
# Remove old channel branch because it might be moved to an unrelated commit where fast-forward pull isn't possible | ||
git -C ${FLUTTER_SUBMODULE_NAME} branch -q -D ${FLUTTER_CHANNEL} 2> /dev/null || true | ||
git -C ${FLUTTER_SUBMODULE_NAME} fetch -q origin | ||
|
||
# bind current HEAD to channel defined in .gitmodules | ||
git -C ${FLUTTER_SUBMODULE_NAME} checkout -q -b ${FLUTTER_CHANNEL} ${FLUTTER_REV} | ||
git -C ${FLUTTER_SUBMODULE_NAME} branch -q -u origin/${FLUTTER_CHANNEL} ${FLUTTER_CHANNEL} | ||
echo "Fixed! Migrated to channel '$FLUTTER_CHANNEL' while staying at commit $FLUTTER_REV. './flutterw upgrade' now works without problems!" | ||
git -C ${FLUTTER_SUBMODULE_NAME} status -bs | ||
fi | ||
fi | ||
|
||
# Wrapper tasks done, call flutter binay with all args | ||
set -e | ||
"$FLUTTER_DIR/bin/flutter" "$@" | ||
|
||
# Post flutterw tasks. exit code from /bin/flutterw will be used as final exit | ||
FLUTTER_EXIT_STATUS=$? | ||
if [ ${FLUTTER_EXIT_STATUS} -eq 0 ]; then | ||
|
||
# ./flutterw channel CHANNEL | ||
if echo "$@" | grep -q "channel"; then | ||
# make sure .gitmodules is updated as well | ||
CHANNEL=${2} # second arg | ||
git config -f .gitmodules submodule.${FLUTTER_SUBMODULE_NAME}.branch ${CHANNEL} | ||
# makes sure nobody forgets to do commit all changed files | ||
git add .gitmodules | ||
git add ${FLUTTER_SUBMODULE_NAME} | ||
fi | ||
|
||
# ./flutterw upgrade | ||
if echo "$@" | grep -q "upgrade"; then | ||
# makes sure nobody forgets to do commit the changed submodule | ||
git add ${FLUTTER_SUBMODULE_NAME} | ||
# flutter packages get runs automatically. Stage those changes as well | ||
git add pubspec.lock | ||
fi | ||
fi | ||
|
||
exit ${FLUTTER_EXIT_STATUS} |