[lucicfg] Make var.get() auto-initialize the variable to the supplied default.

It means once var.get() is called for the first time, all subsequent calls
will observe the exact same value (either an explicitly set one or the default).

This is a measure to reduce "statefullness" of vars, meant to outlaw the
following case:

  lib.do_something()  # does something based on lib.var default value
  lib.var.set(123)
  lib.do_something()  # suddenly does something else, since lib.var is set now

Now lib.var.set(...) call will fail with a message explaining that it was
auto-initialized as a side effect of first 'get'.

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

Change-Id: I0efb87cc0833d3e74ac9e19741b27f83ea166476
Reviewed-on: https://chromium-review.googlesource.com/c/1453018
Commit-Queue: Vadim Shtayura <vadimsh@chromium.org>
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
6 files changed
tree: 67d13a794e953842657918477fd94a8ea0a06011
  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. swarming/
  28. tokenserver/
  29. tools/
  30. tumble/
  31. vpython/
  32. web/
  33. .gitattributes
  34. .travis.yml
  35. AUTHORS
  36. codereview.settings
  37. CONTRIBUTING.md
  38. CONTRIBUTORS
  39. LICENSE
  40. OWNERS
  41. pre-commit-go.yml
  42. PRESUBMIT.py
  43. 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.