// Команда healthlog — коллектор данных Apple Health из Health Auto Export.
//
// Подкоманды:
//
//	healthlog [serve] --config <path>   принимать пакеты (по умолчанию)
//	healthlog reindex --config <path>   пересобрать витрину из журнала
//	healthlog uncovered --config <path> перечень секций, которых разбор не покрыл
//	healthlog healthcheck --config <p>  проверить /healthz (для docker HEALTHCHECK)
package main

import (
	"os"
	"strings"

	"git.vakhrushev.me/av/healthlog/internal/logging"
)

func main() {
	args := os.Args[1:]

	// Первый позиционный аргумент (не флаг) — подкоманда. Без него (и при
	// `--config ...`) запускаем сервис.
	cmd := "serve"
	if len(args) > 0 && !strings.HasPrefix(args[0], "-") {
		cmd, args = args[0], args[1:]
	}

	var err error
	switch cmd {
	case "serve":
		err = runServe(args)
	case "reindex":
		err = runReindex(args)
	case "uncovered":
		err = runUncovered(args)
	case "healthcheck":
		err = runHealthcheck(args)
	default:
		_, _ = os.Stderr.WriteString("unknown command: " + cmd + "\n")
		os.Exit(2)
	}
	if err != nil {
		if cmd == "serve" {
			// Фатальный сбой старта сервиса — структурный лог ERROR (как в
			// проде), затем ненулевой код возврата.
			logging.NewStderr().Error("fatal startup", "command", cmd, "error", err)
		} else {
			// Диагностический CLI — человекочитаемый stderr, это
			// пользовательский вывод, а не лог сервиса.
			_, _ = os.Stderr.WriteString("fatal: " + err.Error() + "\n")
		}
		os.Exit(1)
	}
}
