limnoria-phabricator/config.py
Stanislas Daniel Claude Dolcini 17370a3842
Some checks failed
pre-commit / build (push) Failing after 2m23s
Add lint
2024-08-21 20:50:51 +02:00

297 lines
7.2 KiB
Python

###
# Copyright (c) 2017, elexis
# All rights reserved.
###
import supybot.conf as conf
import supybot.registry as registry
try:
from supybot.i18n import PluginInternationalization
_ = PluginInternationalization("Phabricator")
except:
# Placeholder that allows to run the plugin on a bot
# without the i18n module
_ = lambda x: x
# Let the user answer questions to configure the registered options
def configure(advanced):
from supybot.questions import anything, something, yn
conf.registerPlugin("Phabricator", True)
Phabricator.phabricatorURL.setValue(
something(
"Specify the URL of the Phabricator location.",
default="code.wildfiregames.com",
)
)
Phabricator.phabricatorToken.setValue(
something(
"Specify the token to access the Phabricator conduit API.",
default="code.wildfiregames.com",
)
)
Phabricator.acceptInvalidSSLCert.setValue(
something("Accept invalid SSL certificates?", default=False)
)
Phabricator.httpTimeout.setValue(something("HTTP timeout", default=40))
Phabricator.channels.setValue(
anything(
"On which irc channels the bot should post Phabricator updates. If empty, prints on each joined channel.",
default="",
acceptEmpty=True,
)
)
Phabricator.storyLimit.setValue(
something("Number of stories to pull at most per HTTP request", default=5)
)
Phabricator.historyForwards.setValue(
yn("Traverse history chronologically forwards (or backwards)?", default=True)
)
Phabricator.timestampAfter.setValue(
anything("To ignore messages after this date, type a timestamp", default=0)
)
Phabricator.timestampBefore.setValue(
anything("To ignore messages before this date, type a timestamp", default=0)
)
Phabricator.sleepTime.setValue(
something(
"Number of seconds between consecutive HTTP request for phabricator stories",
default=30,
)
)
Phabricator.newsPrefix.setValue(
anything("Enter string to be preceeeded with Phabricator updates"),
default="News from the project:",
)
Phabricator.printDate.setValue(
yn(
"Whether to print a human readable timestamp in front of each update notification"
),
default=False,
)
Phabricator.chronokeyFile.setValue(
something(
"Filename to store the most recently processed chronological key",
default="chronokey.txt",
)
)
Phabricator.ignoredUsers.setValue(
anything(
"Updates of these usernames will remain hidden.",
default="Harbormaster Vulcan",
acceptEmpty=True,
)
)
Phabricator.filteredUsers.setValue(
anything(
"Only updates of these usernames will be shown.",
default="Harbormaster Vulcan",
acceptEmpty=True,
)
)
Phabricator.notifyRetitle.setValue(
yn("Notify if differentials are retitled?", default=True)
)
Phabricator.notifyCommit.setValue(
yn("Notify if a developer committed a patch?", default=True)
)
Phabricator.obscureUsernames.setValue(
yn(
"Prevent the bot from pinging irc users in updates by inserting invisible whitespace in the username?",
default=True,
)
)
Phabricator.verbose.setValue(
yn("Display spammy, verbose debug output?", default=False)
)
# Register valid options
Phabricator = conf.registerPlugin("Phabricator")
conf.registerGlobalValue(
Phabricator,
"phabricatorURL",
registry.String("", _("URL of a Phabricator instance.")),
)
conf.registerGlobalValue(
Phabricator,
"phabricatorToken",
registry.String("", _("Token to access Phabricators conduit API.")),
)
conf.registerGlobalValue(
Phabricator,
"acceptInvalidSSLCert",
registry.Boolean(False, _("Whether to accept invalid SSL certificates.")),
)
conf.registerGlobalValue(
Phabricator,
"httpTimeout",
registry.PositiveInteger(
40, _("How long to wait for HTTP(S) responses until aborting the request.")
),
)
conf.registerGlobalValue(
Phabricator,
"channels",
registry.SpaceSeparatedListOfStrings(
"",
_(
"List of channels on which the bot posts Phabricator updates. If empty, prints on each joined channel."
),
),
)
conf.registerGlobalValue(
Phabricator,
"storyLimit",
registry.PositiveInteger(
5, _("Limit of phabricator updates to pull information about in one request.")
),
)
conf.registerGlobalValue(
Phabricator,
"historyForwards",
registry.Boolean(
True, _("Whether to traverse in history chronologically forwards or backwards.")
),
)
conf.registerGlobalValue(
Phabricator,
"timestampAfter",
registry.NonNegativeInteger(0, _("If given, ignore messages after this timestamp")),
)
conf.registerGlobalValue(
Phabricator,
"timestampBefore",
registry.NonNegativeInteger(
0, _("If given, ignore messages before this timestamp")
),
)
conf.registerGlobalValue(
Phabricator,
"sleepTime",
registry.NonNegativeInteger(
30,
_(
"Notify IRC users about phabricator updates of all users, excluding these (for example bots)"
),
),
)
conf.registerGlobalValue(
Phabricator,
"newsPrefix",
registry.String(
"News from the project:",
_("A string to be shown in front of every Phabricator update notification"),
),
)
conf.registerGlobalValue(
Phabricator,
"printDate",
registry.Boolean(
False,
_(
"Whether to print a human readable formatted date in front of each update notification"
),
),
)
conf.registerGlobalValue(
Phabricator,
"chronokeyFile",
registry.String(
"chronokey.txt",
_(
"Filename containing the chronological key of the most recently parsed phabricator update."
),
),
)
conf.registerGlobalValue(
Phabricator,
"ignoredUsers",
registry.SpaceSeparatedListOfStrings(
"",
_(
"Notify IRC users about phabricator updates of all users, excluding these (for example bots)"
),
),
)
conf.registerGlobalValue(
Phabricator,
"filteredUsers",
registry.SpaceSeparatedListOfStrings(
"", _("Only notify IRC users about phabricator updates of these users)")
),
)
conf.registerGlobalValue(
Phabricator,
"notifyCommit",
registry.Boolean(
True, _("Whether to post a notification if a patch was committed")
),
)
conf.registerGlobalValue(
Phabricator,
"notifyRetitle",
registry.Boolean(
True, _("Whether to post a notification if a differential was renamed")
),
)
conf.registerGlobalValue(
Phabricator,
"obscureUsernames",
registry.Boolean(
True,
_(
"Inserts invisible whitespace in the username, so that the bot doesn't ping irc users if they update something"
),
),
)
conf.registerGlobalValue(
Phabricator,
"verbose",
registry.Boolean(
False, _("Whether to display verbose and potentially spammy debug output")
),
)