Пример #1
0
def get_exparams(metadata):
    exparams = []
    if 'engines' in metadata:
        engines = metadata['engines']
        if isinstance(engines, str):
            exparams.append('node_version="[{}]"'.format(
                verspec(engines.lstrip('node '))))
        elif isinstance(engines, list):
            if 'node' in engines:
                pass
            else:
                engines = list(filter(lambda x: x.startswith('node'), engines))
                if engines:
                    exparams.append(verspec(engines[0].lstrip('node ')))
                else:
                    assert(False)
        elif engines['node'] != '*':
            exparams.append('node_version="[{}]"'.format(
                verspec(engines['node'])))

    if 'bin' in metadata and metadata['bin']:
        exparams.append('has_bin=true')

    if exparams:
        return ' [ {} ]'.format(' '.join(exparams))
    else:
        return ''
Пример #2
0
def get_deps(metadata, fields, target, deps_acc, unbundle, comment=False):
    if comment:
        template = '\n#NPM_' + target + '_DEPS=(\n    #{}\n#)\n'
        glue = '\n    #'
    else:
        template = '\nNPM_' + target + '_DEPS=(\n    {}\n)\n'
        glue = '\n    '

    dpairs = []
    for field in fields:
        if field in metadata and metadata[field]:
            deps = metadata[field]
            dnames = sorted(deps.keys())
            if not unbundle and 'bundledDependencies' in metadata:
                dnames = filter(
                    lambda x: x not in metadata['bundledDependencies'], dnames)
            if not unbundle and 'bundleDependencies' in metadata:
                dnames = filter(
                    lambda x: x not in metadata['bundleDependencies'], dnames)
            dpairs += list(map(lambda x: (x, verspec(deps[x])), dnames))

    if dpairs:
        deps_acc += dpairs

        return template.format(glue.join(map(
            lambda x: '"{} [{}]"'.format(x[0], x[1]) if x[1]
                      else '{}'.format(x[0]), dpairs)))
    else:
        return ''