65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def load_json(file_path: Path) -> dict[str, any]:
|
|
try:
|
|
with file_path.open("r") as file:
|
|
return json.load(file)
|
|
except FileNotFoundError:
|
|
return {}
|
|
|
|
|
|
def save_json(file_path: Path, data: dict[str, any]) -> None:
|
|
with file_path.open("w") as file:
|
|
json.dump(data, file, indent=4)
|
|
|
|
|
|
def update_json(file_path: Path, updates: dict[str, any]) -> None:
|
|
data = load_json(file_path)
|
|
data.update(updates)
|
|
save_json(file_path, data)
|
|
|
|
|
|
def config_location() -> str:
|
|
config_file = "shared_preferences.json"
|
|
config_directory = ".local/share/org.localsend.localsend_app"
|
|
config_path = Path.home() / Path(config_directory) / Path(config_file)
|
|
return config_path
|
|
|
|
|
|
def ensure_config_directory() -> None:
|
|
config_directory = Path(config_location()).parent
|
|
config_directory.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
def load_config() -> dict[str, any]:
|
|
return load_json(config_location())
|
|
|
|
|
|
def save_config(data: dict[str, any]) -> None:
|
|
save_json(config_location(), data)
|
|
|
|
|
|
def update_username(username: str, data: dict[str, any]) -> dict[str, any]:
|
|
data["flutter.ls_alias"] = username
|
|
return data
|
|
|
|
|
|
def main(argv: list[str]) -> None:
|
|
try:
|
|
display_name = argv[1]
|
|
except IndexError:
|
|
# This is not an error, just don't update the name
|
|
print("No display name provided.")
|
|
sys.exit(0)
|
|
|
|
ensure_config_directory()
|
|
updated_data = update_username(display_name, load_config())
|
|
save_config(updated_data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv[:2])
|