Example #1
0
    def get_packages(self,
                     args,
                     auto_checkout=False,
                     develop=False,
                     checked_out=False):
        if auto_checkout:
            packages = set(self.develop.auto_checkout)
        else:
            packages = set(self.develop.sources)
        if develop:
            packages = packages.intersection(set(self.develop.develeggs))
        if checked_out:
            for name in set(packages):
                if not self.develop.sources[name].exists():
                    packages.remove(name)
        if not args:
            return packages
        result = set()
        regexp = re.compile("|".join("(%s)" % x for x in args))
        for name in packages:
            if not regexp.search(name):
                continue
            result.add(name)

        if len(result) == 0:
            if len(args) > 1:
                regexps = "%s or '%s'" % (", ".join(
                    "'%s'" % x for x in args[:-1]), args[-1])
            else:
                regexps = "'%s'" % args[0]
            logger.error("No package matched %s." % regexps)
            sys.exit(1)

        return result
Example #2
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)
        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
Example #3
0
 def __call__(self, args):
     config = self.develop.config
     packages = self.get_packages(getattr(args, 'package-regexp'),
                                  auto_checkout=args.auto_checkout)
     try:
         workingcopies = self.get_workingcopies(self.develop.sources)
         workingcopies.checkout(
             sorted(packages),
             verbose=args.verbose,
             submodules=self.develop.update_git_submodules,
             always_accept_server_certificate=self.develop.
             always_accept_server_certificate)
         for name in sorted(packages):
             source = self.develop.sources[name]
             if not source.get('egg', True):
                 continue
             config.develop[name] = True
             logger.info("Activated '%s'." % name)
         logger.warn(
             "Don't forget to run buildout again, so the checked out packages are used as develop eggs."
         )
         config.save()
     except (ValueError, KeyError), e:
         logger.error(e)
         sys.exit(1)
Example #4
0
    def get_packages(self, args, auto_checkout=False,
                     develop=False, checked_out=False):
        if auto_checkout:
            packages = set(self.develop.auto_checkout)
        else:
            packages = set(self.develop.sources)
        if develop:
            packages = packages.intersection(set(self.develop.develeggs))
        if checked_out:
            for name in set(packages):
                if not self.develop.sources[name].exists():
                    packages.remove(name)
        if not args:
            return packages
        result = set()
        regexp = re.compile("|".join("(%s)" % x for x in args))
        for name in packages:
            if not regexp.search(name):
                continue
            result.add(name)

        if len(result) == 0:
            if len(args) > 1:
                regexps = "%s or '%s'" % (", ".join("'%s'" % x for x in args[:-1]), args[-1])
            else:
                regexps = "'%s'" % args[0]
            logger.error("No package matched %s." % regexps)
            sys.exit(1)

        return result
Example #5
0
 def __call__(self, args):
     sources = {}
     for name in getattr(args, 'package-name'):
         if name in self.develop.sources:
             sources[name] = self.develop.sources[name]
         else:
             logger.error('Unknown package %s' % name)
             sys.exit(1)
     config = self.develop.config
     workingcopies = self.get_workingcopies(sources)
     created = 0
     for name, source in sources.items():
         if not workingcopies.new_feature(
                 name,
                 verbose=args.verbose,
                 submodules=self.develop.update_git_submodules,
                 always_accept_server_certificate=self.develop.
                 always_accept_server_certificate):
             continue
         if not source.get('egg', True):
             continue
         created += 1
         config.develop[name] = True
         logger.info("Activated '%s'." % name)
     if created:
         logger.warn("Don't forget to update and run buildout again.")
         config.save()
Example #6
0
    def __call__(self, **kwargs):
        logger.setLevel(logging.INFO)
        ch = logging.StreamHandler()
        ch.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
        logger.addHandler(ch)

        self.cmd_activate = self.alias_a = CmdActivate(self)
        self.cmd_checkout = self.alias_co = CmdCheckout(self)
        self.cmd_deactivate = self.alias_d = CmdDeactivate(self)
        self.cmd_help = self.alias_h = CmdHelp(self)
        self.cmd_info = CmdInfo(self)
        self.cmd_list = self.alias_ls = CmdList(self)
        self.cmd_pony = CmdPony(self)
        self.cmd_purge = CmdPurge(self)
        self.cmd_rebuild = self.alias_rb = CmdRebuild(self)
        self.cmd_reset = CmdReset(self)
        self.cmd_status = self.alias_stat = self.alias_st = CmdStatus(self)
        self.cmd_update = self.alias_up = CmdUpdate(self)

        try:
            self.buildout_dir = find_base()
        except IOError, e:
            self.cmd_help()
            print
            logger.error("You are not in a path which has mr.developer installed (%s)." % e)
            return
Example #7
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)
        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
Example #8
0
    def __call__(self, **kwargs):
        logger.setLevel(logging.INFO)
        ch = logging.StreamHandler()
        ch.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
        logger.addHandler(ch)

        self.cmd_activate = self.alias_a = CmdActivate(self)
        self.cmd_checkout = self.alias_co = CmdCheckout(self)
        self.cmd_deactivate = self.alias_d = CmdDeactivate(self)
        self.cmd_help = self.alias_h = CmdHelp(self)
        self.cmd_info = CmdInfo(self)
        self.cmd_list = self.alias_ls = CmdList(self)
        self.cmd_pony = CmdPony(self)
        self.cmd_rebuild = self.alias_rb = CmdRebuild(self)
        self.cmd_reset = CmdReset(self)
        self.cmd_status = self.alias_stat = self.alias_st = CmdStatus(self)
        self.cmd_update = self.alias_up = CmdUpdate(self)

        if len(kwargs) == 0:
            try:
                installed = load_installed_cfg()
            except IOError, e:
                self.cmd_help()
                print
                logger.error("You are not in a path which has mr.developer installed (%s)." % e)
                return
            if not installed.has_option(FAKE_PART_ID, "__buildout_installed__"):
                self.cmd_help()
                print
                logger.error("You are not in a path which has mr.developer installed (mr.developer not in buildout).")
                return
            develop = installed.get(FAKE_PART_ID, "__buildout_installed__")
            subprocess.call([develop] + sys.argv[1:])
            return
Example #9
0
    def __call__(self):
        options, args = self.parser.parse_args(sys.argv[2:])
        config = self.develop.config
        # Find out which packages to checkout
        if len(args) == 0:
            if options.auto_checkout:
                packages = self.develop.auto_checkout
            else:
                print self.parser.format_help()
                sys.exit(0)
        else:
            packages = self.get_packages(args)
            if options.auto_checkout:
                packages = [x for x in packages if x in self.develop.auto_checkout]
        if len(packages) == 0:
            if len(args) > 1:
                regexps = "%s or '%s'" % (", ".join("'%s'" % x for x in args[:-1]), args[-1])
            else:
                regexps = "'%s'" % args[0]
            logger.error("No package matched %s." % regexps)
            sys.exit(1)

        # Actually checkout
        try:
            workingcopies = WorkingCopies(self.develop.sources)
            workingcopies.checkout(packages, verbose=options.verbose)
            for name in packages:
                config.develop[name] = True
                logger.info("Activated '%s'." % name)
            logger.warn("Don't forget to run buildout again, so the checked out packages are used as develop eggs.")
            config.save()
        except (ValueError, KeyError), e:
            logger.error(e)
            sys.exit(1)
Example #10
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)
Example #11
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)
Example #12
0
 def __call__(self, args):
     config = self.develop.config
     packages = self.get_packages(getattr(args, 'package-regexp'),
                                  auto_checkout=args.auto_checkout)
     try:
         workingcopies = WorkingCopies(self.develop.sources)
         workingcopies.checkout(sorted(packages), verbose=args.verbose)
         for name in sorted(packages):
             source = self.develop.sources[name]
             if not source.get('egg', True):
                 continue
             config.develop[name] = True
             logger.info("Activated '%s'." % name)
         logger.warn("Don't forget to run buildout again, so the checked out packages are used as develop eggs.")
         config.save()
     except (ValueError, KeyError), e:
         logger.error(e)
         sys.exit(1)
Example #13
0
 def __call__(self):
     options, args = self.parser.parse_args(sys.argv[2:])
     config = self.develop.config
     if len(args) == 0 and not options.auto_checkout:
         print self.parser.format_help()
         sys.exit(0)
     packages = self.get_packages(args,
                                  auto_checkout=options.auto_checkout)
     try:
         workingcopies = WorkingCopies(self.develop.sources)
         workingcopies.checkout(sorted(packages), verbose=options.verbose)
         for name in sorted(packages):
             config.develop[name] = True
             logger.info("Activated '%s'." % name)
         logger.warn("Don't forget to run buildout again, so the checked out packages are used as develop eggs.")
         config.save()
     except (ValueError, KeyError), e:
         logger.error(e)
         sys.exit(1)
Example #14
0
 def __call__(self, args):
     config = self.develop.config
     packages = self.get_packages(getattr(args, 'package-regexp'),
                                  auto_checkout=args.auto_checkout)
     try:
         workingcopies = self.get_workingcopies(self.develop.sources)
         workingcopies.checkout(sorted(packages),
                                verbose=args.verbose,
                                submodules=self.develop.update_git_submodules,
                                always_accept_server_certificate=self.develop.always_accept_server_certificate)
         for name in sorted(packages):
             source = self.develop.sources[name]
             if not source.get('egg', True):
                 continue
             config.develop[name] = True
             logger.info("Activated '%s'." % name)
         logger.warning("Don't forget to run buildout again, so the checked out packages are used as develop eggs.")
         config.save()
     except (ValueError, KeyError):
         logger.error(sys.exc_info()[1])
         sys.exit(1)
Example #15
0
 def unknown(self):
     logger.error("Unknown command '%s'." % sys.argv[1])
     logger.info("Type '%s help' for usage." %
                 os.path.basename(sys.argv[0]))
     sys.exit(1)
Example #16
0
 def unknown(self):
     logger.error("Unknown command '%s'." % sys.argv[1])
     logger.info("Type '%s help' for usage." % os.path.basename(sys.argv[0]))
     sys.exit(1)