def main(): from optparse import OptionParser setup_handlers() p = OptionParser(usage="usage: %prog [options] [EGGS ...]", description=__doc__) p.add_option('-l', "--list", action="store_true", help="list all installed packages") p.add_option("--noapp", action="store_true", help="don't install/remove application menu items") p.add_option("--prefix", action="store", default=sys.prefix, help="install prefix, defaults to %default", metavar='PATH') p.add_option("--hook", action="store_true", help="don't install into site-packages (experimental)", metavar='PATH') p.add_option("--pkgs-dir", action="store", help="packages directories (works only with --hook)", metavar='PATH') p.add_option('-r', "--remove", action="store_true", help="remove package(s), requires the egg or project name(s)") p.add_option('-v', "--verbose", action="store_true") p.add_option('--version', action="store_true") opts, args = p.parse_args() if opts.version: from enstaller import __version__ print "enstaller version:", __version__ return prefix = abspath(opts.prefix) if opts.list: if args: p.error("the --list option takes no arguments") print_installed(prefix) return for path in args: ei = EggInst(path, prefix, opts.hook, opts.pkgs_dir, verbose=opts.verbose, noapp=opts.noapp) if opts.remove: ei.remove() else: # default is always install ei.install()
def execute_plan(plan, index=None, verbose=False): if verbose: from console import setup_handlers setup_handlers() progress_cmds = set([EXTRACT, RM_EXTRACTED, LINK, UNLINK]) prefix = config.root_dir i = None for cmd, arg in cmds_from_plan(plan): if i is not None and cmd in progress_cmds: i += 1 getLogger('progress.update').info((name_dist(arg), i)) if cmd == PREFIX: prefix = arg elif cmd == PRINT: getLogger('print').info(arg) elif cmd == FETCH: fetch(index, arg) elif cmd == PROGRESS: i = 0 maxval = int(arg) getLogger('progress.start').info(maxval) elif cmd == EXTRACT: install.extract(config.pkgs_dir, arg) elif cmd == RM_EXTRACTED: install.rm_extracted(config.pkgs_dir, arg) elif cmd == RM_FETCHED: install.rm_fetched(config.pkgs_dir, arg) elif cmd == LINK: install.link(config.pkgs_dir, prefix, arg) elif cmd == UNLINK: install.unlink(prefix, arg) else: raise Exception("Did not expect command: %r" % cmd) if i is not None and cmd in progress_cmds and maxval == i: i = None getLogger('progress.stop').info(None)