// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Package errs defines common err messages emitted by this interpreter. This is mostly
// useful for testing when we need to distinguish a starlark language error from an error
// in client code.
package errs

import (
	"fmt"
)

// Reason is an error prefix describing the reason for an interpreter error.
type Reason string

var (
	// ErrInvalidArg signifies that an invalid argument was provided.
	ErrInvalidArg Reason = "[fxicfg] invalid argument"

	// ErrIllegalWrite signifies that a write-operation is not allowed.
	ErrIllegalWrite Reason = "[fxicfg] cannot write value"
)

// WithReason returns a new error annotated with the given reason and message.
func WithReason(reason Reason, format string, args ...interface{}) error {
	return fmt.Errorf("%s: %s", reason, fmt.Sprintf(format, args...))
}
