Home | History | Annotate | Download | only in common
      1 # Copyright (c) 2010 Google Inc. All rights reserved.
      2 # Copyright (c) 2009 Apple Inc. All rights reserved.
      3 #
      4 # Redistribution and use in source and binary forms, with or without
      5 # modification, are permitted provided that the following conditions are
      6 # met:
      7 #
      8 #     * Redistributions of source code must retain the above copyright
      9 # notice, this list of conditions and the following disclaimer.
     10 #     * Redistributions in binary form must reproduce the above
     11 # copyright notice, this list of conditions and the following disclaimer
     12 # in the documentation and/or other materials provided with the
     13 # distribution.
     14 #     * Neither the name of Google Inc. nor the names of its
     15 # contributors may be used to endorse or promote products derived from
     16 # this software without specific prior written permission.
     17 #
     18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29 
     30 
     31 from webkitpy.common.checkout.api import Checkout
     32 from webkitpy.common.checkout.scm import default_scm
     33 from webkitpy.common.config.ports import WebKitPort
     34 from webkitpy.common.net import bugzilla, buildbot, irc, statusserver
     35 from webkitpy.common.system import executive, filesystem, platforminfo, user, workspace
     36 from webkitpy.layout_tests import port
     37 
     38 
     39 class Host(object):
     40     def __init__(self):
     41         self.bugs = bugzilla.Bugzilla()
     42         self.buildbot = buildbot.BuildBot()
     43         self.executive = executive.Executive()
     44         self._irc = None
     45         self.filesystem = filesystem.FileSystem()
     46         self.workspace = workspace.Workspace(self.filesystem, self.executive)
     47         self._port = None
     48         self.user = user.User()
     49         self._scm = None
     50         self._checkout = None
     51         self.status_server = statusserver.StatusServer()
     52         self.port_factory = port.factory
     53         self.platform = platforminfo.PlatformInfo()
     54 
     55     def _initialize_scm(self, patch_directories=None):
     56         self._scm = default_scm(patch_directories)
     57         self._checkout = Checkout(self.scm())
     58 
     59     def scm(self):
     60         return self._scm
     61 
     62     def checkout(self):
     63         return self._checkout
     64 
     65     def port(self):
     66         return self._port
     67 
     68     def ensure_irc_connected(self, irc_delegate):
     69         if not self._irc:
     70             self._irc = irc.ircproxy.IRCProxy(irc_delegate)
     71 
     72     def irc(self):
     73         # We don't automatically construct IRCProxy here because constructing
     74         # IRCProxy actually connects to IRC.  We want clients to explicitly
     75         # connect to IRC.
     76         return self._irc
     77 
     78     def command_completed(self):
     79         if self._irc:
     80             self._irc.disconnect()
     81