view buttercup/checkout.py @ 52:b717de8b384f

py3
author Jeff Hammel <k0scist@gmail.com>
date Tue, 03 Nov 2020 07:51:52 -0800
parents 59969aed59fb
children af4155b0a260
line wrap: on
line source

#!/usr/bin/env python

"""
checks out the source as associated with the buttercup package
"""

# XXX could/should use e.g.
# pip install --editable hg+https://slinkp@bitbucket.org/slinkp/purplevoter#egg=purplevoter
# -or -
# pip install -r foo.txt

import os
import sys

from optparse import OptionParser

from . import source
from .buttercup import Buttercup

def main(args=sys.argv[1:]):

    # parse command line options
    parser = OptionParser()
    parser.add_option('--setup', action="store_true", default=False,
                      help="install the packages")
    parser.add_option('--list', action="store_true", default=False,
                      help="list the source to be installed")
    options, args = parser.parse_args(args)

    # list sources if specified
    if options.list:
        buttercup = Buttercup(srcdir=None)
        sources = source.sources(buttercup.sources)
        for s in sources:
            print('%s: %s' % (s.directory_name(s.uri), s.uri))
        sys.exit(0)

    # setup the src directory in a virtualenv
    if 'VIRTUAL_ENV' in os.environ:
        raise AssertionError("You must have a virtualenv activated")
    src = os.path.join(os.environ['VIRTUAL_ENV'], 'src')
    if not os.path.exists(src):
        os.mkdir(src)

    # grow a flower
    buttercup = Buttercup(srcdir=src)

    # clone/update the sources
    buttercup.install()
    # install the python
    if options.setup:
        buttercup.setup()

if __name__ == '__main__':
    main()