mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import os.path
|
|
import sys
|
|
from collections.abc import Sequence
|
|
|
|
|
|
def should_use_color(setting: str) -> bool:
|
|
# normally I would use `sys.stdout.isatty()` however direnv always pipes this
|
|
return setting == "always" or (setting == "auto" and not os.environ.get("CI"))
|
|
|
|
|
|
def color(s: str, color: str, *, use_color: bool) -> str:
|
|
if use_color:
|
|
return f"{color}{s}\033[m"
|
|
else:
|
|
return s
|
|
|
|
|
|
def main(argv: Sequence[str] | None = None) -> int:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"--settings-file",
|
|
default=os.path.expanduser("~/Library/Group Containers/group.com.docker/settings.json"),
|
|
help=argparse.SUPPRESS,
|
|
)
|
|
parser.add_argument(
|
|
"--memory-minimum",
|
|
default=8092,
|
|
type=int,
|
|
help="the minimum amount of allocated memory to warn for. default: %(default)s (MiB)",
|
|
)
|
|
parser.add_argument(
|
|
"--color",
|
|
choices=("always", "never", "auto"),
|
|
default="auto",
|
|
help="whether to use color. default: %(default)s (auto is determined by CI environment variable)",
|
|
)
|
|
args = parser.parse_args(argv)
|
|
|
|
use_color = should_use_color(args.color)
|
|
|
|
try:
|
|
with open(args.settings_file) as f:
|
|
contents = json.load(f)
|
|
except (json.JSONDecodeError, OSError):
|
|
return 0 # file didn't exist or was not json
|
|
|
|
try:
|
|
configured = contents["memoryMiB"]
|
|
except KeyError:
|
|
return 0 # configuration did not look like what we expected
|
|
|
|
if not isinstance(configured, int):
|
|
return 0 # configuration did not look like what we expected
|
|
|
|
if configured < args.memory_minimum:
|
|
msg = f"""\
|
|
WARNING: docker is configured with less than the recommended minimum memory!
|
|
- open Docker.app and adjust the memory in Settings -> Resources
|
|
- current memory (MiB): {configured}
|
|
- recommended minimum (MiB): {args.memory_minimum}
|
|
"""
|
|
print(color(msg, "\033[33m", use_color=use_color), end="", file=sys.stderr)
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|