#!/usr/bin/env python

# Copyright 2017 The Kubernetes Authors.
#
# 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.

import os
from os import path
import subprocess
import sys

from lib.kubernetes import devtools

gopath=os.environ['GOPATH']

package_name='k8s.io/kops'

packages = devtools.read_packages_file(package_name)

paths = []

for package in packages:
  if package == package_name:
    continue
  paths.append(package)

# Install goimports from vendor
print('installing goimports from vendor')

process = subprocess.Popen(['go', 'install', 'k8s.io/kops/vendor/golang.org/x/tools/cmd/goimports'], stdout=subprocess.PIPE, cwd=path.join(gopath, 'src'))
stdout, stderr = process.communicate()
if process.returncode != 0:
  print("FAIL: installing goimports from vendor failed")
  print(stderr)
  sys.exit(1)

print("packages %s" % paths)

env = os.environ

process = subprocess.Popen(
  ['go', 'run', 'k8s.io/kops/vendor/golang.org/x/tools/cmd/goimports', '-l'] + paths,
  stdout=subprocess.PIPE,
  stderr=subprocess.PIPE,
  cwd=path.join(gopath, 'src'),
  env=env
)
stdout, stderr = process.communicate()

if stdout.strip().decode('ascii') != "" or stderr.strip().decode('ascii') != "":
  print("FAIL: 'goimports -w' needs to be run on the following files: ")
  print("STDOUT:\n" + stdout.decode('ascii'))
  print("STDERR:\n" + stderr.decode('ascii'))
  print('FAIL: Please run the following command: make goimports')
  sys.exit(1)
