[lucicfg] Low-level API for generating arbitrary configs.

This is an escape hatch for cases when a high-level declarative API is not
sufficient. It will also be used internally by the high-level generator itself.

Config generating functions are registered as callbacks to allow high-level
configs to be defined in a declarative way, where order of definitions is not
important, as long as the entire high-level config is consistent. To allow this,
we should execute all top-level Starlark code before doing any evaluation of
the state, thus a necessity for delaying generator calls via callbacks.

R=iannucci@chromium.org, nodir@chromium.org
BUG=833946

Change-Id: Ib62640a316fc1255de873defc521be7cf67665bd
Reviewed-on: https://chromium-review.googlesource.com/c/1352371
Commit-Queue: Vadim Shtayura <vadimsh@chromium.org>
Reviewed-by: Nodir Turakulov <nodir@chromium.org>
13 files changed
tree: fd38c8f10c2fcdbd55a615bdba88a29480b61070
  1. appengine/
  2. auth/
  3. buildbucket/
  4. cipd/
  5. client/
  6. common/
  7. config/
  8. dm/
  9. examples/
  10. gce/
  11. grpc/
  12. hardcoded/
  13. infra/
  14. logdog/
  15. luci_notify/
  16. lucicfg/
  17. lucictx/
  18. machine-db/
  19. milo/
  20. mmutex/
  21. mp/
  22. scheduler/
  23. scripts/
  24. server/
  25. starlark/
  26. tokenserver/
  27. tools/
  28. tumble/
  29. vpython/
  30. web/
  31. .travis.yml
  32. AUTHORS
  33. codereview.settings
  34. CONTRIBUTING.md
  35. CONTRIBUTORS
  36. LICENSE
  37. OWNERS
  38. pre-commit-go.yml
  39. PRESUBMIT.py
  40. README.md
README.md

luci-go: LUCI services and tools in Go

GoDoc

Installing

LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:

fetch infra
cd infra/go
eval `./env.py`
cd src/go.chromium.org/luci

Contributing

Contributing uses the same flow as Chromium contributions.