diff options
author | Emilio Pozuelo Monfort <pochu@debian.org> | 2020-09-08 18:27:37 +0200 |
---|---|---|
committer | Emilio Pozuelo Monfort <pochu@debian.org> | 2020-09-08 18:27:37 +0200 |
commit | 4bbcc4e7f6dca79b837456936559a1e53ad4fcf5 (patch) | |
tree | fa69d0cc6333221b662e3b2aa5f94d6c80d4eac8 /english | |
parent | eb19a2f6e4dabdc2aff7908acc362a2236e68c79 (diff) |
find-missing-advisories: readd author information
But hide it under a --author switch.
Diffstat (limited to 'english')
-rwxr-xr-x | english/security/find-missing-advisories | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/english/security/find-missing-advisories b/english/security/find-missing-advisories index 318ffa1b0e7..0f060556561 100755 --- a/english/security/find-missing-advisories +++ b/english/security/find-missing-advisories @@ -55,6 +55,8 @@ def main(): help='show debug information') parser.add_argument('--mode', default='DSA', choices=('DSA', 'DLA'), help='which sort of advisory to check (default: %(default)s)') # noqa: E501 + parser.add_argument('--author', action='store_true', + help='print who reserved the advisory, requires --tracker') args = parser.parse_args() if not args.directory: @@ -72,6 +74,18 @@ def main(): for adv in parse_advisories(response.iter_lines(decode_unicode=True)): check_advisory(args.mode, args.directory, **adv) else: + if args.author: + try: + import git + + repo = git.Repo(args.tracker) + for commit, lines in repo.blame('HEAD', 'data/%s/list' % args.mode): + for adv in parse_advisories(lines): + check_advisory(args.mode, args.directory, **adv, author=commit.author) + return + except ImportError: + logging.error('git module not found, will not report author information') + with open(os.path.join(args.tracker,'data',args.mode,'list')) as text: for adv in parse_advisories(text): check_advisory(args.mode, args.directory, **adv) @@ -88,7 +102,7 @@ def parse_advisories(stream): logging.warning('malformed line: "%s"', line) -def check_advisory(mode, directory, year, date, number, errata, package): +def check_advisory(mode, directory, year, date, number, errata, package, author=None): if errata is None: errata = '1' @@ -109,8 +123,11 @@ def check_advisory(mode, directory, year, date, number, errata, package): logging.debug('both data and wml files found, without -1') found = True if not found: - logging.error('.data or .wml file missing for %s %s-%s (%s) (%s)', - mode, number, errata, date, package, + author_info = "" + if author: + author_info = " (reserved by %s)" % (author) + logging.error('.data or .wml file missing for %s %s-%s (%s) (%s)%s', + mode, number, errata, date, package, author_info ) |