mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-25 00:00:26 +08:00
build: 🔨 Adding flutterw for consitent flutter version
This commit is contained in:

committed by
Roland Fredenhagen

parent
d6b09eec6d
commit
4cd54d9238
1
.flutter
Submodule
1
.flutter
Submodule
Submodule .flutter added at 9b2d32b605
4
.gitmodules
vendored
Normal file
4
.gitmodules
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[submodule ".flutter"]
|
||||||
|
path = .flutter
|
||||||
|
url = https://github.com/flutter/flutter.git
|
||||||
|
branch = stable
|
108
flutterw
Executable file
108
flutterw
Executable file
@ -0,0 +1,108 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
##
|
||||||
|
## Flutter start up script for UN*X
|
||||||
|
## Version: v1.1.2
|
||||||
|
## Date: 2021-03-09 13:41:00
|
||||||
|
##
|
||||||
|
## 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}
|
Reference in New Issue
Block a user