forked from aas-integration/integration-test2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fetch_corpus.py
55 lines (48 loc) · 1.77 KB
/
fetch_corpus.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
from common import run_cmd, cd, CORPUS_DIR, get_corpus_info
def git_update(project):
if project['git-ref'] not in run_cmd(['git', 'rev-parse', 'HEAD'])['output']:
print "Checking out git ref %s." % project['git-ref']
run_cmd(['git', 'fetch'])
run_cmd(['git', 'reset' '--hard'])
run_cmd(['git', 'checkout', project['git-ref']])
def hg_update(project):
if project['hg-rev'] not in run_cmd(['hg' 'parent'])['output']:
print "Checking out hg rev %s." % project['hg-rev']
run_cmd(['hg', 'update', '-r', project['hg-rev'], '-C'])
def svn_update(project):
if project['svn-rev'] not in run_cmd(['svnversion'])['output']:
print "Checking out svn rev %s." % project['svn-rev']
run_cmd(['svn', 'update', '-r', project['svn-rev']])
def download_project(project):
if not os.path.isdir(project['name']):
print "Downloading %s" % project['name']
if 'git-url' in project:
run_cmd(['git', 'clone',
project['git-url'],
project['name']])
elif 'hg-url' in project:
run_cmd(['hg', 'clone',
project['hg-url'],
project['name']])
elif 'svn-url' in project:
run_cmd(['svn', 'checkout',
'{}@{}'.format(project['svn-url'], project['svn-rev']),
project['name']])
else:
print "Already downloaded %s." % (project['name'])
def update_project(project):
with cd(project['name']):
if 'git-url' in project:
git_update(project)
elif 'hg-url' in project:
hg_update(project)
elif 'svn-url' in project:
svn_update(project)
def fetch_corpus():
with cd(CORPUS_DIR):
for project in get_corpus_info()['projects'].values():
download_project(project)
update_project(project)
if __name__ == "__main__":
fetch_corpus()