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
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
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
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
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
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
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