getSessionEnvironmentScript function

Future<String?> getSessionEnvironmentScript(
  1. String sessionId
)

Get the session environment script (sourced before shell commands).

Implementation

Future<String?> getSessionEnvironmentScript(String sessionId) async {
  if (Platform.isWindows) return null;

  if (_sessionEnvScriptChecked) return _sessionEnvScript;

  final scripts = <String>[];

  // Check for MAGE_ENV_FILE.
  final envFile = Platform.environment['MAGE_ENV_FILE'];
  if (envFile != null) {
    try {
      final envScript = (await File(envFile).readAsString()).trim();
      if (envScript.isNotEmpty) {
        scripts.add(envScript);
      }
    } catch (_) {}
  }

  // Load hook environment files from session directory.
  final sessionEnvDir = await getSessionEnvDirPath(sessionId);
  try {
    final files = await Directory(sessionEnvDir).list().toList();
    final hookFiles =
        files
            .whereType<File>()
            .map((f) => p.basename(f.path))
            .where((name) => _hookEnvRegex.hasMatch(name))
            .toList()
          ..sort(_sortHookEnvFiles);

    for (final file in hookFiles) {
      final filePath = p.join(sessionEnvDir, file);
      try {
        final content = (await File(filePath).readAsString()).trim();
        if (content.isNotEmpty) {
          scripts.add(content);
        }
      } catch (_) {}
    }
  } catch (_) {}

  _sessionEnvScriptChecked = true;
  if (scripts.isEmpty) {
    _sessionEnvScript = null;
    return null;
  }

  _sessionEnvScript = scripts.join('\n');
  return _sessionEnvScript;
}