blob: 2b0c159a25b0366d390b6b0ba166ae60b7cc145e [file] [log] [blame]
#!/bin/bash
function add_dependency_override() {
local name=$1
local path=$2
if ! cat pubspec.yaml | grep "dependency_overrides:" ; then
echo "dependency_overrides:" >> pubspec.yaml
fi
local pubspec=`cat pubspec.yaml | grep -v "$name: .path: "`
echo "$pubspec" > pubspec.yaml
if [[ -n "$path" ]]; then
echo " $name: {path: $path}" >> pubspec.yaml
fi
}
function checkout_dependency_override_from_github() {
local dependency_name=$1
local org_project=$2
local branch=$3
local path=${4:-/}
local url=https://github.com/$org_project
echo "** Checking out $dependency_name override from $url$path#$branch"
: ${TMPDIR:="/tmp"}
local dep_dir=$TMPDIR/dependency_overrides/$dependency_name
[[ -d `dirname $dep_dir` ]] || mkdir `dirname $dep_dir`
if [[ -d $dep_dir ]]; then
# Check there's no local modifications before removing existing directory.
(
cd $dep_dir
if git status -s | grep . ; then
echo "Found local modifications in $dep_dir: aborting"
exit 1
fi
)
rm -fR $dep_dir
fi
if [[ "$path" == "/" ]]; then
# Checkout only the branch, with no history:
git clone --depth 1 --branch $branch $url $dep_dir
else
(
mkdir $dep_dir
cd $dep_dir
# Sparse-checkout only the path + branch, with no history:
git init
git remote add origin $url
git config core.sparsecheckout true
echo $path >> .git/info/sparse-checkout
git pull --depth=1 origin $branch
)
fi
add_dependency_override $dependency_name $dep_dir$path
}