You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.5 KiB
63 lines
1.5 KiB
#!/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):
|
|
go_exe = None
|
|
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(pkg):
|
|
'''Obtain/update the given package/module via "go get".'''
|
|
check()
|
|
subprocess.check_call(['go', 'get', '-u', pkg])
|
|
|
|
|
|
def update_infra():
|
|
'''Update the local checkout of the Skia infra codebase.'''
|
|
get(INFRA_GO + '/...')
|
|
|
|
|
|
def mod_download(*pkgs):
|
|
'''Run "go mod download" to obtain the given package(s).'''
|
|
check()
|
|
subprocess.check_call(['go', 'mod', 'download']+list(pkgs))
|
|
|
|
|
|
def install(pkg):
|
|
'''"go install" the given package.'''
|
|
check()
|
|
subprocess.check_call(['go', 'install', pkg])
|