diff --git a/tools/check_channels.py b/tools/check_channels.py new file mode 100755 index 00000000..69efb296 --- /dev/null +++ b/tools/check_channels.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from __future__ import print_function + +import argparse +from yaml2ical import meeting + +channels = set(['openstack-meeting', 'openstack-meeting-alt', + 'openstack-meeting-3', 'openstack-meeting-4', + 'openstack-meeting-cp', + # NOTE(tonyb)These channels are acceptable as they're for + # office hours rather than offical meetings and do not require + # MeetBot + 'openstack-community', 'openstack-neutron-release']) + + +def main(): + # build option parser: + description = """ +A tool that checks if the IRC channel happens in is capable of running a +fully functional MeetBot. +""" + + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description=description) + + parser.add_argument("-y", "--yamldir", + dest="yaml_dir", + required=True, + help="directory containing YAML to process") + + args = parser.parse_args() + meetings = meeting.load_meetings(args.yaml_dir) + for m in meetings: + for s in m.schedules: + if s.irc not in channels: + raise ValueError(("%s: IRC channel: %s not in (%s)") % + (s.filefrom, s.irc, + ', '.join(channels))) + +if __name__ == '__main__': + main() diff --git a/tox.ini b/tox.ini index cdb9b9f1..4d837926 100644 --- a/tox.ini +++ b/tox.ini @@ -20,3 +20,7 @@ commands = -y meetings -o output/irc-meetings.ical \ -t meetingindex.jinja -w output/index.html -f yaml2ical -y meetings -i output/calendars/ -f + +[testenv:check] +commands = + python tools/check_channels.py -y meetings