Source code for access_py_telemetry.cli
"""Console script for access_py_telemetry."""
import access_py_telemetry
from typing import Sequence
from shutil import copy2
import argparse
import filecmp
from pathlib import Path
PACKAGE_ROOT = Path(access_py_telemetry.__file__).parent
[docs]
def configure_telemetry(argv: Sequence[str] | None = None) -> int:
"""Console script for configuring ipython telemetry."""
parser = argparse.ArgumentParser(description="Configure ipython telemetry.")
parser.add_argument("--disable", action="store_true", help="Disable telemetry.")
parser.add_argument("--enable", action="store_true", help="Enable telemetry.")
parser.add_argument("--status", action="store_true", help="Check telemetry status.")
parser.add_argument("--silent", action="store_true", help="Suppress output.")
HOME = Path.home()
telemetry_fname = HOME / ".ipython" / "profile_default" / "startup" / "telemetry.py"
template_file = PACKAGE_ROOT / "templates" / "telemetry_template.py"
telem_file_exists = telemetry_fname.exists()
args = parser.parse_args(argv)
arg_dict = {
"disable": args.disable,
"enable": args.enable,
"status": args.status,
}
if not any(arg_dict.values()):
parser.print_help()
return 0
if len([arg for arg in arg_dict.values() if arg]) > 1:
print("Only one of --disable, --enable, or --status can be used at a time.")
return 1
if args.status:
if telem_file_exists and filecmp.cmp(telemetry_fname, template_file):
print("Telemetry enabled.") if not args.silent else None
elif telem_file_exists and not filecmp.cmp(telemetry_fname, template_file):
(
print(
"Telemetry enabled but misconfigured. Run `access-py-telemetry --disable && access-py-telemetry --enable` to fix."
)
if not args.silent
else None
)
else:
print("Telemetry disabled.") if not args.silent else None
return 0
if args.disable:
if telem_file_exists:
telemetry_fname.unlink()
print("Telemetry disabled.") if not args.silent else None
else:
print("Telemetry already disabled.") if not args.silent else None
return 0
if args.enable:
if telem_file_exists:
print("Telemetry already enabled.") if not args.silent else None
return 0
if not telemetry_fname.parent.exists():
telemetry_fname.parent.mkdir(parents=True)
copy2(template_file, telemetry_fname)
print("Telemetry enabled.") if not args.silent else None
return 0