feat(cli): Platform option parity across Python and Node CLIs (MEM-5893) (#6696)
This commit is contained in:
@@ -27,24 +27,45 @@ def load_settings() -> dict:
|
||||
try:
|
||||
with open(SETTINGS_PATH) as f:
|
||||
user = json.load(f)
|
||||
settings.update({k: v for k, v in user.items() if k in DEFAULTS})
|
||||
except (json.JSONDecodeError, OSError):
|
||||
pass
|
||||
return settings
|
||||
if isinstance(user, dict):
|
||||
settings.update({k: v for k, v in user.items() if k in DEFAULTS})
|
||||
return settings
|
||||
|
||||
|
||||
def create_default_settings() -> None:
|
||||
def create_default_settings() -> bool:
|
||||
"""Write the default settings file if absent. Returns True if it was created."""
|
||||
SETTINGS_PATH.parent.mkdir(parents=True, exist_ok=True)
|
||||
if SETTINGS_PATH.exists():
|
||||
return False
|
||||
with open(SETTINGS_PATH, "w") as f:
|
||||
json.dump(DEFAULTS, f, indent=2)
|
||||
f.write("\n")
|
||||
return True
|
||||
|
||||
|
||||
def unknown_keys() -> list[str]:
|
||||
"""Keys present in the user's settings file that no code reads."""
|
||||
if not SETTINGS_PATH.exists():
|
||||
with open(SETTINGS_PATH, "w") as f:
|
||||
json.dump(DEFAULTS, f, indent=2)
|
||||
f.write("\n")
|
||||
return []
|
||||
try:
|
||||
with open(SETTINGS_PATH) as f:
|
||||
user = json.load(f)
|
||||
except (json.JSONDecodeError, OSError):
|
||||
return []
|
||||
if not isinstance(user, dict):
|
||||
return []
|
||||
return sorted(k for k in user if k not in DEFAULTS)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
if len(sys.argv) > 1 and sys.argv[1] == "init":
|
||||
create_default_settings()
|
||||
print(f"Created {SETTINGS_PATH}")
|
||||
if create_default_settings():
|
||||
print(f"Created {SETTINGS_PATH}")
|
||||
ignored = unknown_keys()
|
||||
if ignored:
|
||||
print(f"Ignoring unrecognized settings in {SETTINGS_PATH}: {', '.join(ignored)}")
|
||||
else:
|
||||
print(json.dumps(load_settings()))
|
||||
|
||||
Reference in New Issue
Block a user