run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
FutureOr? run() async {
final rootDir = root;
final gitRoot = Directory(GitUtils.getRepositoryRoot(rootDir.path));
// Detect workspace
final workspace = detectWorkspace(rootDir);
if (workspace == null) {
logger.err('No workspace detected. Root pubspec.yaml must contain a "workspace" property.');
logger.info('For single-package projects, use the "version" command instead.');
exit(1);
}
logger.info('Detected workspace with ${workspace.memberPaths.length} members');
final result = await versionWorkspace(
gitRoot: gitRoot,
workspace: workspace,
badge: badge,
baseRef: baseRef,
tag: tag,
newRef: newRef,
commit: commit,
generateChangelog: generateChangelog,
cache: cache,
isPreRelease: preRelease,
preReleasePrefix: preReleasePrefix,
dartFile: dartFile,
);
if (json != null) {
final jsonFile = File(json!);
if (!jsonFile.existsSync()) {
jsonFile.createSync(recursive: true);
}
await jsonFile.writeAsString(jsonEncode(result.toJson()));
}
logger.success('Workspace versioning completed. Versioned ${result.packageVersions.length} package(s).');
}