Esempio n. 1
0
def load_package_configs():
    """Returns a map where keys are names of packages and values are package configs."""
    package_map = {}

    # Load packages under the pkg/ directory.
    for path in find_packages():
        config = create_config_for_package(path)
        if config:
            # Update the map now that the config is complete.
            package_map[config["name"]] = config

    # Special-case some legacy package-loading code.
    include_legacy_packages = None
    try:
        from fb.legacy_config_loader import legacy_config_loader

        include_legacy_packages = legacy_config_loader
    except Exception as e:
        pass
    if include_legacy_packages:
        include_legacy_packages(package_map)

    # Now that all of the packages have entries in the package_map, use the keys of the package_map
    # to populate the localDependencies array of each config.
    for package_name, package_config in package_map.items():
        all_deps = []
        all_deps.extend(package_config["dependencies"].keys())
        all_deps.extend(package_config["devDependencies"].keys())
        for dependency in all_deps:
            if dependency in package_map:
                package_config["localDependencies"][dependency] = package_map[dependency]

    return package_map
Esempio n. 2
0
def load_package_configs():
    '''Returns a map where keys are names of packages and values are package configs.'''
    package_map = {}

    # Load packages under the pkg/ directory.
    for path in find_packages():
        config = create_config_for_package(path)
        if config:
            # Update the map now that the config is complete.
            package_map[config['name']] = config

    # Special-case some legacy package-loading code.
    include_legacy_packages = None
    try:
        from fb.legacy_config_loader import legacy_config_loader
        include_legacy_packages = legacy_config_loader
    except Exception as e:
        pass
    if include_legacy_packages:
        include_legacy_packages(package_map)

    # Now that all of the packages have entries in the package_map, use the keys of the package_map
    # to populate the localDependencies array of each config.
    for package_name, package_config in package_map.items():
        all_deps = []
        all_deps.extend(package_config['dependencies'].keys())
        all_deps.extend(package_config['devDependencies'].keys())
        for dependency in all_deps:
            if dependency in package_map:
                package_config['localDependencies'][dependency] = package_map[dependency]

    return package_map
Esempio n. 3
0
    def get_deps(self,
                 package_json,
                 include_dev_dependencies=False,
                 include_local_dependencies=False):
        '''Return a dependency map: key is package name and value is semver range.'''
        # Although it appears that different versions of a package can be requested by
        # dependencies and devDependencies, it seems as though the one in devDependencies
        # should take priority, and should also be within the range specified by dependencies:
        # http://stackoverflow.com/q/29067071/396304.
        dep_types = ['dependencies']
        if include_dev_dependencies:
            dep_types += ['devDependencies']

        all_deps = {}
        config = create_config_for_package(package_json)
        if not config:
            # config is None: this must be a transitive dependency of a Nuclide package.
            package = json_load(package_json)
            config = {
                'dependencies': package.get('dependencies', {}),
                'devDependencies': package.get('devDependencies', {}),
                'bundleDependencies': package.get('bundleDependencies', {}),
                'bundledDependencies': package.get('bundledDependencies', {}),
                'optionalDependencies': package.get('optionalDependencies',
                                                    {}),
            }
            # optionalDependencies override dependencies and do not get installed.
            # So we remove them from dependencies.
            for dep in config['optionalDependencies'].keys():
                config['dependencies'].pop(dep, None)

        # Apparently both spellings are acceptable:
        bundleDependencies = config['bundleDependencies']
        bundledDependencies = config['bundledDependencies']

        for dep_type in dep_types:
            deps = config[dep_type]
            for dep, version in deps.items():
                if dep in bundleDependencies or dep in bundledDependencies:
                    # There is only one case where we have seen this, which is
                    # https://github.com/goatslacker/testla/tree/717542bfe6a07deab28ffb2da23c989332ae37d6.
                    pass
                elif not self.is_local_dependency(
                        dep) or include_local_dependencies:
                    all_deps[dep] = version

        return all_deps
Esempio n. 4
0
    def get_deps(self, package_json, include_dev_dependencies=False, include_local_dependencies=False):
        '''Return a dependency map: key is package name and value is semver range.'''
        # Although it appears that different versions of a package can be requested by
        # dependencies and devDependencies, it seems as though the one in devDependencies
        # should take priority, and should also be within the range specified by dependencies:
        # http://stackoverflow.com/q/29067071/396304.
        dep_types = ['dependencies']
        if include_dev_dependencies:
            dep_types += ['devDependencies']

        all_deps = {}
        config = create_config_for_package(package_json)
        if not config:
            # config is None: this must be a transitive dependency of a Nuclide package.
            package = json_load(package_json)
            config = {
              'dependencies': package.get('dependencies', {}),
              'devDependencies': package.get('devDependencies', {}),
              'bundleDependencies': package.get('bundleDependencies', {}),
              'bundledDependencies': package.get('bundledDependencies', {}),
              'optionalDependencies': package.get('optionalDependencies', {}),
            }
            # optionalDependencies override dependencies and do not get installed.
            # So we remove them from dependencies.
            for dep in config['optionalDependencies'].keys():
                config['dependencies'].pop(dep, None)

        # Apparently both spellings are acceptable:
        bundleDependencies = config['bundleDependencies']
        bundledDependencies = config['bundledDependencies']

        for dep_type in dep_types:
            deps = config[dep_type]
            for dep, version in deps.items():
                if dep in bundleDependencies or dep in bundledDependencies:
                    # There is only one case where we have seen this, which is
                    # https://github.com/goatslacker/testla/tree/717542bfe6a07deab28ffb2da23c989332ae37d6.
                    pass
                elif not self.is_local_dependency(dep) or include_local_dependencies:
                    all_deps[dep] = version

        return all_deps
Esempio n. 5
0
def load_package_configs():
    '''Returns a map where keys are names of packages and values are package configs.'''
    package_map = {}

    # Load packages under the pkg/ directory.
    for path in find_packages():
        config = create_config_for_package(path)
        # config will be None for packages such as sample packages.
        if config:
            # Update the map now that the config is complete.
            package_map[config['name']] = config

    # Now that all of the packages have entries in the package_map, use the keys of the package_map
    # to populate the localDependencies array of each config.
    for package_name, package_config in package_map.items():
        all_deps = []
        all_deps.extend(package_config['dependencies'].keys())
        all_deps.extend(package_config['devDependencies'].keys())
        for dependency in all_deps:
            if dependency in package_map:
                package_config['localDependencies'][dependency] = package_map[dependency]

    return package_map
Esempio n. 6
0
    def get_deps(self, package_json, include_dev_dependencies=False, include_local_dependencies=False):
        """Return a dependency map: key is package name and value is semver range."""
        # Although it appears that different versions of a package can be requested by
        # dependencies and devDependencies, it seems as though the one in devDependencies
        # should take priority, and should also be within the range specified by dependencies:
        # http://stackoverflow.com/q/29067071/396304.
        dep_types = ["dependencies"]
        if include_dev_dependencies:
            dep_types += ["devDependencies"]

        all_deps = {}
        config = create_config_for_package(package_json)
        if not config:
            # This must be a legacy package. Grr.
            package = json_load(package_json)
            config = {
                "dependencies": package.get("dependencies", {}),
                "devDependencies": package.get("devDependencies", {}),
                "bundleDependencies": package.get("bundleDependencies", {}),
                "bundledDependencies": package.get("bundledDependencies", {}),
            }

        # Apparently both spellings are acceptable:
        bundleDependencies = config["bundleDependencies"]
        bundledDependencies = config["bundledDependencies"]

        for dep_type in dep_types:
            deps = config[dep_type]
            for dep, version in deps.items():
                if dep in bundleDependencies or dep in bundledDependencies:
                    # There is only one case where we have seen this, which is
                    # https://github.com/goatslacker/testla/tree/717542bfe6a07deab28ffb2da23c989332ae37d6.
                    pass
                elif not self.is_local_dependency(dep) or include_local_dependencies:
                    all_deps[dep] = version

        return all_deps
Esempio n. 7
0
def load_package_configs():
    '''Returns a map where keys are names of packages and values are package configs.'''
    package_map = {}

    # Load packages under the pkg/ directory.
    for path in find_packages():
        config = create_config_for_package(path)
        # config will be None for packages such as sample packages.
        if config:
            # Update the map now that the config is complete.
            package_map[config['name']] = config

    # Now that all of the packages have entries in the package_map, use the keys of the package_map
    # to populate the localDependencies array of each config.
    for package_name, package_config in package_map.items():
        all_deps = []
        all_deps.extend(package_config['dependencies'].keys())
        all_deps.extend(package_config['devDependencies'].keys())
        for dependency in all_deps:
            if dependency in package_map:
                package_config['localDependencies'][dependency] = package_map[
                    dependency]

    return package_map