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)
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)
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)
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']
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()
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'))
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')
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')