blob: 3127286462f8d9b7313cb3562ecb5caaca5f0c68 [file] [log] [blame]
Will Bradley88b1ffc2019-08-19 15:09:39 -06001# Copyright 2019 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""The build API Metrics Emit entry point."""
6
Will Bradley88b1ffc2019-08-19 15:09:39 -06007from chromite.lib import commandline
Alex Kleinaef41942022-04-19 14:13:17 -06008from chromite.lib import metrics_lib
Will Bradley88b1ffc2019-08-19 15:09:39 -06009
10
11def main(argv):
12 """Emit a metric event."""
13 parser = commandline.ArgumentParser(description=__doc__)
Alex Klein8718c032022-04-19 14:06:03 -060014 parser.add_argument(
15 'op',
Alex Kleinaef41942022-04-19 14:13:17 -060016 choices=sorted(metrics_lib.VALID_OPS),
Alex Klein8718c032022-04-19 14:06:03 -060017 help='Which metric event operator to emit.')
18 parser.add_argument(
19 'name',
20 help='The name of the metric event as you would like it '
21 'to appear downstream in data stores.')
22 parser.add_argument(
23 'arg', nargs='?', help='An accessory argument dependent upon the "op".')
Will Bradley88b1ffc2019-08-19 15:09:39 -060024 opts = parser.parse_args(argv)
25
Alex Kleinaef41942022-04-19 14:13:17 -060026 if opts.arg and not metrics_lib.OP_EXPECTS_ARG[opts.op]:
Will Bradley333d22c2019-09-11 15:04:59 -060027 # We do not expect to get an |arg| for this |op|.
Alex Klein8718c032022-04-19 14:06:03 -060028 parser.error('Unexpected arg "%s" given for op "%s"' % (opts.arg, opts.op))
Will Bradley333d22c2019-09-11 15:04:59 -060029
Alex Kleinaef41942022-04-19 14:13:17 -060030 timestamp = metrics_lib.current_milli_time()
31 metrics_lib.append_metrics_log(timestamp, opts.name, opts.op, arg=opts.arg)