Restructure contrib_bots bots to new layout.

In order to make the layout of all bots consistent, this commit
moves each bot into a folder with its name and modifies 'run.py'
so that only bots with such a structure can be executed. 'lib'
gets renamed to 'bots'.
This commit is contained in:
Robert Hönig 2017-01-22 10:38:34 +00:00 committed by showell
parent 51b88e3d8c
commit fefe869748
57 changed files with 20 additions and 23 deletions

View file

@ -17,7 +17,7 @@ the user home directory and add an API key.
Move Move
``` ```
~/zulip/contrib_bots/lib/CommuteBot/google-commute.ini ~/zulip/contrib_bots/bots/commute_bot/CommuteBot/google-commute.ini
``` ```
into into

View file

@ -62,7 +62,9 @@ class CommuteHandler(object):
Please note: Please note:
Fare information can be derived, though is solely dependent on the Fare information can be derived, though is solely dependent on the
availability of the informatipython run.py lib/followup.py --config-file ~/.zuliprc-localon released by public transport operators. availability of the information
python run.py bots/followup/followup.py --config-file ~/.zuliprc-local
released by public transport operators.
Duration in traffic can only be derived if a departure time is set. Duration in traffic can only be derived if a departure time is set.
If a location has spaces in its name, please use a + symbol in the If a location has spaces in its name, please use a + symbol in the
place of the space/s. place of the space/s.
@ -88,7 +90,7 @@ class CommuteHandler(object):
# adds API Authentication Key to url request # adds API Authentication Key to url request
def get_api_key(self): def get_api_key(self):
# google-commute.ini must have been moved from # google-commute.ini must have been moved from
# ~/zulip/contrib_bots/lib/CommuteBot/google-commute.ini into # ~/zulip/contrib_bots/bots/commute_bot/CommuteBot/google-commute.ini into
# /google-commute.ini for program to work # /google-commute.ini for program to work
# see doc.md for more information # see doc.md for more information
with open(CONFIG_PATH) as settings: with open(CONFIG_PATH) as settings:

View file

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View file

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View file

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 287 KiB

View file

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 180 KiB

View file

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View file

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

View file

@ -9,11 +9,11 @@ from six.moves import configparser as cp
from six.moves import range from six.moves import range
home = expanduser('~') home = expanduser('~')
CONFIG_PATH = home + '/zulip/contrib_bots/lib/FourSquareBot/settings.ini' CONFIG_PATH = home + '/zulip/contrib_bots/bots/foursquare/FourSquareBot/settings.ini'
def get_api_key(): def get_api_key():
# settings.ini must have been moved from # settings.ini must have been moved from
# ~/zulip/contrib_bots/lib/FourSquareBot/settings.ini into # ~/zulip/contrib_bots/bots/foursquare/FourSquareBot/settings.ini into
# ~/settings.ini for program to work # ~/settings.ini for program to work
# see doc.md for more information # see doc.md for more information
with open(CONFIG_PATH) as settings: with open(CONFIG_PATH) as settings:

View file

@ -27,7 +27,7 @@ Here is an example of running the `git_hub_comment` bot from
inside a Zulip repo: inside a Zulip repo:
`cd ~/zulip/contrib_bots` `cd ~/zulip/contrib_bots`
`./run.py lib/git_hub_comment.py --config-file ~/.zuliprc-prod` `./run.py bots/git_hub_comment/git_hub_comment.py --config-file ~/.zuliprc-prod`
Once the bot code starts running, you will see a Once the bot code starts running, you will see a
message explaining how to use the bot, as well as message explaining how to use the bot, as well as

View file

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View file

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View file

Before

Width:  |  Height:  |  Size: 9 KiB

After

Width:  |  Height:  |  Size: 9 KiB

View file

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View file

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View file

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View file

@ -33,7 +33,7 @@ Here is an example of running the "follow-up" bot from
inside a Zulip repo (and in your remote instance): inside a Zulip repo (and in your remote instance):
cd ~/zulip/contrib_bots cd ~/zulip/contrib_bots
./run.py lib/followup.py --config-file ~/.zuliprc-prod ./run.py bots/followup/followup.py --config-file ~/.zuliprc-prod
Once the bot code starts running, you will see a Once the bot code starts running, you will see a
message explaining how to use the bot, as well as message explaining how to use the bot, as well as

View file

@ -1,4 +1,4 @@
# See zulip/contrib_bots/lib/readme.md for instructions on running this code. # See zulip/contrib_bots/bots/readme.md for instructions on running this code.
from __future__ import print_function from __future__ import print_function
import sys import sys
import logging import logging

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View file

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View file

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View file

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View file

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -55,7 +55,7 @@ Here is an example of running the "yoda_bot" bot from
inside a Zulip repo: inside a Zulip repo:
cd ~/zulip/contrib_bots cd ~/zulip/contrib_bots
./run.py lib/yoda_bot.py --config-file ~/.zuliprc-prod ./run.py bots/yoda_bot/yoda_bot.py --config-file ~/.zuliprc-prod
Once the bot code starts running, you will see a Once the bot code starts running, you will see a
message explaining how to use the bot, as well as message explaining how to use the bot, as well as

View file

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 229 KiB

View file

@ -12,36 +12,31 @@ sys.path.insert(0, our_dir)
from bot_lib import run_message_handler_for_bot from bot_lib import run_message_handler_for_bot
def get_lib_module(lib_fn): def get_lib_module(bots_fn):
lib_fn = os.path.abspath(lib_fn) bots_fn = os.path.abspath(bots_fn)
if not os.path.dirname(lib_fn).startswith(os.path.join(our_dir, 'lib')): if not os.path.dirname(bots_fn).startswith(os.path.join(our_dir, 'bots')):
print('Sorry, we will only import code from contrib_bots/lib.') print('Sorry, we will only import code from contrib_bots/bots.')
sys.exit(1) sys.exit(1)
if not lib_fn.endswith('.py'): if not bots_fn.endswith('.py'):
print('Please use a .py extension for library files.') print('Please use a .py extension for library files.')
sys.exit(1) sys.exit(1)
base_bots_fn = os.path.basename(os.path.splitext(bots_fn)[0])
sys.path.append('lib') sys.path.append('bots/{}'.format(base_bots_fn))
base_lib_fn = os.path.basename(os.path.splitext(lib_fn)[0]) module_name = base_bots_fn
module_name = 'lib.' + base_lib_fn
module = importlib.import_module(module_name) module = importlib.import_module(module_name)
return module return module
def run(): def run():
usage = ''' usage = '''
./run.py <lib file> ./run.py <lib file>
Example: ./run.py lib/followup.py Example: ./run.py lib/followup.py
(This program loads bot-related code from the (This program loads bot-related code from the
library code and then runs a message loop, library code and then runs a message loop,
feeding messages to the library code to handle.) feeding messages to the library code to handle.)
Please make sure you have a current ~/.zuliprc Please make sure you have a current ~/.zuliprc
file with the credentials you want to use for file with the credentials you want to use for
this bot. this bot.
See lib/readme.md for more context. See lib/readme.md for more context.
''' '''
@ -58,7 +53,7 @@ def run():
print('You must specify a library!') print('You must specify a library!')
sys.exit(1) sys.exit(1)
lib_module = get_lib_module(lib_fn=args[0]) lib_module = get_lib_module(bots_fn=args[0])
if not options.quiet: if not options.quiet:
logging.basicConfig(stream=sys.stdout, level=logging.INFO) logging.basicConfig(stream=sys.stdout, level=logging.INFO)