|
@@ -1,5 +1,4 @@
|
|
#!/usr/bin/env python
|
|
#!/usr/bin/env python
|
|
-# -*- coding: utf-8 -*-
|
|
|
|
# Copyright (c) 2018 The Chromium Authors. All rights reserved.
|
|
# Copyright (c) 2018 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
# found in the LICENSE file.
|
|
@@ -22,43 +21,35 @@ CURRENT_VERSION = 1
|
|
|
|
|
|
APP_URL = 'https://cit-cli-metrics.appspot.com'
|
|
APP_URL = 'https://cit-cli-metrics.appspot.com'
|
|
|
|
|
|
-EMPTY_LINE = (
|
|
|
|
- '┃ ┃'
|
|
|
|
-)
|
|
|
|
-NOTICE_COUNTDOWN_HEADER = (
|
|
|
|
- '┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n'
|
|
|
|
- '┃ METRICS COLLECTION WILL START IN %2d EXECUTIONS ┃'
|
|
|
|
-)
|
|
|
|
-NOTICE_COLLECTION_HEADER = (
|
|
|
|
- '┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n'
|
|
|
|
- '┃ METRICS COLLECTION IS TAKING PLACE ┃'
|
|
|
|
-)
|
|
|
|
-NOTICE_VERSION_CHANGE_HEADER = (
|
|
|
|
- '┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n'
|
|
|
|
- '┃ WE ARE COLLECTING ADDITIONAL METRICS ┃\n'
|
|
|
|
- '┃ ┃\n'
|
|
|
|
- '┃ Please review the changes and opt-in again. ┃'
|
|
|
|
-)
|
|
|
|
-NOTICE_FOOTER = (
|
|
|
|
- '┃ To suppress this message opt in or out using: ┃\n'
|
|
|
|
- '┃ $ gclient metrics [--opt-in] [--opt-out] ┃\n'
|
|
|
|
- '┃ For more information please see metrics.README.md ┃\n'
|
|
|
|
- '┃ in your depot_tools checkout or visit ┃\n'
|
|
|
|
- '┃ https://goo.gl/yNpRDV. ┃\n'
|
|
|
|
- '┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n'
|
|
|
|
-)
|
|
|
|
-
|
|
|
|
-CHANGE_NOTICE = {
|
|
|
|
- # No changes for version 0
|
|
|
|
- 0: '',
|
|
|
|
- 1: ('┃ We want to collect the Git version. ┃\n'
|
|
|
|
- '┃ We want to collect information about the HTTP ┃\n'
|
|
|
|
- '┃ requests that depot_tools makes, and the git and ┃\n'
|
|
|
|
- '┃ cipd commands it executes. ┃\n'
|
|
|
|
- '┃ ┃\n'
|
|
|
|
- '┃ We only collect known strings to make sure we ┃\n'
|
|
|
|
- '┃ don\'t record PII. ┃')
|
|
|
|
-}
|
|
|
|
|
|
+def get_notice_countdown_header(countdown):
|
|
|
|
+ if countdown == 0:
|
|
|
|
+ yield ' METRICS COLLECTION IS TAKING PLACE'
|
|
|
|
+ else:
|
|
|
|
+ yield ' METRICS COLLECTION WILL START IN %d EXECUTIONS' % countdown
|
|
|
|
+
|
|
|
|
+def get_notice_version_change_header():
|
|
|
|
+ yield ' WE ARE COLLECTING ADDITIONAL METRICS'
|
|
|
|
+ yield ''
|
|
|
|
+ yield ' Please review the changes and opt-in again.'
|
|
|
|
+
|
|
|
|
+def get_notice_footer():
|
|
|
|
+ yield 'To suppress this message opt in or out using:'
|
|
|
|
+ yield '$ gclient metrics [--opt-in] [--opt-out]'
|
|
|
|
+ yield 'For more information please see metrics.README.md'
|
|
|
|
+ yield 'in your depot_tools checkout or visit'
|
|
|
|
+ yield 'https://goo.gl/yNpRDV.'
|
|
|
|
+
|
|
|
|
+def get_change_notice(version):
|
|
|
|
+ if version == 0:
|
|
|
|
+ pass # No changes for version 0
|
|
|
|
+ elif version == 1:
|
|
|
|
+ yield 'We want to collect the Git version.'
|
|
|
|
+ yield 'We want to collect information about the HTTP'
|
|
|
|
+ yield 'requests that depot_tools makes, and the git and'
|
|
|
|
+ yield 'cipd commands it executes.'
|
|
|
|
+ yield ''
|
|
|
|
+ yield 'We only collect known strings to make sure we'
|
|
|
|
+ yield 'don\'t record PII.'
|
|
|
|
|
|
|
|
|
|
KNOWN_PROJECT_URLS = {
|
|
KNOWN_PROJECT_URLS = {
|
|
@@ -286,25 +277,31 @@ def get_repo_timestamp(path_to_repo):
|
|
# Get the age of the checkout in weeks.
|
|
# Get the age of the checkout in weeks.
|
|
return seconds_to_weeks(stdout.strip())
|
|
return seconds_to_weeks(stdout.strip())
|
|
|
|
|
|
-
|
|
|
|
-def print_notice(countdown):
|
|
|
|
- """Print a notice to let the user know the status of metrics collection."""
|
|
|
|
|
|
+def print_red_boxed_text(out, min_width, lines):
|
|
colorama.init()
|
|
colorama.init()
|
|
- print(colorama.Fore.RED + '\033[1m', file=sys.stderr, end='')
|
|
|
|
- if countdown:
|
|
|
|
- print(NOTICE_COUNTDOWN_HEADER % countdown, file=sys.stderr)
|
|
|
|
|
|
+ if sys.platform == 'win32':
|
|
|
|
+ [EW, NS, SE, SW, NE, NW] = list('=|++++')
|
|
else:
|
|
else:
|
|
- print(NOTICE_COLLECTION_HEADER, file=sys.stderr)
|
|
|
|
- print(EMPTY_LINE, file=sys.stderr)
|
|
|
|
- print(NOTICE_FOOTER + colorama.Style.RESET_ALL, file=sys.stderr)
|
|
|
|
|
|
+ [EW, NS, SE, SW, NE, NW] = list(u'\u2501\u2503\u250F\u2513\u2517\u251B')
|
|
|
|
+ out(colorama.Fore.RED + colorama.Style.BRIGHT)
|
|
|
|
+ width = max(min_width, max(len(line) for line in lines))
|
|
|
|
+ out(SE + EW * (width + 2) + SW + '\n')
|
|
|
|
+ for line in lines:
|
|
|
|
+ out('%s %-*s %s\n' % (NS, width, line, NS))
|
|
|
|
+ out(NE + EW * (width + 2) + NW + '\n')
|
|
|
|
+ out(colorama.Style.RESET_ALL)
|
|
|
|
|
|
|
|
+def print_notice(countdown):
|
|
|
|
+ """Print a notice to let the user know the status of metrics collection."""
|
|
|
|
+ lines = list(get_notice_countdown_header(countdown))
|
|
|
|
+ lines.append('')
|
|
|
|
+ lines += list(get_notice_footer())
|
|
|
|
+ print_red_boxed_text(sys.stderr.write, 49, lines)
|
|
|
|
|
|
def print_version_change(config_version):
|
|
def print_version_change(config_version):
|
|
"""Print a notice to let the user know we are collecting more metrics."""
|
|
"""Print a notice to let the user know we are collecting more metrics."""
|
|
- colorama.init()
|
|
|
|
- print(colorama.Fore.RED + '\033[1m', file=sys.stderr, end='')
|
|
|
|
- print(NOTICE_VERSION_CHANGE_HEADER, file=sys.stderr)
|
|
|
|
- print(EMPTY_LINE, file=sys.stderr)
|
|
|
|
- for version in range(config_version + 1, CURRENT_VERSION + 1):
|
|
|
|
- print(CHANGE_NOTICE[version], file=sys.stderr)
|
|
|
|
- print(EMPTY_LINE, file=sys.stderr)
|
|
|
|
|
|
+ lines = list(get_notice_version_change_header())
|
|
|
|
+ for version in xrange(config_version + 1, CURRENT_VERSION + 1):
|
|
|
|
+ lines.append('')
|
|
|
|
+ lines += list(get_change_notice(version))
|
|
|
|
+ print_red_boxed_text(sys.stderr.write, 49, lines)
|