This repository has been archived on 2023-05-06. You can view files and clone it, but cannot push or open issues or pull requests.
helix/internal/config/config.go

67 lines
1.8 KiB
Go
Raw Normal View History

2021-06-30 06:03:02 +01:00
package config
import (
"encoding/json"
"fmt"
"io/ioutil"
)
// Config is the whole configuration for the forge platform deployment.
2021-06-30 06:03:02 +01:00
type Config struct {
ProjectName string `json:"project"`
Docker DockerConfig `json:"docker"`
Services ServicesConfig `json:"services"`
2021-06-30 06:03:02 +01:00
}
// DockerConfig contains the configuration for docker specific components.
2021-06-30 06:03:02 +01:00
type DockerConfig struct {
Network DockerNetworkConfig `json:"network"`
SharedVolume DockerSharedVolumeConfig `json:"sharedVolume"`
2021-06-30 06:03:02 +01:00
}
// DockerNetworkConfig contains configuration for creating the docker network.
2021-06-30 06:03:02 +01:00
type DockerNetworkConfig struct {
Name string `json:"name"`
Subnet string `json:"subnet"`
Driver string `json:"driver"`
}
// DockerSharedVolumeConfig contains configuration
// for creating the shared volume.
type DockerSharedVolumeConfig struct {
Name string `json:"name"`
}
// Services contains a list of services and their configuration.
type ServicesConfig struct {
Traefik TraefikConfig `json:"traefik"`
}
// TraefikConfig contains configuration for the Traefik container.
type TraefikConfig struct {
CheckNewVersion bool `json:"checkNewVersion"`
SendAnonymousUsage bool `json:"sendAnonymousUsage"`
Version string `json:"version"`
ContainerIp string `json:"containerIp"`
LogLevel string `json:"logLevel"`
}
// NewConfig creates a new Config value from a given
// JSON file.
2021-06-30 06:03:02 +01:00
func NewConfig(file string) (Config, error) {
var c Config
var err error
data, err := ioutil.ReadFile(file)
if err != nil {
return c, fmt.Errorf("unable to read data from %s...\n%v", file, err)
}
if err = json.Unmarshal(data, &c); err != nil {
return c, fmt.Errorf("unable to decode the JSON configuration from %s...\n%v", file, err)
}
return c, nil
}