package httpserver

import (
	_ "embed"
	"fmt"
)

//go:embed oto_agent_bootstrap.sh
var embeddedBootstrapScript []byte

//go:embed oto_agent_bootstrap.ps1
var embeddedBootstrapPs1 []byte

// bootstrapScriptProvider returns the content of the OTO agent bootstrap script.
type bootstrapScriptProvider interface {
	bootstrapScript() ([]byte, error)
}

// bootstrapPs1Provider returns the content of the OTO agent PowerShell bootstrap script.
type bootstrapPs1Provider interface {
	bootstrapPs1() ([]byte, error)
}

// embeddedBootstrapProvider serves the shell script compiled into the binary via go:embed.
type embeddedBootstrapProvider struct{}

func (embeddedBootstrapProvider) bootstrapScript() ([]byte, error) {
	if len(embeddedBootstrapScript) == 0 {
		return nil, fmt.Errorf("embedded bootstrap script is empty")
	}
	return embeddedBootstrapScript, nil
}

// embeddedBootstrapPs1Provider serves the PowerShell script compiled into the binary via go:embed.
type embeddedBootstrapPs1Provider struct{}

func (embeddedBootstrapPs1Provider) bootstrapPs1() ([]byte, error) {
	if len(embeddedBootstrapPs1) == 0 {
		return nil, fmt.Errorf("embedded bootstrap PS1 script is empty")
	}
	return embeddedBootstrapPs1, nil
}
