run method
Entry point. Builds the PipelineContext via createContext, then runs
beforeBuild → body → afterBuild.
Implementation
Future<void> run(List<String> args) async {
context = createContext(args);
// Apply CLI flags — create terminal logger with requested settings.
final logger = Logger.terminal(
noColor: context.args.has('--no-color'),
isVerbose: context.args.has('--verbose'),
);
context.logger = logger;
// Inject logger into default git manager singleton.
if (context.git is GitManagerImpl) {
(context.git as GitManagerImpl).logger = logger;
}
try {
await beforeBuild();
await body();
} finally {
try {
await afterBuild();
} catch (e) {
context.logger.error('afterBuild failed');
}
_printSummary();
}
}