[lucicfg] Implement 'generate' and half of 'validate' subcommands.

'validate' is kept backward compatible with what we had already (validating
arbitrary, not necessary generated, config sets).

Brief explanation of supported modes:

$ lucicfg generate main.star
  Generates *.cfg files and puts them in the output directory set via
  meta.config(config_dir=...) or via -config-dir flag.

$ lucicfg generate main.star -validate
  Same as above, but also sends generated configs to LUCI Config for validation.

$ lucicfg validate <DIR> -config-set ...
  Read-only operation, can be used from presubmits. Takes files from <DIR> and
  sends them to LUCI Config for validation.

$ lucicfg validate main.star (not implemented yet)
  Read-only operation, can be used from presubmits. Generates *.cfg into memory,
  compares them to existing files on disk, failing if there's a diff. Otherwise
  sends generated configs to LUCI Config for validation.

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

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