Documentation
¶
Index ¶
- func FmtModVer(mod, ver string) string
- func GetTimeoutDuration(timeout int) time.Duration
- func ModuleVersionFromPath(path string) (string, string)
- func PackageVersionedName(module, version, ext string) string
- type AzureBlobConfig
- type Config
- type DiskConfig
- type Etcd
- type GCPConfig
- type MinioConfig
- type MongoConfig
- type Redis
- type S3Config
- type SingleFlight
- type StorageConfig
- type TimeoutConf
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FmtModVer ¶
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
GetTimeoutDuration returns the timeout as time.duration
func ModuleVersionFromPath ¶ added in v0.3.0
ModuleVersionFromPath returns module and version from a storage path E.g athens/@v/v1.0.info -> athens and v.1.0
func PackageVersionedName ¶
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"`
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"`
SingleFlight *SingleFlight
Storage *StorageConfig
}
Config provides configuration values for all components
func GetConf ¶ added in v0.2.0
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
Load loads the config from a file. If file is not present returns default config
func ParseConfigFile ¶ added in v0.2.0
ParseConfigFile parses the given file into an athens config struct
func (*Config) BasicAuth ¶ added in v0.2.0
BasicAuth returns BasicAuthUser and BasicAuthPassword and ok if neither of them are empty
func (*Config) TLSCertFiles ¶ added in v0.3.0
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 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"`
}
S3Config specifies the properties required to use S3 as the storage backend
type SingleFlight ¶ added in v0.3.0
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