package main

import (
	"encoding/json"
	"flag"
	"fmt"
	"os"

	local_metrics "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/metrics"
	"git.frostfs.info/TrueCloudLab/frostfs-observability/metrics"
)

var (
	node = flag.String("node", "", "File to export storage node metrics to.")
	ir   = flag.String("ir", "", "File to export innerring node metrics to.")
)

func main() {
	flag.Parse()

	if *node != "" && *ir != "" {
		fmt.Println("-node and -ir flags are mutually exclusive")
		os.Exit(1)
	}

	var filename string
	switch {
	case *node != "":
		_ = local_metrics.NewNodeMetrics()
		filename = *node
	case *ir != "":
		_ = local_metrics.NewInnerRingMetrics()
		filename = *ir

	default:
		flag.Usage()
		os.Exit(1)
	}

	ds := metrics.DescribeAll()

	data, err := json.Marshal(ds)
	if err != nil {
		fmt.Fprintf(os.Stderr, "Could not parse marshal: %v\n", err)
		os.Exit(1)
	}

	if err := os.WriteFile(filename, data, 0o644); err != nil {
		fmt.Fprintf(os.Stderr, "Could write to file: %v\n", err)
		os.Exit(1)
	}
}