2019-04-16 19:15:21 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
#
|
|
|
|
# Copyright 2019 Google Inc.
|
|
|
|
#
|
|
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
|
|
# found in the LICENSE file.
|
|
|
|
|
|
|
|
|
|
|
|
import os
|
|
|
|
import subprocess
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
|
|
INFRA_GO = 'go.skia.org/infra'
|
|
|
|
WHICH = 'where' if sys.platform == 'win32' else 'which'
|
|
|
|
|
|
|
|
|
|
|
|
def check():
|
|
|
|
'''Verify that golang is properly installed. If not, exit with an error.'''
|
|
|
|
def _fail(msg):
|
|
|
|
print >> sys.stderr, msg
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
try:
|
|
|
|
go_exe = subprocess.check_output([WHICH, 'go'])
|
|
|
|
except (subprocess.CalledProcessError, OSError):
|
2019-04-18 12:54:33 +00:00
|
|
|
go_exe = None
|
2019-04-16 19:15:21 +00:00
|
|
|
if not go_exe:
|
|
|
|
_fail('Unable to find Golang installation; see '
|
|
|
|
'https://golang.org/doc/install')
|
|
|
|
if not os.environ.get('GOPATH'):
|
|
|
|
_fail('GOPATH environment variable is not set; is Golang properly '
|
|
|
|
'installed?')
|
|
|
|
go_bin = os.path.join(os.environ['GOPATH'], 'bin')
|
|
|
|
for entry in os.environ.get('PATH', '').split(os.pathsep):
|
|
|
|
if entry == go_bin:
|
|
|
|
break
|
|
|
|
else:
|
|
|
|
_fail('%s not in PATH; is Golang properly installed?' % go_bin)
|
|
|
|
|
|
|
|
|
|
|
|
def get(url):
|
|
|
|
'''Clone or update the given repo URL via "go get".'''
|
|
|
|
check()
|
|
|
|
subprocess.check_call(['go', 'get', '-u', url])
|
|
|
|
|
|
|
|
|
|
|
|
def update_infra():
|
|
|
|
'''Update the local checkout of the Skia infra codebase.'''
|
|
|
|
get(INFRA_GO + '/...')
|