summaryrefslogtreecommitdiffstats
path: root/bin/reproducible_setup_notify.py
blob: 80ef9a63ff8ad156a37668adcd0e6f5892bfadad (plain)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#
# Copyright © 2015 Mattia Rizzolo <mattia@mapreri.org>
# Licensed under GPL-2
#
# Depends: python3
#
# Choose which packages should trigger an email to the maintainer when the
# reproducibly status change

import argparse

parser = argparse.ArgumentParser(
    description='Choose which packages should trigger an email to the ' +
                'maintainer when the reproducibly status change',
    epilog='The build results will be announced on the #debian-reproducible' +
           ' IRC channel.')
group = parser.add_mutually_exclusive_group()
parser.add_argument('-o', '--deactivate', action='store_true',
                    help='Deactivate the notifications')
group.add_argument('-p', '--packages', default='', nargs='+',
                   help='list of packages for which activate notifications')
local_args = parser.parse_known_args()[0]

# these are here as an hack to be able to parse the command line
from reproducible_common import *


class bcolors:
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'
    GOOD = '\033[92m'
    WARN = '\033[93m' + UNDERLINE
    FAIL = '\033[91m' + BOLD + UNDERLINE
    ENDC = '\033[0m'

packages = local_args.packages

if not packages:
    log.critical(bcolors.FAIL + 'You have to specify at least a package' +
                 bcolors.ENDC)

def _good(text):
    log.info(bcolors.GOOD + str(text) + bcolors.ENDC)

c = conn_db.cursor()

for package in packages:
    if local_args.deactivate:
        _good('Deactovating notification for package ' + str(package))
        flag = 0
    else:
        _good('Activating notification for package ' + str(package))
        flag = 1
    rows = c.execute(('UPDATE OR FAIL sources SET notify_maintainer="{}" ' +
                     'WHERE name="{}"').format(flag, package)).rowcount
    conn_db.commit()
    if rows == 0:
        log.error(bcolors.FAIL + str(package) + ' does not exists')
        sys.exit(1)
    if DEBUG:
        log.debug('Double check the change:')
        query = 'SELECT * FROM sources WHERE name="{}"'.format(package)
        log.debug(query_db(query))