Procházet zdrojové kódy

Implement _set_components().

tags/v0.1^2
Ben Kurtovic před 11 roky
rodič
revize
dc2d69dd36
1 změnil soubory, kde provedl 37 přidání a 15 odebrání
  1. +37
    -15
      earwigbot/config/script.py

+ 37
- 15
earwigbot/config/script.py Zobrazit soubor

@@ -20,6 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

from collections import OrderedDict
from getpass import getpass
import re
from textwrap import fill, wrap
@@ -43,15 +44,15 @@ class ConfigScript(object):

def __init__(self, config):
self.config = config
self.data = {
"metadata": None,
"components": None,
"wiki": None,
"irc": None,
"commands": None,
"tasks": None,
"schedule": None,
}
self.data = OrderedDict(
("metadata", OrderedDict()),
("components", OrderedDict()),
("wiki", OrderedDict()),
("irc", OrderedDict()),
("commands", OrderedDict()),
("tasks", OrderedDict()),
("schedule", [])
)

def _print(self, msg):
print fill(re.sub("\s\s+", " ", msg), self.WIDTH)
@@ -59,14 +60,14 @@ class ConfigScript(object):
def _ask_bool(self, text, default=True):
text = "> " + text
if default:
text += " [Y/n] "
text += " [Y/n]"
else:
text += " [y/N] "
text += " [y/N]"
lines = wrap(re.sub("\s\s+", " ", msg), self.WIDTH)
if len(lines) > 1:
print "\n".join(lines[:-1])
while True:
answer = raw_input(lines[-1]).lower()
answer = raw_input(lines[-1] + " ").lower()
if not answer:
return default
if answer.startswith("y"):
@@ -75,7 +76,8 @@ class ConfigScript(object):
return False

def _set_metadata(self):
self.data["metadata"] = {"version": 1}
print
self.data["metadata"] = OrderedDict(("version", 1))
self._print("""I can encrypt passwords stored in your config file in
addition to preventing other users on your system from
reading the file. Encryption is recommended is the bot
@@ -100,7 +102,28 @@ class ConfigScript(object):
self.data["metadata"]["enableLogging"] = self._ask_bool(question)

def _set_components(self):
pass
print
self._print("""The bot contains three separate components that can run
independently of each other.""")
self._print("""- The IRC front-end runs on a normal IRC server, like
freenode, and expects users to interact with it through
commands.""")
self._print("""- The IRC watcher runs on a wiki recent-changes server,
like irc.wikimedia.org, and listens for edits. Users
cannot interact with this component. It can detect
specific events and report them to "feed" channels on
the front-end, or start bot tasks.""")
self._pritn("""- The wiki task scheduler runs wiki-editing bot tasks in
separate threads at user-defined times through a
cron-like interface. Tasks which are not scheduled can
be started by the IRC watcher manually through the IRC
front-end.""")
frontend = self._ask_bool("Enable the IRC front-end?")
watcher = self._ask_bool("Enable the IRC watcher?")
scheduler = self._ask_bool("Enable the wiki task scheduler?")
self.data["components"]["irc_frontend"] = frontend
self.data["components"]["irc_watcher"] = watcher
self.data["components"]["wiki_scheduler"] = scheduler

def _set_wiki(self):
pass
@@ -123,7 +146,6 @@ class ConfigScript(object):

def make_new(self):
"""Make a new config file based on the user's input."""
print
self._set_metadata()
self._set_components()
self._set_wiki()


Načítá se…
Zrušit
Uložit