Files
dolt/tools/roll.py
Erik Arvidsson adff0da9c3 Build script for building JS SDK Docs (#2479)
This script npm installs documentationjs and runs it on noms.js and
puts the output in $WORKSPACE/build

It is intended to be used with Jenkins.
2016-08-31 14:51:23 -07:00

67 lines
2.0 KiB
Python
Executable File

#!/usr/bin/python
# Copyright 2016 Attic Labs, Inc. All rights reserved.
# Licensed under the Apache License, version 2.0:
# http://www.apache.org/licenses/LICENSE-2.0
import argparse, os, os.path, subprocess, sys, shutil, urlparse
def main():
parser = argparse.ArgumentParser(description='Dependency snapshotter')
parser.add_argument('url')
parser.add_argument('--path', help='path to store the dependency at, defaults to vendor/[url without protocol]')
parser.add_argument('--version', default='HEAD', help='version of the dependency to snapshot, defaults to HEAD')
args = parser.parse_args()
url = urlparse.urlparse(args.url)
if url.scheme == '':
print 'Invalid url: no scheme'
sys.exit(1)
if not os.path.isdir('.git'):
print '%s must be run from the root of a repository' % sys.argv[0]
sys.exit(1)
path = url.path
if path.startswith('/'):
path = path[1:]
depdir = args.path
if depdir == None:
depdir = os.path.join('vendor', url.netloc, path)
shutil.rmtree(depdir, True)
parent = os.path.dirname(depdir)
if not os.path.isdir(parent):
os.makedirs(parent)
os.chdir(parent)
# Kinda sucks to clone entire repo to get a particular version, but:
# http://stackoverflow.com/questions/3489173/how-to-clone-git-repository-with-specific-revision-changeset
subprocess.check_call(['git', 'clone', args.url])
os.chdir(os.path.basename(depdir))
subprocess.check_call(['git', 'reset', '--hard', args.version])
head = subprocess.check_output(['git', 'rev-parse', 'HEAD']).strip()
f = open('.version', 'w')
f.write('%s\n%s\n' % (args.url, head))
f.close()
shutil.rmtree('.git')
# TODO: Should we also do Godeps?
if os.path.isdir('vendor'):
deps = [dirName for dirName, _, files in os.walk('vendor') if files]
if deps:
print '\nWarning!'
print ' %s contains one or more dependencies which will need to be vendored as well:' % args.url
print ' -', '\n - '.join(deps)
shutil.rmtree('vendor')
if __name__ == '__main__':
main()