#!/bin/bash
set -e

if [ -n "$SKIP_VALIDATE" ]; then
    echo Skipping validation
    exit
fi

cd $(dirname $0)/..

echo Running: install script signature checks
sha256sum -c install.sh.sha256sum

echo Running: go mod tidy
go mod tidy

echo Running: go generate
GOOS=linux CC=gcc CXX=g++ go generate

echo Running validation

. ./scripts/version.sh

if [ -n "$DIRTY" ]; then
    echo Source dir is dirty
    git status --porcelain --untracked-files=no
    git diff
    exit 1
fi

echo Running: go version
if ! go version | grep -s "go version ${VERSION_GOLANG} "; then
  echo "Unexpected $(go version) - Kubernetes ${VERSION_K8S} should be built with go version ${VERSION_GOLANG}"
  exit 1
fi

echo Running: go mod verify
go mod verify

if [ ! -e build/data ];then
    mkdir -p build/data
fi

if ! command -v golangci-lint; then
    echo Skipping validation: no golangci-lint available
    exit
fi

#echo Running: golangci-lint
## https://github.com/golangci/golangci-lint/issues/2788
#CGO_ENABLED=0 golangci-lint run -v
