config

package
v0.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2020 License: MIT Imports: 13 Imported by: 12

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FmtModVer

func FmtModVer(mod, ver string) string

FmtModVer is a helper function that can take pkg/a/b and v2.3.1 and returns pkg/a/b@v2.3.1

func GetTimeoutDuration added in v0.3.0

func GetTimeoutDuration(timeout int) time.Duration

GetTimeoutDuration returns the timeout as time.duration

func ModuleVersionFromPath added in v0.3.0

func ModuleVersionFromPath(path string) (string, string)

ModuleVersionFromPath returns module and version from a storage path E.g athens/@v/v1.0.info -> athens and v.1.0

func PackageVersionedName

func PackageVersionedName(module, version, ext string) string

PackageVersionedName return package full name used in storage. E.g athens/@v/v1.0.mod

Types

type AzureBlobConfig added in v0.3.0

type AzureBlobConfig struct {
	AccountName   string `validate:"required" envconfig:"ATHENS_AZURE_ACCOUNT_NAME"`
	AccountKey    string `validate:"required" envconfig:"ATHENS_AZURE_ACCOUNT_KEY"`
	ContainerName string `validate:"required" envconfig:"ATHENS_AZURE_CONTAINER_NAME"`
}

AzureBlobConfig specifies the properties required to use Azure as the storage backend

type Config added in v0.2.0

type Config struct {
	TimeoutConf
	GoEnv            string    `validate:"required" envconfig:"GO_ENV"`
	GoBinary         string    `validate:"required" envconfig:"GO_BINARY_PATH"`
	GoProxy          string    `envconfig:"GOPROXY"`
	GoBinaryEnvVars  EnvList   `envconfig:"ATHENS_GO_BINARY_ENV_VARS"`
	GoGetWorkers     int       `validate:"required" envconfig:"ATHENS_GOGET_WORKERS"`
	ProtocolWorkers  int       `validate:"required" envconfig:"ATHENS_PROTOCOL_WORKERS"`
	LogLevel         string    `validate:"required" envconfig:"ATHENS_LOG_LEVEL"`
	CloudRuntime     string    `validate:"required" envconfig:"ATHENS_CLOUD_RUNTIME"`
	EnablePprof      bool      `envconfig:"ATHENS_ENABLE_PPROF"`
	PprofPort        string    `envconfig:"ATHENS_PPROF_PORT"`
	FilterFile       string    `envconfig:"ATHENS_FILTER_FILE"`
	TraceExporterURL string    `envconfig:"ATHENS_TRACE_EXPORTER_URL"`
	TraceExporter    string    `envconfig:"ATHENS_TRACE_EXPORTER"`
	StatsExporter    string    `envconfig:"ATHENS_STATS_EXPORTER"`
	StorageType      string    `validate:"required" envconfig:"ATHENS_STORAGE_TYPE"`
	GlobalEndpoint   string    `envconfig:"ATHENS_GLOBAL_ENDPOINT"` // This feature is not yet implemented
	Port             string    `envconfig:"ATHENS_PORT"`
	BasicAuthUser    string    `envconfig:"BASIC_AUTH_USER"`
	BasicAuthPass    string    `envconfig:"BASIC_AUTH_PASS"`
	ForceSSL         bool      `envconfig:"PROXY_FORCE_SSL"`
	ValidatorHook    string    `envconfig:"ATHENS_PROXY_VALIDATOR"`
	PathPrefix       string    `envconfig:"ATHENS_PATH_PREFIX"`
	NETRCPath        string    `envconfig:"ATHENS_NETRC_PATH"`
	GithubToken      string    `envconfig:"ATHENS_GITHUB_TOKEN"`
	HGRCPath         string    `envconfig:"ATHENS_HGRC_PATH"`
	TLSCertFile      string    `envconfig:"ATHENS_TLSCERT_FILE"`
	TLSKeyFile       string    `envconfig:"ATHENS_TLSKEY_FILE"`
	SumDBs           []string  `envconfig:"ATHENS_SUM_DBS"`
	NoSumPatterns    []string  `envconfig:"ATHENS_GONOSUM_PATTERNS"`
	DownloadMode     mode.Mode `envconfig:"ATHENS_DOWNLOAD_MODE"`
	DownloadURL      string    `envconfig:"ATHENS_DOWNLOAD_URL"`
	SingleFlightType string    `envconfig:"ATHENS_SINGLE_FLIGHT_TYPE"`
	RobotsFile       string    `envconfig:"ATHENS_ROBOTS_FILE"`
	SingleFlight     *SingleFlight
	Storage          *StorageConfig
}

Config provides configuration values for all components

func GetConf added in v0.2.0

func GetConf(path string) (*Config, error)

GetConf accepts the path to a file, constructs an absolute path to the file, and attempts to parse it into a Config struct.

func Load added in v0.3.0

func Load(configFile string) (*Config, error)

Load loads the config from a file. If file is not present returns default config

func ParseConfigFile added in v0.2.0

func ParseConfigFile(configFile string) (*Config, error)

ParseConfigFile parses the given file into an athens config struct

func (*Config) BasicAuth added in v0.2.0

func (c *Config) BasicAuth() (user, pass string, ok bool)

BasicAuth returns BasicAuthUser and BasicAuthPassword and ok if neither of them are empty

func (*Config) FilterOff added in v0.2.0

func (c *Config) FilterOff() bool

FilterOff returns true if the FilterFile is empty

func (*Config) TLSCertFiles added in v0.3.0

func (c *Config) TLSCertFiles() (cert, key string, err error)

TLSCertFiles returns certificate and key files and an error if both files doesn't exist and have approperiate file permissions

type DiskConfig added in v0.2.0

type DiskConfig struct {
	RootPath string `validate:"required" envconfig:"ATHENS_DISK_STORAGE_ROOT"`
}

DiskConfig specifies the properties required to use Disk as the storage backend

type EnvList added in v0.6.1

type EnvList []string

EnvList is a list of key-value environment variables that are passed to the Go command

func (*EnvList) Add added in v0.6.1

func (el *EnvList) Add(key, value string)

Add adds a key=value entry to the environment list

func (EnvList) HasKey added in v0.6.1

func (el EnvList) HasKey(key string) bool

HasKey returns whether a key-value entry is present by only checking the left of key=value

func (EnvList) Validate added in v0.6.1

func (el EnvList) Validate() error

Validate validates that all strings inside the list are of the key=value format

type Etcd added in v0.3.0

type Etcd struct {
	Endpoints string `envconfig:"ATHENS_ETCD_ENDPOINTS"`
}

Etcd holds client side configuration that helps Athens connect to the Etcd backends.

type GCPConfig added in v0.2.0

type GCPConfig struct {
	ProjectID string `envconfig:"GOOGLE_CLOUD_PROJECT"`
	Bucket    string `validate:"required" envconfig:"ATHENS_STORAGE_GCP_BUCKET"`
	JSONKey   string `envconfig:"ATHENS_STORAGE_GCP_JSON_KEY"`
}

GCPConfig specifies the properties required to use GCP as the storage backend

type MinioConfig added in v0.2.0

type MinioConfig struct {
	Endpoint  string `validate:"required" envconfig:"ATHENS_MINIO_ENDPOINT"`
	Key       string `validate:"required" envconfig:"ATHENS_MINIO_ACCESS_KEY_ID"`
	Secret    string `validate:"required" envconfig:"ATHENS_MINIO_SECRET_ACCESS_KEY"`
	Bucket    string `validate:"required" envconfig:"ATHENS_MINIO_BUCKET_NAME"`
	Region    string `envconfig:"ATHENS_MINIO_REGION"`
	EnableSSL bool   `envconfig:"ATHENS_MINIO_USE_SSL"`
}

MinioConfig specifies the properties required to use Minio or DigitalOcean Spaces as the storage backend

type MongoConfig added in v0.2.0

type MongoConfig struct {
	URL                   string `validate:"required" envconfig:"ATHENS_MONGO_STORAGE_URL"`
	DefaultDBName         string `envconfig:"ATHENS_MONGO_DEFAULT_DATABASE" default:"athens"`
	DefaultCollectionName string `envconfig:"ATHENS_MONGO_DEFAULT_COLLECTION" default:"modules"`
	CertPath              string `envconfig:"ATHENS_MONGO_CERT_PATH"`
	InsecureConn          bool   `envconfig:"ATHENS_MONGO_INSECURE"`
}

MongoConfig specifies the properties required to use MongoDB as the storage backend

type Redis added in v0.4.0

type Redis struct {
	Endpoint string `envconfig:"ATHENS_REDIS_ENDPOINT"`
}

Redis holds the client side configuration to connect to redis as a SingleFlight implementation.

type S3Config added in v0.2.0

type S3Config struct {
	Region                             string `validate:"required" envconfig:"AWS_REGION"`
	Key                                string `envconfig:"AWS_ACCESS_KEY_ID"`
	Secret                             string `envconfig:"AWS_SECRET_ACCESS_KEY"`
	Token                              string `envconfig:"AWS_SESSION_TOKEN"`
	Bucket                             string `validate:"required" envconfig:"ATHENS_S3_BUCKET_NAME"`
	UseDefaultConfiguration            bool   `envconfig:"AWS_USE_DEFAULT_CONFIGURATION"`
	CredentialsEndpoint                string `envconfig:"AWS_CREDENTIALS_ENDPOINT"`
	AwsContainerCredentialsRelativeURI string `envconfig:"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"`
	Endpoint                           string `evnconfig:"AWS_ENDPOINT"`
}

S3Config specifies the properties required to use S3 as the storage backend

type SingleFlight added in v0.3.0

type SingleFlight struct {
	Etcd  *Etcd
	Redis *Redis
}

SingleFlight holds the various backend configurations for a distributed lock or single flight mechanism.

type StorageConfig added in v0.2.0

type StorageConfig struct {
	Disk      *DiskConfig
	GCP       *GCPConfig
	Minio     *MinioConfig
	Mongo     *MongoConfig
	S3        *S3Config
	AzureBlob *AzureBlobConfig
}

StorageConfig provides configs for various storage backends

type TimeoutConf added in v0.2.0

type TimeoutConf struct {
	Timeout int `validate:"required"`
}

TimeoutConf is a common struct for anything with a timeout

func (*TimeoutConf) TimeoutDuration added in v0.2.0

func (t *TimeoutConf) TimeoutDuration() time.Duration

TimeoutDuration returns the timeout as time.duration

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL