File: git.py

package info (click to toggle)
nvchecker 2.19-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 804 kB
  • sloc: python: 5,192; makefile: 30; sh: 27
file content (43 lines) | stat: -rw-r--r-- 1,091 bytes parent folder | download
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
# MIT licensed
# Copyright (c) 2020 Felix Yan <felixonmars@archlinux.org>, et al.

from functools import partial

from .cmd import run_cmd

from nvchecker.api import RichResult

async def get_version(
  name, conf, *, cache, keymanager=None
):
  git = conf['git']

  use_commit = conf.get('use_commit', False)
  if use_commit:
    ref = conf.get('branch')
    if ref is None:
      ref = 'HEAD'
      gitref = None
    else:
      ref = 'refs/heads/' + ref
      gitref = ref
    cmd = f"git ls-remote {git} {ref}"
    data = await cache.get(cmd, partial(run_cmd, name))
    version = data.split(None, 1)[0]
    return RichResult(
      version = version,
      revision = version,
      gitref = gitref,
    )
  else:
    cmd = f"git ls-remote --tags --refs {git}"
    data = await cache.get(cmd, partial(run_cmd, name))
    versions = []
    for line in data.splitlines():
      revision, version = line.split("\trefs/tags/", 1)
      versions.append(RichResult(
        version = version,
        revision = revision,
        gitref = f"refs/tags/{version}",
      ))
    return versions