anchor.diff:  let rec private installPackages (context : Tasks.TaskContext) (root : string) (parents : PackageIdentifier list) (packages : Map<PackageIdentifier, LockedPackage>) = async {
     // Prepare workspace
     do! Files.touch (Path.Combine(root, ".buckconfig"))
  -  do! Files.writeFile (Path.Combine(root, Constants.BuckarooMacrosFileName)) buckarooMacros
  +
  +  if File.Exists (Path.Combine(root, Constants.BuckarooMacrosFileName)) |> not
  +  then
  +    do! Files.writeFile (Path.Combine(root, Constants.BuckarooMacrosFileName)) buckarooMacros
   
     // Install packages
     for (package, lockedPackage) in packages |> Map.toSeq do
  
positive.code:     new Exception("Unsupported location type") |> raise
  }
  
  // let rec private installPackage (context : Tasks.TaskContext) (root : string) (package : PackageIdentifier) (lockedPackage : LockedPackage) = async {
  //   let installPath = Path.Combine(root, packageInstallPath package lockedPackage.Location)
  //   do! installPackageSources context installPath lockedPackage.Location
  
  //   for (k, v) in lockedPackage.PrivatePackages |> Map.toSeq do
  //     do! installPackage context installPath k v
  // }
  
  let private generateBuckConfig (sourceExplorer : ISourceExplorer) (parents : PackageIdentifier list) lockedPackage packages (pathToCell : string) = async {
    let pathToPackage (package : PackageIdentifier) = 
      Path.Combine(
  
negative.code:   do! Files.writeFile (Path.Combine(root, ".buckconfig.d", ".buckconfig.buckaroo")) (BuckConfig.render config)
  }
  
  let task (context : Tasks.TaskContext) = async {
    let! lock = Tasks.readLock
  
    do! installPackages context "." [] lock.Packages
    do! writeTopLevelFiles context "." lock
    
    return ()
  }
  