package autocert

import (
	"context"
	"os"

	E "github.com/yusing/go-proxy/internal/error"
)

func (p *Provider) Setup(ctx context.Context) (err E.NestedError) {
	if err = p.LoadCert(); err != nil {
		if !err.Is(os.ErrNotExist) { // ignore if cert doesn't exist
			return err
		}
		logger.Debug("obtaining cert due to error loading cert")
		if err = p.ObtainCert(); err != nil {
			return err
		}
	}

	go p.ScheduleRenewal(ctx)

	for _, expiry := range p.GetExpiries() {
		logger.Infof("certificate expire on %s", expiry)
		break
	}

	return nil
}