skia2/tools/infra/go.py
Eric Boren 46e2d8d4a1 [infra] Use "mod download" and "install", not "get" in chrome_release_branch
Change-Id: I96bc057df6b538138827fac7129126381038656a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/258240
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
2019-12-06 11:16:41 +00:00

63 lines
1.5 KiB
Python
Executable File

#!/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])