1#!/usr/bin/env bash
2
3# This creates a KBFS release on github from the current source/tagged version.
4
5set -e -u -o pipefail # Fail on error
6
7dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
8cd "$dir"
9
10version=${VERSION:-}
11token=${GITHUB_TOKEN:-}
12
13if [ "$version" = "" ]; then
14  echo "Specify VERSION to build"
15  exit 1
16fi
17
18if [ "$token" = "" ]; then
19  echo "No GITHUB_TOKEN set. See https://help.github.com/articles/creating-an-access-token-for-command-line-use/"
20  exit 2
21fi
22
23build_dir="/tmp/build_kbfs"
24client_dir="$GOPATH/src/github.com/keybase/client"
25tag="v$version"
26tgz="kbfs-$version.tgz"
27
28echo "Loading release tool"
29"$client_dir/packaging/goinstall.sh" "github.com/keybase/release"
30release_bin="$GOPATH/bin/release"
31
32build() {
33  rm -rf "$build_dir"
34  mkdir -p "$build_dir"
35  cd "$build_dir"
36
37  echo "Downloading source archive"
38  src_url="https://github.com/keybase/client/go/kbfs/archive/v$version.tar.gz"
39  curl -O -J -L "$src_url"
40
41  src_tgz="kbfs-$version.tar.gz"
42  echo "Unpacking $src_tgz"
43  tar zxpf "$src_tgz"
44  rm "$src_tgz"
45
46  go_dir=/tmp/go
47  rm -rf "$go_dir"
48  mkdir -p "$go_dir/src/github.com"
49  mv "kbfs-$version" "$go_dir/src/github.com/keybase"
50
51  echo "Building kbfs"
52  GO15VENDOREXPERIMENT=1 GOPATH="$go_dir" go build -a -tags "production" -o kbfs github.com/keybase/client/go/kbfs/kbfsfuse
53
54  echo "Packaging"
55  rm -rf "$tgz"
56  tar zcpf "$tgz" kbfs
57}
58
59create_release() {
60  echo "Checking for existing release: $version"
61  api_url=`$release_bin url --user=keybase --repo=kbfs --version=$version`
62  if [ ! "$api_url" = "" ]; then
63    echo "Release already exists, skipping"
64  else
65    cd "$build_dir"
66    platform=`$release_bin platform`
67    echo "Creating release"
68    "$release_bin" create --version="$version" --repo="kbfs"
69  fi
70}
71
72upload_release() {
73  cd "$build_dir"
74  platform=`$release_bin platform`
75  echo "Uploading release"
76  "$release_bin" upload --src="$tgz" --dest="kbfs-$version-$platform.tgz" --version="$version" --repo="kbfs"
77}
78
79build
80create_release
81upload_release
82