11import json
22import subprocess
3- import os .path
43
54from os import path
65from pathlib import Path
76from pybars import Compiler
87
98compiler = Compiler ()
109
10+
1111def processRelease (repo , payload ):
1212 base_path = Path (__file__ ).parent
1313 file_name = repo + '.json'
1414 file_path = (base_path / '..' / 'sites' / file_name ).resolve ()
1515
1616 with open (file_path ) as f :
17- data = json .load (f )
17+ data = json .load (f )
1818
1919 if 'release' in data .keys () and 'path' in data .keys ():
20- commands = []
21-
22- cwd = data ['cwd' ]
23-
24- if path .exists (base_path / '..' / '.nvmrc' ):
25- commands .append ('. ' + cwd + '/.nvm/nvm.sh' )
26- commands .append ('nvm use' )
27- elif 'node' in data .keys ():
28- commands .append ('. ' + cwd + '/.nvm/nvm.sh' )
29- commands .append ('nvm use ' + data ['node' ])
30-
31- if 'build' in data ['release' ].keys ():
32- source = data ['release' ]['build' ]
33- template = compiler .compile (source )
34- commands .append (template (payload ))
35-
36- if 'deploy' in data ['release' ].keys ():
37- source = data ['release' ]['deploy' ]
38- template = compiler .compile (source )
39- commands .append (template (payload ))
40-
41- if 'cleanup' in data ['release' ].keys ():
42- source = data ['release' ]['cleanup' ]
43- template = compiler .compile (source )
44- commands .append (template (payload ))
45-
46- subprocess .check_call (['git' , 'fetch' , '--all' , '--tags' ], cwd = data ['path' ])
47- subprocess .check_call (['git' , 'checkout' , 'tags/' + payload ['release' ]['tag_name' ]], cwd = data ['path' ])
48-
49- with subprocess .Popen (' && ' .join (commands ), cwd = data ['path' ], executable = '/bin/bash' , shell = True , stdout = subprocess .PIPE ) as process :
50- try :
51- process .communicate (timeout = 300 )
52- while True :
53- line = process .stdout .readline ()
54- if line == '' and process .poll () is not None :
55- break
56- if line :
57- print (line .rstrip ())
58- except subprocess .TimeoutExpired :
59- print ('Process was killed by timeout: 300 seconds' )
60- raise
61- finally :
62- print ('Process complete' )
63- process .kill ()
64- process .communicate ()
65- print ('Release complete!' )
20+ commands = []
21+
22+ cwd = data ['cwd' ]
23+
24+ if path .exists (base_path / '..' / '.nvmrc' ):
25+ commands .append ('. ' + cwd + '/.nvm/nvm.sh' )
26+ commands .append ('nvm use' )
27+ elif 'node' in data .keys ():
28+ commands .append ('. ' + cwd + '/.nvm/nvm.sh' )
29+ commands .append ('nvm use ' + data ['node' ])
30+
31+ if 'build' in data ['release' ].keys ():
32+ source = data ['release' ]['build' ]
33+ template = compiler .compile (source )
34+ commands .append (template (payload ))
35+
36+ if 'deploy' in data ['release' ].keys ():
37+ source = data ['release' ]['deploy' ]
38+ template = compiler .compile (source )
39+ commands .append (template (payload ))
40+
41+ if 'cleanup' in data ['release' ].keys ():
42+ source = data ['release' ]['cleanup' ]
43+ template = compiler .compile (source )
44+ commands .append (template (payload ))
45+
46+ subprocess .check_call (
47+ ['git' , 'fetch' , '--all' , '--tags' ], cwd = data ['path' ])
48+ subprocess .check_call (
49+ ['git' , 'checkout' , 'tags/' + payload ['release' ]['tag_name' ]], cwd = data ['path' ])
50+
51+ with subprocess .Popen (' && ' .join (commands ), cwd = data ['path' ], executable = '/bin/bash' , shell = True ) as process :
52+ try :
53+ process .communicate (timeout = 300 )
54+ except subprocess .TimeoutExpired :
55+ print ('Process was killed by timeout: 300 seconds' )
56+ raise
57+ finally :
58+ print ('Process complete' )
59+ process .kill ()
60+ process .communicate ()
61+ print ('Release complete!' )
6662
6763 return
0 commit comments