getSessionEnvironmentScript function
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;
}