aboutsummaryrefslogtreecommitdiff
path: root/tools/build-all-apks.sh
blob: c04d4f5628a706e740d99d802200456b238e2b5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/sh

OUTDIR="WordPress/build/outputs/apk/"
BUILDFILE="WordPress/build.gradle"
BUILDDIR="build"
LOGFILE="$BUILDDIR/build.log"

if [ x"$3" == x ]; then
  echo "Usage:   $0 release-branch beta-branch alpha-branch"
  echo "Example: $0 5.2 release/5.3 alpha-6"
  exit 1
fi

mkdir -p $BUILDDIR

current_branch=`git rev-parse --abbrev-ref HEAD`
release_branch=$1
beta_branch=$2
alpha_branch=$3

function gradle_version_name {
  grep -E 'versionName' $BUILDFILE | sed s/versionName// | grep -Eo "[a-zA-Z0-9.-]+"
}

function gradle_version_code {
  grep -E 'versionCode' $BUILDFILE | sed s/versionCode// | grep -Eo "[a-zA-Z0-9.-]+"
}

function build_apk {
  branch=$1
  flavor=$2
  git checkout $branch >> $LOGFILE 2>&1
  version_code=`gradle_version_code`
  version_name=`gradle_version_name`
  name="wpandroid-$version_name.apk"
  apk="WordPress-$flavor-release.apk"

  echo "Cleaning in branch: $branch" | tee -a $LOGFILE
  ./gradlew clean --offline >> $LOGFILE 2>&1
  echo "Building $version_name / $version_code - $apk..." | tee -a $LOGFILE
  ./gradlew assemble"$flavor"Release --offline >> $LOGFILE 2>&1
  cp -v $OUTDIR/$apk $BUILDDIR/$name | tee -a $LOGFILE
  echo "APK ready: $name" | tee -a $LOGFILE
  return $version_code
}

function check_clean_working_dir {
  if [ "`git status --porcelain`"x \!= x ]; then
    git status
    echo "Your working directory must be clean before you run this script"
    exit 1
  fi
}

check_clean_working_dir
date > $LOGFILE
build_apk $release_branch Vanilla
release_code=$?
build_apk $beta_branch Vanilla
beta_code=$?
build_apk $alpha_branch Zalpha
alpha_code=$?
git checkout $current_branch

echo "Version codes - release: $release_code, beta: $beta_code, alpha: $alpha_code" | tee -a $LOGFILE
if [ $release_code -ge $beta_code -o $beta_code -ge $alpha_code ]; then
  echo "(ಥ﹏ಥ) (ಥ﹏ಥ) (ಥ﹏ಥ) (ಥ﹏ಥ) (ಥ﹏ಥ) (ಥ﹏ಥ) (ಥ﹏ಥ) (ಥ﹏ಥ) (ಥ﹏ಥ)"
  echo "Wrong version codes (╯°□°)╯︵ ┻━┻"
  echo "Full log in: $LOGFILE"
  exit 2
fi