Beispiel #1
0
def cleanup_src(buildout):
    """ We want to erase folders in src for which the source path is out of date
    """
    mrdeveloper = Extension(buildout)
    sources = mrdeveloper.get_sources()

    # sources is {'eea.eggmonkey': {'url':
    #           'https://svn/repositories/Zope/trunk/eea.eggmonkey/trunk',
    #           'path': '/eea.eggmonkey.testbuildout/src/eea.eggmonkey',
    #           'kind': 'svn', 'name': 'eea.eggmonkey'}}

    for pkg, info in sources.items():
        path = info['path']
        url = info['url']
        kind = info['kind']
        if kind == 'fs':
            continue
        if not os.path.exists(path):
            continue
        scm = get_scm(path, False)
        if url.endswith('/'):
            url = url[:-1]
        if scm.get_repo_url() != url:
            if not scm.is_dirty():
                print(
                    "EGGMONKEY: erasing %s as it has "
                    "an outdated repo path" % pkg)
                shutil.rmtree(path, ignore_errors=True)
Beispiel #2
0
def cleanup_src(buildout):
    """ We want to erase folders in src for which the source path is out of date
    """
    mrdeveloper = Extension(buildout)
    sources = mrdeveloper.get_sources()

    # sources is {'eea.eggmonkey': {'url':
    #           'https://svn/repositories/Zope/trunk/eea.eggmonkey/trunk',
    #           'path': '/eea.eggmonkey.testbuildout/src/eea.eggmonkey',
    #           'kind': 'svn', 'name': 'eea.eggmonkey'}}

    for pkg, info in sources.items():
        path = info['path']
        url = info['url']
        kind = info['kind']
        if kind == 'fs':
            continue
        if not os.path.exists(path):
            continue
        scm = get_scm(path, False)
        if url.endswith('/'):
            url = url[:-1]
        if scm.get_repo_url() != url:
            if not scm.is_dirty():
                print ("EGGMONKEY: erasing %s as it has "
                       "an outdated repo path" % pkg)
                shutil.rmtree(path, ignore_errors=True)
Beispiel #3
0
    def __call__(self, *args, **kwargs):
        logger.setLevel(logging.INFO)
        ch = logging.StreamHandler()
        ch.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
        logger.addHandler(ch)
        self.parser = ArgumentParser()
        version = pkg_resources.get_distribution("mr.developer").version
        self.parser.add_argument('-v',
                                 '--version',
                                 action='version',
                                 version='mr.developer %s' % version)
        self.parsers = self.parser.add_subparsers(title="commands", metavar="")

        for command in get_commands():
            command(self)

        if not args:
            args = None
        args = self.parser.parse_args(args)

        try:
            self.buildout_dir = find_base()
        except IOError:
            if isinstance(args.func, CmdHelp):
                args.func(args)
                return
            self.parser.print_help()
            print()
            logger.error(
                "You are not in a path which has mr.developer installed (%s)."
                % sys.exc_info()[1])
            return
        if not hasattr(args, 'func'):
            self.parser.print_help()
            return

        self.config = Config(self.buildout_dir)
        self.original_dir = os.getcwd()
        atexit.register(self.restore_original_dir)
        os.chdir(self.buildout_dir)
        buildout = Buildout(self.config.buildout_settings['config_file'],
                            self.config.buildout_options,
                            self.config.buildout_settings['user_defaults'],
                            self.config.buildout_settings['windows_restart'])
        root_logger = logging.getLogger()
        root_logger.handlers = []
        root_logger.setLevel(logging.INFO)
        extension = Extension(buildout)
        self.sources = extension.get_sources()
        self.sources_dir = extension.get_sources_dir()
        self.auto_checkout = extension.get_all_auto_checkout()
        self.always_checkout = extension.get_always_checkout()
        self.update_git_submodules = extension.get_update_git_submodules()
        self.always_accept_server_certificate = extension.get_always_accept_server_certificate(
        )
        develop, self.develeggs, versions = extension.get_develop_info()
        self.threads = extension.get_threads()

        args.func(args)
Beispiel #4
0
    def __call__(self, **kwargs):
        logger.setLevel(logging.INFO)
        ch = logging.StreamHandler()
        ch.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
        logger.addHandler(ch)
        self.parser = ArgumentParser()
        version = pkg_resources.get_distribution("mr.developer").version
        self.parser.add_argument('-v', '--version',
                                 action='version',
                                 version='mr.developer %s' % version)
        self.parsers = self.parser.add_subparsers(title="commands", metavar="")
        CmdActivate(self)
        CmdArguments(self)
        CmdCheckout(self)
        CmdDeactivate(self)
        CmdHelp(self)
        CmdInfo(self)
        CmdList(self)
        CmdPony(self)
        CmdPurge(self)
        CmdRebuild(self)
        CmdReset(self)
        CmdStatus(self)
        CmdUpdate(self)
        args = self.parser.parse_args()

        try:
            self.buildout_dir = find_base()
        except IOError:
            if isinstance(args.func, CmdHelp):
                args.func(args)
                return
            self.parser.print_help()
            print
            logger.error("You are not in a path which has mr.developer installed (%s)." % sys.exc_info()[1])
            return

        self.config = Config(self.buildout_dir)
        self.original_dir = os.getcwd()
        atexit.register(self.restore_original_dir)
        os.chdir(self.buildout_dir)
        buildout = Buildout(self.config.buildout_settings['config_file'],
                            self.config.buildout_options,
                            self.config.buildout_settings['user_defaults'],
                            self.config.buildout_settings['windows_restart'])
        root_logger = logging.getLogger()
        root_logger.handlers = []
        root_logger.setLevel(logging.INFO)
        extension = Extension(buildout)
        self.sources = extension.get_sources()
        self.sources_dir = extension.get_sources_dir()
        self.auto_checkout = extension.get_auto_checkout()
        self.always_checkout = extension.get_always_checkout()
        self.update_git_submodules = extension.get_update_git_submodules()
        self.always_accept_server_certificate = extension.get_always_accept_server_certificate()
        develop, self.develeggs, versions = extension.get_develop_info()
        self.threads = extension.get_threads()

        args.func(args)
    def test_sources_dir_created(self):
        buildout = MockBuildout(
            dict(buildout={"directory": self.tempdir, "parts": "", "sources-dir": "develop"}, sources={})
        )
        from mr.developer.extension import Extension

        self.failIf("develop" in os.listdir(self.tempdir))
        ext = Extension(buildout)
        ext()
        self.failUnless("develop" in os.listdir(self.tempdir))
        self.assertEqual(ext.get_sources_dir(), os.path.join(self.tempdir, "develop"))
 def test_sources_dir_created(self, tempdir):
     buildout = MockBuildout(dict(
         buildout={
             'directory': tempdir,
             'parts': '',
             'sources-dir': 'develop'},
         sources={},
     ))
     assert 'develop' not in os.listdir(tempdir)
     ext = Extension(buildout)
     ext()
     assert 'develop' in os.listdir(tempdir)
     assert ext.get_sources_dir() == tempdir['develop']
Beispiel #7
0
def learn(buildout):
    """ Learn about the buildout.
    We are interested in reading and caching the sources section of the
    buildout
    """

    mrdeveloper = Extension(buildout)
    sources = mrdeveloper.get_sources()
    autocheckout = mrdeveloper.get_auto_checkout()

    directory = buildout['buildout']['directory']
    out = open(os.path.join(directory, '_eggmonkey.cache'), 'w')
    cPickle.dump([sources, autocheckout], out)
    out.close()
Beispiel #8
0
def learn(buildout):
    """ Learn about the buildout.
    We are interested in reading and caching the sources section of the
    buildout
    """

    mrdeveloper = Extension(buildout)
    sources = mrdeveloper.get_sources()
    autocheckout = mrdeveloper.get_auto_checkout()

    directory = buildout['buildout']['directory']
    out = open(os.path.join(directory, '_eggmonkey.cache'), 'w')
    cPickle.dump([sources, autocheckout], out)
    out.close()
Beispiel #9
0
 def test_sources_dir_created(self):
     buildout = MockBuildout(dict(
         buildout={
             'directory': self.tempdir,
             'parts': '',
             'sources-dir': 'develop',
         },
         sources={},
     ))
     from mr.developer.extension import Extension
     self.failIf('develop' in os.listdir(self.tempdir))
     ext = Extension(buildout)
     ext()
     self.failUnless('develop' in os.listdir(self.tempdir))
     self.assertEqual(ext.get_sources_dir(),
                      os.path.join(self.tempdir, 'develop'))
Beispiel #10
0
 def test_sources_dir_created(self):
     buildout = MockBuildout(dict(
         buildout={
             'directory': self.tempdir,
             'parts': '',
             'sources-dir': 'develop',
         },
         sources={},
     ))
     from mr.developer.extension import Extension
     self.failIf('develop' in os.listdir(self.tempdir))
     ext = Extension(buildout)
     ext()
     self.failUnless('develop' in os.listdir(self.tempdir))
     self.assertEqual(ext.get_sources_dir(),
                      os.path.join(self.tempdir, 'develop'))
Beispiel #11
0
class Develop(object):
    def __call__(self, **kwargs):
        logger.setLevel(logging.INFO)
        ch = logging.StreamHandler()
        ch.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
        logger.addHandler(ch)
        self.parser = ArgumentParser()
        version = pkg_resources.get_distribution("mr.developer").version
        self.parser.add_argument('-v',
                                 '--version',
                                 action='version',
                                 version='mr.developer %s' % version)
        self.parsers = self.parser.add_subparsers(title="commands", metavar="")
        CmdActivate(self)
        CmdCheckout(self)
        CmdDeactivate(self)
        CmdHelp(self)
        CmdInfo(self)
        CmdList(self)
        CmdPony(self)
        CmdPurge(self)
        CmdRebuild(self)
        CmdReset(self)
        CmdStatus(self)
        CmdUpdate(self)
        args = self.parser.parse_args()

        try:
            self.buildout_dir = find_base()
        except IOError, e:
            self.parser.print_help()
            print
            logger.error(
                "You are not in a path which has mr.developer installed (%s)."
                % e)
            return

        self.config = Config(self.buildout_dir)
        self.original_dir = os.getcwd()
        atexit.register(self.restore_original_dir)
        os.chdir(self.buildout_dir)
        buildout = Buildout(self.config.buildout_settings['config_file'],
                            self.config.buildout_options,
                            self.config.buildout_settings['user_defaults'],
                            self.config.buildout_settings['windows_restart'])
        root_logger = logging.getLogger()
        root_logger.handlers = []
        root_logger.setLevel(logging.INFO)
        extension = Extension(buildout)
        self.sources = extension.get_sources()
        self.sources_dir = extension.get_sources_dir()
        self.auto_checkout = extension.get_auto_checkout()
        self.always_checkout = extension.get_always_checkout()
        self.always_accept_server_certificate = extension.get_always_accept_server_certificate(
        )
        develop, self.develeggs, versions = extension.get_develop_info()

        args.func(args)
 def test_sources_dir_option_set_if_missing(self, tempdir):
     buildout = MockBuildout(dict(
         buildout={
             'directory': tempdir,
             'parts': ''},
         sources={},
     ))
     ext = Extension(buildout)
     assert 'sources-dir' not in buildout['buildout']
     ext()
     assert buildout['buildout']['sources-dir'] == os.path.join(
         tempdir, 'src')
Beispiel #13
0
 def test_sources_dir_option_set_if_missing(self):
     buildout = MockBuildout(dict(
         buildout={
             'directory': self.tempdir,
             'parts': '',
         },
         sources={},
     ))
     from mr.developer.extension import Extension
     ext = Extension(buildout)
     self.failIf('sources-dir' in buildout['buildout'])
     ext()
     assert buildout['buildout']['sources-dir'] == os.path.join(
         self.tempdir, 'src')