Raw File
create_init_py.py
import os

from _common import sort_by_keywords


def oncreate_init_py(unit, *args):
    keywords = {"DESTINATION": 1, "INCLUDING_DEST_DIR": 0, "RESULT": 1}

    flat_args, spec_args = sort_by_keywords(keywords, args)
    generated = []

    dest_dir = spec_args["DESTINATION"][0] if "DESTINATION" in spec_args else "$ARCADIA_BUILD_ROOT"
    if "INCLUDING_DEST_DIR" in spec_args:
        generated.append(os.path.join(dest_dir, "__init__.py"))

    for proto_file in flat_args:
        path_list = proto_file.split(os.sep)[:-1]

        for idx, val in enumerate(path_list):
            generated.append(os.path.join(dest_dir, os.path.join(*path_list[0:len(path_list) - idx]), "__init__.py"))

    generated = list(set(generated))

    unit.ontouch(generated)
    if "RESULT" in spec_args:
        unit.set([spec_args["RESULT"][0], " ".join(generated)])


def oncreate_init_py_structure(unit, *args):
    if unit.get('DISTBUILD'):
        return
    target_dir = unit.get('PY_PROTOS_FOR_DIR')
    path_list = target_dir.split(os.path.sep)[1:]
    inits = [os.path.join("${ARCADIA_BUILD_ROOT}", '__init__.py')]
    for i in range(1, len(path_list) + 1):
        inits.append(os.path.join("${ARCADIA_BUILD_ROOT}", os.path.join(*path_list[0:i]), '__init__.py'))
    unit.ontouch(inits)


def oncreate_init_py_for(unit, *args):
    paths = set()
    for arg in args:
        path_list = arg.split(os.sep)[:-1]

        for idx, val in enumerate(path_list):
            paths.add(os.path.join('${ARCADIA_BUILD_ROOT}', os.path.join(*path_list[0:len(path_list) - idx]), "__init__.py"))

    unit.ontouch(list(paths))
back to top