# -*- python -*-
# ex: set syntax=python:

from buildbot.changes.pb import PBChangeSource
from buildbot.status import html
from buildbot.status.web.authz import Authz

from committer_auth import CommitterAuth
from loadConfig import *


c = BuildmasterConfig = {}

c['change_source'] = PBChangeSource(port=16000)

# permissions for WebStatus
authz = Authz(
    auth=CommitterAuth('auth.json'),
    forceBuild='auth',
    forceAllBuilds='auth',
    pingBuilder=True,
    gracefulShutdown=False,
    stopBuild='auth',
    stopAllBuilds='auth',
    cancelPendingBuild='auth',
    stopChange=True,
    cleanShutdown=False)

c['status'] = []
c['status'].append(html.WebStatus(http_port=8710,
                                  revlink="https://trac.webkit.org/changeset/%s", 
                                  changecommentlink=(r"(https://bugs\.webkit\.org/show_bug\.cgi\?id=|webkit\.org/b/)(\d+)", r"https://bugs.webkit.org/show_bug.cgi?id=\2"),
                                  authz=authz))

c['slavePortnum'] = 17000
c['projectName'] = "WebKit"
c['projectURL'] = "https://webkit.org"
c['buildbotURL'] = "https://build.webkit.org/"

c['buildHorizon'] = 1000
c['logHorizon'] = 500
c['eventHorizon'] = 200
c['buildCacheSize'] = 60


loadBuilderConfig(c)
