mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-21 06:31:11 +02:00
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>
76 lines
1.6 KiB
Go
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
|
|
}
|