#!/bin/bash

GIT_REV=$(git rev-parse HEAD)
VERSION=$(git name-rev --tags --name-only $GIT_REV)

LD_FLAGS="-s"

if [ "$VERSION" != "undefined" ]; then
  VERSION=${VERSION%^0}
  TODAY="$(date -u +%Y%m%d)"
  LD_FLAGS="${LD_FLAGS} -X github.com/v2ray/v2ray-core.version=${VERSION} -X github.com/v2ray/v2ray-core.build=${TODAY}"
else
  VERSION="custom"
fi

BIN_PATH=$GOPATH/bin
mkdir -p $BIN_PATH

function build {
  local GOOS=$1
  local GOARCH=$2
  local SUFFIX=$3
  local EXT=$4
  
  local REL_PATH=$BIN_PATH/v2ray_${VERSION}${SUFFIX}
  local TARGET=$REL_PATH/v2ray${EXT}
  if [ -d "$REL_PATH" ]; then
    rm -rf "$REL_PATH"
  fi
  mkdir -p $REL_PATH/config
  cp -R $GOPATH/src/github.com/v2ray/v2ray-core/release/config/* $REL_PATH/config/
  GOOS=${GOOS} GOARCH=${GOARCH} go build -o ${TARGET} -compiler gc -ldflags "${LD_FLAGS}" github.com/v2ray/v2ray-core/release/server
  
  ZIP_FILE=$BIN_PATH/v2ray${SUFFIX}.zip
  if [ -f $ZIP_FILE ]; then
    rm -f $ZIP_FILE
  fi
  
  pushd $BIN_PATH
  zip -r $ZIP_FILE ./v2ray_${VERSION}${SUFFIX}/*
  popd
}

build "darwin" "amd64" "-macos" "-macos"
build "windows" "amd64" "-windows-64" "-windows-64.exe"
build "windows" "386" "-windows-32" "-windows-32.exe"
build "linux" "amd64" "-linux-64" "-linux-64"
build "linux" "386" "-linux-32" "-linux-32"
build "linux" "arm" "-armv6" "-armv6"