Skip to content

Commit b9813cb

Browse files
authored
Merge pull request #359 from LoopPerfect/feature/bazel-workspace-macro
* Adds buckaroo_workspace macro
2 parents 49b5425 + ec3c50f commit b9813cb

File tree

1 file changed

+43
-3
lines changed

1 file changed

+43
-3
lines changed

buckaroo/InstallCommand.fs

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ let private generateBuckConfig (sourceExplorer : ISourceExplorer) (parents : Pac
331331
return buckarooConfig |> BuckConfig.render
332332
}
333333

334-
let private generateBazelDefs (targets : Set<TargetIdentifier>) =
334+
let private generateBazelDefs (packages : Map<PackageIdentifier, PackageIdentifier list>) (targets : Set<TargetIdentifier>) =
335335
seq {
336336
yield "def buckaroo_deps():"
337337

@@ -344,7 +344,19 @@ let private generateBazelDefs (targets : Set<TargetIdentifier>) =
344344
})
345345

346346
yield " ]"
347+
yield ""
348+
349+
yield "def buckaroo_workspace(package_name):"
350+
yield!
351+
packages
352+
|> Map.toSeq
353+
|> Seq.collect (fun (package, parents) -> seq {
354+
yield " if package_name == \"" + (PackageIdentifier.show package) + "\":"
355+
yield " return \"@" + (packageWorkspaceName parents package) + "\""
356+
yield ""
357+
})
347358

359+
yield " fail(package_name + \" is not a recognized package\")"
348360
yield ""
349361
}
350362
|> String.concat "\n"
@@ -407,13 +419,31 @@ let private generateTopLevelBazelDefs (sourceExplorer : ISourceExplorer) (lock :
407419

408420
yield " return None"
409421
yield ""
410-
yield generateBazelDefs lock.Dependencies
422+
423+
let accessiblePackages =
424+
lock.Packages
425+
|> Map.map (fun _ _ -> [])
426+
427+
yield generateBazelDefs accessiblePackages lock.Dependencies
411428
}
412429
|> String.concat "\n"
413430
}
414431

415432
let rec private installBazelPackages (context : Tasks.TaskContext) (root : string) (parents : PackageIdentifier list) (packages : Map<PackageIdentifier, LockedPackage>) = async {
416-
do! Files.touch (Paths.combine root "WORKSPACE")
433+
let! workspaceFileExists = Files.exists (Paths.combine root "WORKSPACE")
434+
435+
if not workspaceFileExists
436+
then
437+
let content =
438+
seq {
439+
yield "load(\"//buckaroo:defs.bzl\", \"buckaroo_setup\")"
440+
yield ""
441+
yield "buckaroo_setup()"
442+
yield ""
443+
}
444+
|> String.concat "\n"
445+
446+
do! Files.writeFile (Paths.combine root "WORKSPACE") content
417447

418448
// Install packages
419449
for (package, lockedPackage) in packages |> Map.toSeq do
@@ -436,6 +466,15 @@ let rec private installBazelPackages (context : Tasks.TaskContext) (root : strin
436466

437467
let! manifest = context.SourceExplorer.FetchManifest (lockedPackage.Location, lockedPackage.Versions)
438468

469+
let accessiblePackages =
470+
manifest.Dependencies
471+
|> Seq.map (fun d -> (d.Package, parents))
472+
|> Seq.append (
473+
manifest.PrivateDependencies
474+
|> Seq.map (fun d -> (d.Package, parents @ [ package ]))
475+
)
476+
|> Map.ofSeq
477+
439478
let! targets =
440479
asyncSeq {
441480
let xs =
@@ -483,6 +522,7 @@ let rec private installBazelPackages (context : Tasks.TaskContext) (root : strin
483522

484523
let buckarooDefs =
485524
generateBazelDefs
525+
accessiblePackages
486526
targets
487527

488528
do! Files.writeFile (Path.Combine(installPath, Constants.PackagesDirectory, Constants.BuckarooDefsFileName)) buckarooDefs

0 commit comments

Comments
 (0)