talos/internal/pkg/runtime/runtime.go
Andrew Rynhard d430a37e46 refactor: use go 1.13 error wrapping
This removes the github.com/pkg/errors package in favor of the official
error wrapping in go 1.13.

Signed-off-by: Andrew Rynhard <andrew@andrewrynhard.com>
2019-10-15 22:20:50 -07:00

76 lines
1.6 KiB
Go

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package runtime
import (
"fmt"
"strings"
)
// Mode is a runtime mode.
type Mode int
const (
// Cloud represents a runtime mode.
Cloud Mode = iota
// Container represents a runtime mode.
Container
// Interactive represents a runtime mode.
Interactive
// Metal represents a runtime mode.
Metal
)
// String returns the string representation of a Mode.
func (m Mode) String() string {
return [...]string{"Cloud", "Container", "Interactive", "Metal"}[m]
}
// ModeFromString returns a runtime mode that matches the given string.
func ModeFromString(s string) (m Mode, err error) {
switch strings.Title(s) {
case "Cloud":
return Cloud, nil
case "Container":
return Container, nil
case "Interactive":
return Interactive, nil
case "Metal":
return Metal, nil
default:
return m, fmt.Errorf("%q is not a valid mode", s)
}
}
// Runtime defines the runtime parameters.
type Runtime interface {
Platform() Platform
Config() Configurator
}
// NewRuntime initializes and returns the runtime interface.
func NewRuntime(p Platform, c Configurator) Runtime {
return &DefaultRuntime{
p: p,
c: c,
}
}
// DefaultRuntime implements the Runtime interface.
type DefaultRuntime struct {
p Platform
c Configurator
}
// Platform implements the Runtime interface.
func (d *DefaultRuntime) Platform() Platform {
return d.p
}
// Config implements the Runtime interface.
func (d *DefaultRuntime) Config() Configurator {
return d.c
}