resolveBuildNumber method
Future<int>
resolveBuildNumber({
- required String projectPath,
- required ProjectVersion currentVersion,
- int? explicitBuildNumber,
Resolves the next build number for currentVersion based on strategy rules.
Implementation
Future<int> resolveBuildNumber({
required String projectPath,
required ProjectVersion currentVersion,
int? explicitBuildNumber,
}) async {
// 1. Explicit build number argument passed directly
if (explicitBuildNumber != null && explicitBuildNumber > 0) {
return explicitBuildNumber;
}
// 2. CI environment variables (e.g. BUILD_NUMBER, GITHUB_RUN_NUMBER)
final env = _environment ?? Platform.environment;
final ciEnvBuild = env['BUILD_NUMBER'] ?? env['GITHUB_RUN_NUMBER'];
if (ciEnvBuild != null && ciEnvBuild.isNotEmpty) {
final parsed = int.tryParse(ciEnvBuild);
if (parsed != null && parsed > 0) {
return parsed;
}
}
// 3. Git commit count fallback if running inside a git repository
final commitCount = await _gitClient.getCommitCount(projectPath);
if (commitCount != null && commitCount > 0) {
return commitCount;
}
// 4. Default fallback: increment current version build number by 1
final currentBuild = currentVersion.buildNumber ?? 0;
return currentBuild + 1;
}