#!/bin/bash # this script uploads binaries to google3. # if you are not running this in a workstation, you need to mount your workspace into a local folder # see: sshfs # sample invocation ./update_googe3.sh 3.2.0-dev /tmp/my_g3_workspace v3_2_0 VERSION=$1 # 3.1.0-dev GOOGLE3=$2 # e.g. /tmp/my_g3_workspace REMOTE_VERSION=$3 # e.g. v3_1_0 if [ ! -e 'integration-tests' ] || [ ! -e 'extensions' ]; then echo "must run this under {src}/tools/data-binding" exit 1 fi echo "copying version $VERSION to $GOOGLE3 under version $REMOTE_VERSION" TMP_JAR_DIR='tmp_jar' TMP_LIB_DIR='tmp_lib' TMP_ADAPTERS_DIR='tmp_adapters' TMP_X_LIB_DIR='tmp_x_lib' TMP_X_ADAPTERS_DIR='tmp_x_adapters' CUR_DIR=$PWD; REPO_DIR="$CUR_DIR/../../out/repo" # compile echo "compiling base" cd $CUR_DIR/../base gw :pL :makeOfflineRepo --stacktrace cd $CUR_DIR create_target_dir() { echo "creating target dir $1" rm -rf $1 mkdir $1 } copy_jar() { TARGET=$1 ARTIFACT_NAME=$2 NEW_NAME=$3 cp "$REPO_DIR/com/android/databinding/$ARTIFACT_NAME/$VERSION/$ARTIFACT_NAME-$VERSION.jar" "$TARGET/$NEW_NAME.jar" cp "$REPO_DIR/com/android/databinding/$ARTIFACT_NAME/$VERSION/$ARTIFACT_NAME-$VERSION-sources.jar" "$TARGET/$NEW_NAME-src.jar" } copy_aar() { TARGET=$1 ARTIFACT_NAME=$2 NEW_NAME=$3 cp "$REPO_DIR/com/android/databinding/$ARTIFACT_NAME/$VERSION/$ARTIFACT_NAME-$VERSION.aar" "$TARGET/$NEW_NAME.aar" cp "$REPO_DIR/com/android/databinding/$ARTIFACT_NAME/$VERSION/$ARTIFACT_NAME-$VERSION-sources.jar" "$TARGET/$NEW_NAME-src.jar" } copy_x_jar() { TARGET=$1 ARTIFACT_NAME=$2 NEW_NAME=$3 cp "$REPO_DIR/androidx/databinding/$ARTIFACT_NAME/$VERSION/$ARTIFACT_NAME-$VERSION.jar" "$TARGET/$NEW_NAME.jar" cp "$REPO_DIR/androidx/databinding/$ARTIFACT_NAME/$VERSION/$ARTIFACT_NAME-$VERSION-sources.jar" "$TARGET/$NEW_NAME-src.jar" } copy_x_aar() { TARGET=$1 ARTIFACT_NAME=$2 NEW_NAME=$3 cp "$REPO_DIR/androidx/databinding/$ARTIFACT_NAME/$VERSION/$ARTIFACT_NAME-$VERSION.aar" "$TARGET/$NEW_NAME.aar" cp "$REPO_DIR/androidx/databinding/$ARTIFACT_NAME/$VERSION/$ARTIFACT_NAME-$VERSION-sources.jar" "$TARGET/$NEW_NAME-src.jar" } remove_restrict_to() { sed -i '/RestrictTo/d' $1 sed -i 's/android\.support\.v7\.widget\.CardView/androidx.cardview.widget.CardView/g' $1 } # copy jars create_target_dir $TMP_JAR_DIR copy_x_jar $TMP_JAR_DIR "databinding-compiler" "compiler" copy_x_jar $TMP_JAR_DIR "databinding-compiler-common" "compiler_common" copy_x_jar $TMP_JAR_DIR "databinding-common" "x_common" copy_jar $TMP_JAR_DIR "baseLibrary" "base" ./gradlew :dB:exec:jar :dB:exec:sourceJar cp "exec/build/libs/exec-$VERSION.jar" "$TMP_JAR_DIR/exec.jar" cp "exec/build/libs/exec-$VERSION-sources.jar" "$TMP_JAR_DIR/exec-src.jar" mkdir -p "$GOOGLE3/third_party/java/android_databinding/$REMOTE_VERSION/." cp $TMP_JAR_DIR/* "$GOOGLE3/third_party/java/android_databinding/$REMOTE_VERSION/." # copy library create_target_dir $TMP_LIB_DIR copy_aar $TMP_LIB_DIR "library" "library" cd $TMP_LIB_DIR unzip library.aar mv classes.jar "databinding-library.jar" LIB_REMOTE_LOC=$GOOGLE3/third_party/java/android/android_sdk_linux/extras/android/compatibility/databinding/library/$REMOTE_VERSION/. mkdir -p $LIB_REMOTE_LOC cp -r databinding-library.jar AndroidManifest.xml res proguard.txt $LIB_REMOTE_LOC/. cd $CUR_DIR # copy X library create_target_dir $TMP_X_LIB_DIR copy_x_aar $TMP_X_LIB_DIR "databinding-runtime" "runtime" cd $TMP_X_LIB_DIR unzip runtime.aar mv classes.jar "databinding-runtime.jar" X_LIB_REMOTE_LOC=$GOOGLE3/third_party/java/androidx/databinding/runtime/$REMOTE_VERSION/. mkdir -p $X_LIB_REMOTE_LOC cp -r databinding-runtime.jar AndroidManifest.xml res proguard.txt $X_LIB_REMOTE_LOC cd $CUR_DIR # copy baseAdapters source. RestrictTo annotations becomes a problem in Google3 so just strip them. create_target_dir $TMP_ADAPTERS_DIR cp -r extensions-support/baseAdapters/src $TMP_ADAPTERS_DIR; for file in `find $TMP_ADAPTERS_DIR -name "*.java"` do remove_restrict_to "$file" done ADAPTERS_REMOTE_LOC=$GOOGLE3/third_party/java/android/android_sdk_linux/extras/android/compatibility/databinding/adapters/$REMOTE_VERSION/. mkdir -p $ADAPTERS_REMOTE_LOC cp -r $TMP_ADAPTERS_DIR/src $ADAPTERS_REMOTE_LOC # copy baseAdapters source. RestrictTo annotations becomes a problem in Google3 so just strip them. create_target_dir $TMP_X_ADAPTERS_DIR cp -r extensions/baseAdapters/src $TMP_X_ADAPTERS_DIR; for file in `find $TMP_X_ADAPTERS_DIR -name "*.java"` do remove_restrict_to "$file" done X_ADAPTERS_REMOTE_LOC=$GOOGLE3/third_party/java/androidx/databinding/adapters/$REMOTE_VERSION/. mkdir -p $X_ADAPTERS_REMOTE_LOC cp -r $TMP_X_ADAPTERS_DIR/src $X_ADAPTERS_REMOTE_LOC