#!/usr/bin/env bash
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e
set -o pipefail

SCRIPT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"

VERSION=$(go version | grep -o "go[0-9].* ")
GOLANG_MAJOR_VERSION=$(if [[ $(echo "$VERSION"|awk -F'.' '{print NF}') -ge 3 ]]; then echo ${VERSION%.*}; else echo ${VERSION%-*}; fi)

NEWROOT=/go-licenses-${GOLANG_MAJOR_VERSION#go}

source $SCRIPT_ROOT/common_vars.sh

function install_go_licenses() {

    # installing go-licenses has to happen after we have set the main go
    # to symlink to the one in /root/sdk to ensure go-licenses gets built
    # with GOROOT pointed to /root/sdk/go... instead of /usr/local/go so it
    # is able to properly packages from the standard Go library    
    CGO_ENABLED=0 GO111MODULE=on GOBIN=${NEWROOT}/${GOPATH}/${GOLANG_MAJOR_VERSION}/bin go install github.com/jaxesn/go-licenses@6800d77c11d0ef8628e7eda908b1d1149383ca48
    
    # symlink to go/bin and depending on which go-licenses vs is added last to
    # the final image, will take precedent and be the default
    # similiar to the strategy with golang
    mkdir -p ${NEWROOT}/${GOPATH}/bin
    ln -s ${GOPATH}/${GOLANG_MAJOR_VERSION}/bin/go-licenses ${NEWROOT}/${GOPATH}/bin/go-licenses
    
    rm -rf ${GOPATH}

    time upx --best --no-lzma ${NEWROOT}/${GOPATH}/${GOLANG_MAJOR_VERSION}/bin/go-licenses
}

[ ${SKIP_INSTALL:-false} != false ] || install_go_licenses
