package dockerfile // import "github.com/docker/docker/builder/dockerfile"

import (
	"github.com/docker/go-metrics"
)

var (
	buildsTriggered metrics.Counter
	buildsFailed    metrics.LabeledCounter
)

// Build metrics prometheus messages, these values must be initialized before
// using them. See the example below in the "builds_failed" metric definition.
const (
	metricsDockerfileSyntaxError        = "dockerfile_syntax_error"
	metricsDockerfileEmptyError         = "dockerfile_empty_error"
	metricsCommandNotSupportedError     = "command_not_supported_error"
	metricsErrorProcessingCommandsError = "error_processing_commands_error"
	metricsBuildTargetNotReachableError = "build_target_not_reachable_error"
	metricsMissingOnbuildArgumentsError = "missing_onbuild_arguments_error"
	metricsUnknownInstructionError      = "unknown_instruction_error"
	metricsBuildCanceled                = "build_canceled"
)

func init() {
	buildMetrics := metrics.NewNamespace("builder", "", nil)

	buildsTriggered = buildMetrics.NewCounter("builds_triggered", "Number of triggered image builds")
	buildsFailed = buildMetrics.NewLabeledCounter("builds_failed", "Number of failed image builds", "reason")
	for _, r := range []string{
		metricsDockerfileSyntaxError,
		metricsDockerfileEmptyError,
		metricsCommandNotSupportedError,
		metricsErrorProcessingCommandsError,
		metricsBuildTargetNotReachableError,
		metricsMissingOnbuildArgumentsError,
		metricsUnknownInstructionError,
		metricsBuildCanceled,
	} {
		buildsFailed.WithValues(r)
	}

	metrics.Register(buildMetrics)
}
