view commitwatcher/agent.py @ 6:883c88b13142

commitwatcher/agent.py commitwatcher/store.py mozbasewatcher.py
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 27 Sep 2013 13:03:40 -0700
parents 4cb3971d9d9d
children 296af1d32b6a
line wrap: on
line source

"""
agents to gather commits
"""

import feedparser
from .commit import Commit
from .store import MemoryStore

class Agent(object):
    """abstract base class"""

    def __init__(self, repository, store=None):
        """
        repository -- repo to monitor
        """
        self.repository = repository
        self.store = MemoryStore() if store is None else store


class LocalCheckoutAgent(object):
    """agent based on local checkouts"""


class FeedAgent(Agent):
    """gathers changesets by reading RSS/Atom"""

    def feed(self):
        """feed URL"""
        return '/'.join((self.repository.rstrip('/'), 'atom-log'))

    def update(self):
        """update"""

        feed = feedparser.parse(self.feed())
        for entry in feedparser['entries']:

            # get paths from diff
            link = entry['link']
            # TODO

            commit = Commit()