getReleaseStatus method
Retrieves structured status summary of current or latest release operation.
Implementation
Future<String> getReleaseStatus(String projectPath) async {
final currentState = await _stateTracker.loadCurrentState(projectPath);
final latestMetadata =
await _metadataManager.getLatestMetadata(projectPath);
final buffer = StringBuffer();
buffer.writeln('=== RELEASE STATUS SUMMARY ===');
if (currentState != null) {
buffer.writeln('Active/Last Operation: ${currentState.operation}');
buffer.writeln('Mode: ${currentState.releaseMode}');
buffer.writeln(
'Status: ${currentState.status.key.toUpperCase()}');
if (currentState.environment != null) {
buffer.writeln('Environment: ${currentState.environment}');
}
if (currentState.platform != null) {
buffer.writeln('Platform: ${currentState.platform}');
}
if (currentState.versionName != null) {
buffer.writeln(
'Version: ${currentState.versionName}+${currentState.buildNumber ?? "1"}');
}
if (currentState.failedStage != null) {
buffer.writeln('Failed Stage: ${currentState.failedStage}');
}
if (currentState.errors.isNotEmpty) {
buffer.writeln('\nErrors:');
for (final err in currentState.errors) {
buffer.writeln(' • $err');
}
}
} else if (latestMetadata != null) {
buffer.writeln('Status: COMPLETED');
buffer.writeln('Mode: ${latestMetadata.releaseMode}');
buffer.writeln(
'Version: ${latestMetadata.versionName}+${latestMetadata.buildNumber}');
buffer.writeln(
'Platforms: ${latestMetadata.platforms.join(', ')}');
if (latestMetadata.environment != null) {
buffer.writeln('Environment: ${latestMetadata.environment}');
}
if (latestMetadata.tag != null) {
buffer.writeln('Git Tag: ${latestMetadata.tag}');
}
buffer.writeln('Timestamp: ${latestMetadata.timestamp}');
} else {
buffer.writeln('No active or previous release state found in project.');
}
buffer.writeln('==============================');
return buffer.toString();
}