subiquity/scripts/update-part.py

41 lines
953 B
Python
Raw Normal View History

#!/usr/bin/python3
import os
import subprocess
import sys
import yaml
part = sys.argv[1]
def r(*args, **kw):
print('running', args)
subprocess.run(args, check=True, **kw)
def o(*args, **kw):
return subprocess.run(args, check=True, stdout=subprocess.PIPE).stdout
with open("snapcraft.yaml") as f:
config = yaml.safe_load(f)["parts"][part]
c = "master"
for k in "source-commit", "source-tag", "source-branch":
if k in config:
c = config[k]
break
if not os.path.isdir(part):
r('git', 'clone', config['source'], part)
expected = o('git', '-C', part, 'rev-parse', c)
actual = o('git', '-C', part, 'rev-parse', 'HEAD')
if expected != actual:
try:
r('git', '-c', 'advice.detachedHead=false', '-C', part, 'checkout', c)
except subprocess.CalledProcessError:
r('git', '-C', part, 'fetch', config['source'])
r('git', '-c', 'advice.detachedHead=false', '-C', part, 'checkout', c)