Detect and rewrite versions
Fetch latest tag from GitHub API and detect if it requires a pattern rewrite. Currently supports tagged releases starting with "v". Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
This commit is contained in:
parent
3f72623da1
commit
f5aa9ae35c
26
opam2rpm.py
26
opam2rpm.py
@ -73,12 +73,26 @@ class parse_opam():
|
||||
log.debug(f'Returning info dict: {self.info}')
|
||||
return self.info
|
||||
|
||||
def get_latest_tag(repository):
|
||||
url = f'https://api.github.com/repos/{repository}/tags'
|
||||
result = requests.get(url)
|
||||
status = result.status_code
|
||||
logmsg = f'{url} returned {status}'
|
||||
if status != 200:
|
||||
_fail(logmsg)
|
||||
log.debug(logmsg)
|
||||
tag = result.json()[0]['name']
|
||||
log.debug(f'Found latest tag: {tag}')
|
||||
return tag
|
||||
|
||||
def parse_homepage(homepage):
|
||||
if 'github.com' in homepage:
|
||||
repository_url = f'{homepage}.git'
|
||||
log.debug(f'Set repository URL to {repository_url}')
|
||||
repository_name = homepage.rsplit('/')[-1]
|
||||
hpsplit = homepage.rsplit('/')
|
||||
repository_name = hpsplit[-1]
|
||||
log.debug(f'Set repository name to {repository_name}')
|
||||
latest_tag = get_latest_tag('/'.join(hpsplit[3:]))
|
||||
# add parsing for other common homepages here
|
||||
else:
|
||||
_fail(f'Unsupported homepage: {homepage}')
|
||||
@ -88,7 +102,7 @@ def parse_homepage(homepage):
|
||||
else:
|
||||
is_prefixed = False
|
||||
|
||||
return repository_url, repository_name, is_prefixed
|
||||
return repository_url, repository_name, is_prefixed, latest_tag
|
||||
|
||||
def evaluate_prefixing(upstream_prefixed):
|
||||
if upstream_prefixed and downstream_prefixed:
|
||||
@ -131,14 +145,14 @@ def manglepkgname(srcname, add_prefix):
|
||||
pkgname = srcname
|
||||
return pkgname
|
||||
|
||||
def render(name, srcname, url, license, buildrequires, prefixed, vcs_url=None):
|
||||
def render(name, srcname, url, license, buildrequires, prefixed, version, vcs_url=None):
|
||||
if not vcs_url:
|
||||
vcs_url = url
|
||||
templenv = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=f'{mydir}/templates'))
|
||||
template_service = templenv.get_template('service')
|
||||
template_spec = templenv.get_template('ultimate.spec')
|
||||
log.debug(f'Rendering {template_spec}')
|
||||
rendered_service = template_service.render(pkgname=name, url=vcs_url)
|
||||
rendered_service = template_service.render(pkgname=name, url=vcs_url, version=version)
|
||||
rendered_spec = template_spec.render(pkgname=srcname, url=url, buildrequires=buildrequires, license=license, mode='dune', do_prefix=prefixed)
|
||||
|
||||
log.debug(f'Service: {rendered_service}')
|
||||
@ -172,12 +186,12 @@ def spec_cleaner(file):
|
||||
def main():
|
||||
opam_package = parse_opam(query_opam(args.package))
|
||||
info = opam_package.get_info()
|
||||
repository_url, name, is_prefixed = parse_homepage(info['Homepage'])
|
||||
repository_url, name, is_prefixed, version = parse_homepage(info['Homepage'])
|
||||
add_prefix = evaluate_prefixing(is_prefixed)
|
||||
dependencies = parse_dependencies(info['Dependencies'])
|
||||
srcname = manglesrcname(name)
|
||||
pkgname = manglepkgname(name, add_prefix)
|
||||
data_service, data_spec = render(name, srcname, info['Homepage'], info['License'], dependencies, add_prefix, repository_url)
|
||||
data_service, data_spec = render(name, srcname, info['Homepage'], info['License'], dependencies, add_prefix, version, repository_url)
|
||||
prjdir = args.obs_project_dir
|
||||
if prjdir:
|
||||
if not os.path.isfile(f'{prjdir}/.osc/_project'):
|
||||
|
@ -4,6 +4,9 @@
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">@PARENT_TAG@</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
{%- if version.startswith('v') %}
|
||||
<param name="versionrewrite-pattern">v(.*)</param>
|
||||
{%- endif %}
|
||||
<param name="changesgenerate">enable</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar">
|
||||
|
Loading…
x
Reference in New Issue
Block a user