dom/config_cli.py

75 lines
3.1 KiB
Python
Executable File

#!/usr/bin/env python3
"""CLI tool for managing configuration."""
import argparse
import asyncio
from config import Config
async def main():
parser = argparse.ArgumentParser(description="Ollama Notification System Configuration")
parser.add_argument("--set-ollama-endpoint", help="Set Ollama endpoint URL")
parser.add_argument("--set-ollama-model", help="Set Ollama model name")
parser.add_argument("--set-silent-time", nargs=2, metavar=("START", "END"),
help="Set silent time range (e.g., 20:00 12:00)")
parser.add_argument("--set-interval-range", nargs=2, type=int, metavar=("MIN", "MAX"),
help="Set notification interval range in minutes")
parser.add_argument("--set-bark-url", help="Set Bark API URL")
parser.add_argument("--set-bark-key", help="Set Bark device key")
parser.add_argument("--set-ntfy-url", help="Set Ntfy API URL")
parser.add_argument("--set-ntfy-topic", help="Set Ntfy topic")
parser.add_argument("--set-ntfy-token", help="Set Ntfy access token")
parser.add_argument("--show", action="store_true", help="Show current configuration")
args = parser.parse_args()
config = Config()
if args.set_ollama_endpoint:
config.ollama_endpoint = args.set_ollama_endpoint
if args.set_ollama_model:
config.ollama_model = args.set_ollama_model
if args.set_silent_time:
config.silent_start = args.set_silent_time[0]
config.silent_end = args.set_silent_time[1]
if args.set_interval_range:
config.min_interval = args.set_interval_range[0]
config.max_interval = args.set_interval_range[1]
if args.set_bark_url:
config.bark_api_url = args.set_bark_url
if args.set_bark_key:
config.bark_device_key = args.set_bark_key
if args.set_ntfy_url:
config.ntfy_api_url = args.set_ntfy_url
if args.set_ntfy_topic:
config.ntfy_topic = args.set_ntfy_topic
if args.set_ntfy_token:
config.ntfy_access_token = args.set_ntfy_token
if any([args.set_ollama_endpoint, args.set_ollama_model, args.set_silent_time,
args.set_interval_range, args.set_bark_url, args.set_bark_key,
args.set_ntfy_url, args.set_ntfy_topic, args.set_ntfy_token]):
config.save()
print("Configuration saved successfully!")
if args.show or not any(vars(args).values()):
print("Current Configuration:")
print(f" Ollama Endpoint: {config.ollama_endpoint}")
print(f" Ollama Model: {config.ollama_model}")
print(f" Silent Time: {config.silent_start} - {config.silent_end}")
print(f" Interval Range: {config.min_interval} - {config.max_interval} minutes")
print(f" Bark API URL: {config.bark_api_url or 'Not set'}")
print(f" Bark Device Key: {'***' if config.bark_device_key else 'Not set'}")
print(f" Ntfy API URL: {config.ntfy_api_url or 'Not set'}")
print(f" Ntfy Topic: {config.ntfy_topic or 'Not set'}")
print(f" Ntfy Token: {'***' if config.ntfy_access_token else 'Not set'}")
if __name__ == "__main__":
asyncio.run(main())