aboutsummaryrefslogtreecommitdiff
path: root/rambo/__main__.py
blob: 8f0eca2ce44c02118411fb53338d6be3b349611c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/env python

'''
RAMBO - Recipe Analyzer and Multi-package Build Optimizer
'''

from __future__ import print_function
import os
import sys
import argparse
from . import rambo
#from ._version import __version__
#from .rambo import *

def main(argv=None):

    if argv is None:
        argv = sys.argv

    parser = argparse.ArgumentParser(prog='rambo')
    parser.add_argument('-p', '--platform', type=str)
    parser.add_argument(
            '--python',
            type=str,
            help='Python version to pass to conda machinery when rendering '
            'recipes. "#.#" format. If not specified, the version of python'
            ' hosting conda_build.api is used.')
    parser.add_argument(
            '-m',
            '--manifest',
            type=str,
            help='Use this file to filter the list of recipes to process.')
    parser.add_argument(
            '-f',
            '--file',
            type=str,
            help='Send package list output to this file instead of stdout.')
    parser.add_argument(
            '-c',
            '--culled',
            action='store_true',
            help='Print the ordered list of package names reduced to the set'
            ' of packages that do not already exist in the channel specified'
            ' in the supplied manifest file.')
    parser.add_argument(
            '-d',
            '--details',
            action='store_true',
            help='Display details used in determining build order and/or '
            'package culling.')
    parser.add_argument(
            '--dirty',
            action='store_true',
            help='Use the most recent pre-existing conda work directory for '
            'each recipe instead of creating a new one. If a work directory '
            'does not already exist, the recipe is processed in the normal '
            'fashion. Used mostly for testing purposes.')
    parser.add_argument(
            '-v',
            '--version',
            action='version',
            version='%(prog)s ' + rambo.__version__,
            help='Display version information.')
    parser.add_argument('recipes_dir', type=str)
    args = parser.parse_args()

    recipes_dir = os.path.normpath(args.recipes_dir)

    fh = None
    if args.file:
        fh = open(args.file, 'w')

    versions = {'python': '', 'numpy': ''}
    if args.python:
        versions['python'] = args.python

    versions['numpy'] = rambo.DEFAULT_MINIMUM_NUMPY_VERSION

    mset = rambo.MetaSet(
            recipes_dir,
            platform=args.platform,
            versions=versions,
            dirty=args.dirty,
            manfile=args.manifest)

    mset.multipass_optimize()

    if args.details:
        mset.print_details(fh)
        if mset.channel:
            mset.print_status_in_channel(fh)
    elif args.culled:
        mset.print_culled(fh)
    else:
        mset.print(fh)

if __name__ == "__main__":
    main()