Project globs
Most bleep commands take project names as arguments. Behind the obvious case (one name → one project) bleep ships a small vocabulary of project globs, named groups that expand to a set of projects. There are no wildcards: a glob is one of a fixed list of shapes, each deterministic, all surfaced via tab completion.
The shapes
| Glob | Matches | Example |
|---|---|---|
<name>@<crossId> | One specific cross-projection of one project. | mylib@jvm213 |
<name> | Every cross of that project. | mylib |
<crossId> | Every project on that cross axis (explicit or derived). | jvm3 |
java | Every project with no Scala or Kotlin configured. | java |
kotlin | Every project with kotlin: configured. | kotlin |
<slashed-prefix> | Every /-delimited prefix of a slashed project name. | services/api |
Multiple globs on the same command line are unioned.
A note on slashed project names
Project names are normally flat (mylib, mylib-test). If you name them
with slashes (services/api/foo, services/web/admin),
bleep automatically registers every /-delimited prefix of that name
(services, services/api, services/web) as a glob that matches the
projects beneath it. Flat names get no prefix globs; the mechanism only
kicks in once you've put a / in a name.
CWD scoping is part of the glob system
Bleep has a second knob for narrowing the project set: the directory
you run from. When your CWD sits inside the build root, bleep
automatically restricts every command to projects whose folder is
under that CWD, and globs resolve within that restricted set.
CWD and globs intersect, they don't replace each other. A glob never reaches outside the CWD's project subset, and the CWD never matches something a glob excludes.
bleep projects is the way to see what falls out at any given moment:
# at the build root: everything
$ bleep projects
services/api/foo
services/api/bar
services/web/admin
mylib@jvm213
mylib@jvm3
# narrow the glob: every project on the jvm3 cross
$ bleep projects jvm3
services/api/foo
services/api/bar
services/web/admin
mylib@jvm3
# narrow the cwd: only what's under services/
$ cd services
$ bleep projects
services/api/foo
services/api/bar
services/web/admin
# both at once: jvm3 AND under services/
$ bleep projects jvm3
services/api/foo
services/api/bar
services/web/admin
# CWD doesn't pin the glob. It shrinks the universe.
# Asking for a glob outside your CWD returns nothing:
$ bleep projects mylib
(empty)
# Asking for a path prefix narrower than your CWD also works:
$ bleep projects services/api
services/api/foo
services/api/bar
The same intersection happens for bleep compile, bleep test, and
every other command that takes project arguments.
Discovering globs
There's no command that prints the glob list directly, tab
completion is the discovery surface. With shell completions installed
(see Tab completions), pressing <Tab>
after bleep compile, bleep test, or bleep projects shows every
glob that resolves in your current CWD. Move into a subfolder and the
list shrinks; move back to the root and it grows.
Where to go next
- Cross-building: what cross-ids mean and where they come from.
- Tab completions: wiring shell completion so globs surface as you type.