createWorkspace method

Future<MelosWorkspace> createWorkspace({
  1. GlobalOptions? global,
  2. PackageFilters? packageFilters,
})
inherited

Implementation

Future<MelosWorkspace> createWorkspace({
  GlobalOptions? global,
  PackageFilters? packageFilters,
}) async {
  var filterWithEnv = packageFilters;

  if (currentPlatform.environment
      .containsKey(EnvironmentVariableKey.melosPackages)) {
    // MELOS_PACKAGES environment variable is a comma delimited list of
    // package names - used to scope the `packageFilters` if it is present.
    // This can be user defined or can come from package selection in
    // `melos run`.
    final filteredPackagesScopeFromEnv =
        currentPlatform.environment[EnvironmentVariableKey.melosPackages]!
            .split(',')
            .map(
              (e) => createGlob(e, currentDirectoryPath: config.path),
            )
            .toList();

    filterWithEnv = packageFilters == null
        ? PackageFilters(scope: filteredPackagesScopeFromEnv)
        : packageFilters.copyWith(scope: filteredPackagesScopeFromEnv);
  }

  return (await MelosWorkspace.fromConfig(
    config,
    global: global,
    packageFilters: filterWithEnv,
    logger: logger,
  ))
    ..validate();
}