diff --git a/opam2rpm.py b/opam2rpm.py
index 8f8e0f8..730430c 100755
--- a/opam2rpm.py
+++ b/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'):
diff --git a/templates/service b/templates/service
index 6b8883d..9ddc7b4 100644
--- a/templates/service
+++ b/templates/service
@@ -4,6 +4,9 @@
git
@PARENT_TAG@
@PARENT_TAG@
+ {%- if version.startswith('v') %}
+ v(.*)
+ {%- endif %}
enable