resolveFragmentsBasePath static method

Future<String> resolveFragmentsBasePath()

Resolves the fragments directory path using package and script path resolution.

Implementation

static Future<String> resolveFragmentsBasePath() async {
  // 1. Current working directory
  final cwdFragments =
      Directory(p.join(Directory.current.path, 'templates', '_fragments'));
  if (cwdFragments.existsSync()) {
    return cwdFragments.path;
  }

  // 2. Package URI resolution
  try {
    final packageLibUri =
        await Isolate.resolvePackageUri(Uri.parse('package:flutter_setup/'));
    if (packageLibUri != null && packageLibUri.scheme == 'file') {
      final packageRoot = p.dirname(packageLibUri.toFilePath());
      final pkgFragments =
          Directory(p.join(packageRoot, 'templates', '_fragments'));
      if (pkgFragments.existsSync()) {
        return pkgFragments.path;
      }
    }
  } catch (_) {}

  // 3. Executable script path fallback
  try {
    if (Platform.script.scheme == 'file') {
      final scriptDir = p.dirname(Platform.script.toFilePath());
      final scriptFragments =
          Directory(p.join(scriptDir, '../templates', '_fragments'));
      if (scriptFragments.existsSync()) {
        return scriptFragments.path;
      }
    }
  } catch (_) {}

  return p.join(Directory.current.path, 'templates', '_fragments');
}