anchor.diff:    @override
     bool get isSafeToInterrupt => true;
   
  -  /// Whether or not to build CanvasKit.
  -  final bool buildCanvasKit;
  +  /// The target directory to build.
  +  final Directory target;
   
     @override
     Future<ProcessManager> createProcess() {
       print('Running autoninja...');
  -    Future<ProcessManager> ninjaProcess = startProcess(
  +    return startProcess(
         'autoninja',
         <String>[
           '-C',
  -        environment.hostDebugUnoptDir.path,
  +        target.path,
         ],
       );
  -    if (buildCanvasKit) {
  -      ninjaProcess = ninjaProcess.then((_) {
  -        return startProcess(
  -          'autoninja',
  -          <String>[
  -            '-C',
  -            environment.canvasKitOutDir.path,
  -          ],
  -        );
  -      });
  -    }
  -    return ninjaProcess;
     }
   }
  
positive.code: ///
  /// Can be safely interrupted.
  class NinjaPipelineStep extends ProcessStep {
    NinjaPipelineStep(this.buildCanvasKit);
  
    @override
    String get description => 'ninja';
  
negative.code: // found in the LICENSE file.
  
  import 'dart:async';
  import 'dart:io' show Directory, Platform;
  
  import 'package:args/command_runner.dart';
  import 'package:path/path.dart' as path;
  