#!/usr/bin/env bash
#
# Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
#
# Script to create a Debian jessie chroot environment for building Dart
# Debian packages.
#

function usage {
  USAGE="Usage: $0 i386|amd64 [target dir] [be|beta|dev|<stable version>]]\n
\n
The first mandatory argument speciifies the CPU architecture using\n
the Debian convention (e.g. i386 and amd64).\n
\n
The second optional argument specifies the destination\n
directory. This defaults to 'debian_<architecture>'.\n
\n
The third optional argument specifies whether the chroot is\n
populated with a Dart checkout. Use 'be' for bleeding edge, 'dev'\n
for trunk/developer or the specific version number for a stable\n
version (e.g. 1.2)."

  echo -e $USAGE
  exit 1
}

# Expect one to three arguments, architecture, optional directory and
# optional channel.
if [ $# -lt 1 ] || [ $# -gt 3 ]
then
  usage
fi

ARCH=$1

if [ -n "$2" ]
then
  CHROOT=$2
else
  CHROOT=debian_$ARCH
fi

if [ -n "$3" ]
then
  CHANNEL=$3
fi

if [ "$ARCH" != "i386" ] && [ "$ARCH" != "amd64" ]
then
  usage
fi

SVN_REPRO="http://dart.googlecode.com/svn/"
if [ -n "$CHANNEL" ]
then
  if [ "$CHANNEL" == "be" ]
  then
    SVN_PATH="branches/bleeding_edge/deps/all.deps"
  elif [ "$CHANNEL" == "dev" ]
  then
    SVN_PATH="trunk/deps/all.deps"
  else
    SVN_PATH="branches/$CHANNEL/deps/all.deps"
  fi
  SRC_URI=$SVN_REPRO$SVN_PATH
fi

# Create Debian jessie chroot.
debootstrap --arch=$ARCH --components=main,restricted,universe,multiverse \
    jessie $CHROOT http://http.us.debian.org/debian/
chroot $CHROOT apt-get update
chroot $CHROOT apt-get -y install \
    debhelper python git gcc sudo make

# Add chrome-bot user.
chroot $CHROOT groupadd --gid 1001 chrome-bot
chroot $CHROOT useradd --gid 1001 --uid 1001 --create-home chrome-bot
mkdir $CHROOT/b
chown 1001:1001 $CHROOT/b

# Create trampoline script for running the initialization as chrome-bot.
cat << EOF > $CHROOT/b/init_chroot_trampoline.sh
#!/bin/sh
su -c /b/init_chroot.sh chrome-bot
EOF

# Create initialization script which does nothing.
cat << 'EOF' > $CHROOT/b/init_chroot.sh
#!/bin/sh
cd /b
EOF

# If the channel is set extend the initialization script to check out
# the Dart sources. This uses two cat commands as the first part needs
# to bypass variable interpretation.
if [ -n "$SRC_URI" ]
then
cat << 'EOF' >> $CHROOT/b/init_chroot.sh
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PATH:/b/depot_tools
EOF

cat << EOF >> $CHROOT/b/init_chroot.sh
gclient config $SRC_URI
gclient sync
gclient runhooks
EOF
fi

chmod 755 $CHROOT/b/init_chroot_trampoline.sh

chown 1001:1001 $CHROOT/b/init_chroot.sh
chmod 755 $CHROOT/b/init_chroot.sh
chroot $CHROOT /bin/sh /b/init_chroot_trampoline.sh
