Gradle wrapper in environments that require controlled builds

As I had another stab on this old issue, here is a shell script that somewhat helps with the problem:

#!/usr/bin/env bash
export PROJECT_ROOT=${1:-`pwd`}
export LOCAL_NAME=${2:-gw}
export LOCAL_DISTRIBUTION_URL_PATTERN=${3:-${LOCAL_DISTRIBUTION_URL_PATTERN:-'your-host.com\/artifactory\/pkg\/gradle'}}
export ORIGINAL_DISTRIBUTION_URL_PATTERN=${4:-${ORIGINAL_DISTRIBUTION_URL_PATTERN:-'services.gradle.org\/distributions'}}

echo Creating $LOCAL_NAME under root $PROJECT_ROOT, converting wrapper distributionURLs
echo "Original: $ORIGINAL_DISTRIBUTION_URL_PATTERN"
echo "Local   : $LOCAL_DISTRIBUTION_URL_PATTERN"

cd $PROJECT_ROOT

cat gradlew     | sed "s/gradle-wrapper.jar/gradle-wrapper-$LOCAL_NAME.jar/" > $LOCAL_NAME
cat gradlew.bat | sed "s/gradle-wrapper.jar/gradle-wrapper-$LOCAL_NAME.jar/" > $LOCAL_NAME.bat
cat gradle/wrapper/gradle-wrapper.properties | sed "s/$ORIGINAL_DISTRIBUTION_URL_PATTERN/$LOCAL_DISTRIBUTION_URL_PATTERN/" > gradle/wrapper/gradle-wrapper-$LOCAL_NAME.properties

cp gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle-wrapper-$LOCAL_NAME.jar
chmod u+x $LOCAL_NAME

Before you use it set your LOCAL_DISTRIBUTION_URL_PATTERN envvar to a sed-escaped url of your internal distribution mirror. Once you do that, you can checkout a project, go to its root directory and run this script from wherever you put it. It would create new wrapper files that you can use, with config pointing to your distribution Url.

Example:

git clone git@scm-host:foo/bar
cd bar
~/scripts/localize-wrapper.sh    
gw build                   

Tested on Cygwin and Linux