Example #1
0
 def __call__(self, args):
     sources = self.develop.sources
     auto_checkout = self.develop.auto_checkout
     packages = self.get_packages(getattr(args, 'package-regexp'),
                                  auto_checkout=args.auto_checkout,
                                  checked_out=args.checked_out,
                                  develop=args.develop)
     workingcopies = WorkingCopies(sources)
     for name in sorted(packages):
         source = sources[name]
         if args.status:
             if source.exists():
                 if not workingcopies.matches(source):
                     print "C",
                 else:
                     if name in auto_checkout:
                         print " ",
                     else:
                         print "~",
             else:
                 if name in auto_checkout:
                     print "!",
                 else:
                     print "#",
         if args.long:
             print "(%s)" % source['kind'], name, source['url']
         else:
             print name
Example #2
0
 def __call__(self, args):
     packages = self.get_packages(getattr(args, 'package-regexp'),
                                  auto_checkout=args.auto_checkout,
                                  checked_out=True,
                                  develop=args.develop)
     workingcopies = WorkingCopies(self.develop.sources)
     force = args.force or self.develop.always_checkout
     workingcopies.update(sorted(packages),
                          force=force,
                          verbose=args.verbose,
                          always_accept_server_certificate=self.develop.
                          always_accept_server_certificate)
Example #3
0
    def __call__(self, args):
        buildout_dir = self.develop.buildout_dir
        packages = self.get_packages(getattr(args, 'package-regexp'),
                                     checked_out=True)
        packages = packages - self.develop.auto_checkout
        packages = packages - set(self.develop.develeggs)
        force = args.force
        force_all = False
        workingcopies = WorkingCopies(self.develop.sources)
        if args.dry_run:
            logger.info("Dry run, nothing will be removed.")
        for name in packages:
            source = self.develop.sources[name]
            path = source['path']
            if path.startswith(buildout_dir):
                path = path[len(buildout_dir) + 1:]
            need_force = False
            if source['kind'] != 'svn':
                need_force = True
                logger.warn(
                    "The directory of package '%s' at '%s' might contain unrecoverable files and will not be removed without --force."
                    % (name, path))
            if workingcopies.status(source) != 'clean':
                need_force = True
                logger.warn(
                    "The package '%s' is dirty and will not be removed without --force."
                    % name)
            if need_force:
                if not force:
                    continue
                # We only get here when a --force is needed and we
                # have actually added the --force argument on the
                # command line.
                if not force_all:
                    answer = yesno("Do you want to purge it anyway?",
                                   default=False,
                                   all=True)
                    if not answer:
                        logger.info("Skipped purge of '%s'." % name)
                        continue
                    if answer == 'all':
                        force_all = True

            logger.info("Removing package '%s' at '%s'." % (name, path))
            if not args.dry_run:
                shutil.rmtree(source['path'],
                              ignore_errors=False,
                              onerror=self.handle_remove_readonly)
Example #4
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,
                                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 #5
0
 def get_workingcopies(self, sources):
     return WorkingCopies(sources, threads=self.develop.threads)
Example #6
0
    def __call__(self, args):
        auto_checkout = self.develop.auto_checkout
        sources_dir = self.develop.sources_dir
        develeggs = self.develop.develeggs
        package_regexp = getattr(args, 'package-regexp')
        packages = self.get_packages(package_regexp,
                                     auto_checkout=args.auto_checkout,
                                     checked_out=args.checked_out,
                                     develop=args.develop)
        workingcopies = WorkingCopies(self.develop.sources)
        paths = []
        for name in sorted(packages):
            source = self.develop.sources[name]
            if not source.exists():
                if name in auto_checkout:
                    print "!", " ", name
                continue
            paths.append(source['path'])
            if not workingcopies.matches(source):
                print "C",
            else:
                if name in auto_checkout:
                    print " ",
                else:
                    print "~",
            if args.verbose:
                status, output = workingcopies.status(source, verbose=True)
            else:
                status = workingcopies.status(source)
            if status == 'clean':
                print " ",
            else:
                print "M",
            if self.develop.config.develop.get(name, name in auto_checkout):
                if name in develeggs:
                    print " ",
                else:
                    if source.get('egg', True):
                        print "A",
                    else:
                        print " ",
            else:
                if name not in develeggs:
                    if not source.get('egg', True):
                        print " ",
                    elif name in auto_checkout:
                        print "!",
                    else:
                        print "-",
                else:
                    if source.get('egg', True):
                        print "D",
                    else:
                        print " ",
            print name
            if args.verbose:
                output = output.strip()
                if output:
                    for line in output.split('\n'):
                        print "   ", line
                    print

        # Only report on unknown entries when we have no package regexp.
        if not package_regexp:
            for entry in os.listdir(sources_dir):
                if not os.path.join(sources_dir, entry) in paths:
                    print '?', ' ', entry
Example #7
0
 def get_workingcopies(self):
     return WorkingCopies(self.get_sources(), threads=self.get_threads())
Example #8
0
 def get_workingcopies(self):
     return WorkingCopies(self.get_sources())