packages/warriorjs-cli/src/loadTowers.js
function getExternalTowersInfo() {
  const cliDir = findUp.sync('@warriorjs/cli', { cwd: __dirname });
  if (!cliDir) {
    return [];
  }

  const cliParentDir = path.resolve(cliDir, '..');
  const towerSearchDir = findUp.sync('node_modules', { cwd: cliParentDir });
  const towerPackageJsonPaths = globby.sync(
    [officialTowerPackageJsonPattern, communityTowerPackageJsonPattern],
    { cwd: towerSearchDir },
  );
  const towerPackageNames = towerPackageJsonPaths.map(path.dirname);
  return towerPackageNames.map(towerPackageName => ({
    id: getTowerId(towerPackageName),
    requirePath: resolve.sync(towerPackageName, { basedir: towerSearchDir }),
  }));
}
function getExternalTowersInfo() {
  const cliDir = findUp.sync('@warriorjs/cli', { cwd: __dirname });
  if (!cliDir) {
    return [];
  }

  const cliParentDir = path.resolve(cliDir, '..');
  const towerSearchDir = findUp.sync('node_modules', { cwd: cliParentDir });
  const towerPackageJsonPaths = globby.sync(
    [officialTowerPackageJsonPattern, communityTowerPackageJsonPattern],
    { cwd: towerSearchDir },
  );
  const towerPackageNames = towerPackageJsonPaths.map(path.dirname);
  return towerPackageNames.map(towerPackageName => ({
    id: getTowerId(towerPackageName),
    requirePath: resolve.sync(towerPackageName, { basedir: towerSearchDir }),
  }));
}
function getExternalTowersInfo ( ) { const cliDir = findUp . sync ( '@warriorjs/cli' , { cwd : __dirname } ) ; if ( ! cliDir ) { return [ ] ; } const cliParentDir = path . resolve ( cliDir , '..' ) ; const towerSearchDir = findUp . sync ( 'node_modules' , { cwd : cliParentDir } ) ; const towerPackageJsonPaths = globby . sync ( [ officialTowerPackageJsonPattern , communityTowerPackageJsonPattern ] , { cwd : towerSearchDir } , ) ; const towerPackageNames = towerPackageJsonPaths . map ( path . dirname ) ; return towerPackageNames . map ( towerPackageName => ( { id : getTowerId ( towerPackageName ) , requirePath : resolve . sync ( towerPackageName , { basedir : towerSearchDir } ) , } ) ) ; }
Returns the external towers info.

It searches for official and community towers installed in the nearest
`node_modules` directory that is parent to @warriorjs/cli.

@returns {Object[]} The external towers info.
Returns the external towers info .