package main

import (
	"context"
	"fmt"
	"io"
	"os"

	"git.netflux.io/rob/termstream/app"
	"git.netflux.io/rob/termstream/config"
	dockerclient "github.com/docker/docker/client"
)

func main() {
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()

	if err := run(ctx, config.FromFile()); err != nil {
		_, _ = os.Stderr.WriteString("Error: " + err.Error() + "\n")
	}
}

func run(ctx context.Context, cfgReader io.Reader) error {
	cfg, err := config.Load(cfgReader)
	if err != nil {
		return fmt.Errorf("load config: %w", err)
	}

	dockerClient, err := dockerclient.NewClientWithOpts(dockerclient.FromEnv)
	if err != nil {
		return fmt.Errorf("new docker client: %w", err)
	}

	return app.Run(ctx, cfg, dockerClient)
}