Newer
Older
EnvoyControlPlane / internal / pkg / cert / cert.go
package cert

import (
	"context"
	"fmt"
	"os"

	internallog "envoy-control-plane/internal/log"
)

const defaultFileMode = 0755

// CertIssuancePrerequisite handles the conditional logic and argument validation for cert issuance.
func CertIssuancePrerequisite(ctx context.Context, webrootpath string) error {
	log := internallog.LogFromContext(ctx)
	log.Infof("Certificate issuance enabled. Validating arguments...")
	if webrootpath == "" {
		log.Errorf("Webroot path is required for certificate issuance")
		return fmt.Errorf("webroot path is required for certificate issuance")
	}

	// 1. Ensure webroot path exists
	if _, err := os.Stat(webrootpath); os.IsNotExist(err) {
		log.Warnf("Webroot path '%s' does not exist. Creating it.", webrootpath)
		if err := os.MkdirAll(webrootpath, defaultFileMode); err != nil {
			log.Errorf("Failed to create webroot path: %v", err)
			return fmt.Errorf("failed to create webroot path: %w", err)
		}
	}
	return nil
}