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 EnvList
- type Etcd
- type External
- type GCP
- type GCPConfig
- type Index
- type MinioConfig
- type MongoConfig
- type MySQL
- type Postgres
- type Redis
- type RedisLockConfig
- type RedisSentinel
- type S3Config
- type SingleFlight
- type Storage
- 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 `envconfig:"ATHENS_AZURE_ACCOUNT_NAME" validate:"required"`
AccountKey string `envconfig:"ATHENS_AZURE_ACCOUNT_KEY" validate:"required"`
ContainerName string `envconfig:"ATHENS_AZURE_CONTAINER_NAME" validate:"required"`
}
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 `envconfig:"GO_ENV" validate:"required"`
GoBinary string `envconfig:"GO_BINARY_PATH" validate:"required"`
GoBinaryEnvVars EnvList `envconfig:"ATHENS_GO_BINARY_ENV_VARS"`
GoGetWorkers int `envconfig:"ATHENS_GOGET_WORKERS" validate:"required"`
GoGetDir string `envconfig:"ATHENS_GOGET_DIR"`
ProtocolWorkers int `envconfig:"ATHENS_PROTOCOL_WORKERS" validate:"required"`
LogLevel string `envconfig:"ATHENS_LOG_LEVEL" validate:"required"`
LogFormat string `envconfig:"ATHENS_LOG_FORMAT" validate:"oneof='' 'json' 'plain'"`
CloudRuntime string `envconfig:"ATHENS_CLOUD_RUNTIME" validate:"required_without=LogFormat"`
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 `envconfig:"ATHENS_STORAGE_TYPE" validate:"required"`
GlobalEndpoint string `envconfig:"ATHENS_GLOBAL_ENDPOINT"` // This feature is not yet implemented
Port string `envconfig:"ATHENS_PORT"`
UnixSocket string `envconfig:"ATHENS_UNIX_SOCKET"`
BasicAuthUser string `envconfig:"BASIC_AUTH_USER"`
BasicAuthPass string `envconfig:"BASIC_AUTH_PASS"`
HomeTemplatePath string `envconfig:"ATHENS_HOME_TEMPLATE_PATH"`
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"`
NetworkMode string `envconfig:"ATHENS_NETWORK_MODE" validate:"oneof=strict offline fallback"`
SingleFlightType string `envconfig:"ATHENS_SINGLE_FLIGHT_TYPE"`
RobotsFile string `envconfig:"ATHENS_ROBOTS_FILE"`
IndexType string `envconfig:"ATHENS_INDEX_TYPE"`
ShutdownTimeout int `envconfig:"ATHENS_SHUTDOWN_TIMEOUT" validate:"min=0"`
SingleFlight *SingleFlight
Storage *Storage
Index *Index
}
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.
type DiskConfig ¶ added in v0.2.0
type DiskConfig struct {
RootPath string `envconfig:"ATHENS_DISK_STORAGE_ROOT" validate:"required"`
}
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) Decode ¶ added in v0.7.2
Decode implements envconfig.Decoder. Please see the below link for more information on that interface:
https://github.com/kelseyhightower/envconfig#custom-decoders
We are doing this to allow for very long lists of assignments to be set inside of a single environment variable. For example:
ATHENS_GO_BINARY_ENV_VARS="GOPRIVATE=*.corp.example.com,rsc.io/private; GOPROXY=direct"
See the below link for more information: https://github.com/gomods/athens/issues/1404
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 External ¶ added in v0.9.0
type External struct {
URL string `envconfig:"ATHENS_EXTERNAL_STORAGE_URL" validate:"required"`
}
External specifies configuration for an external http storage.
type GCP ¶ added in v0.14.1
type GCP struct {
StaleThreshold int `envconfig:"ATHENS_GCP_STALE_THRESHOLD"`
}
GCP is the configuration for GCP locking.
func DefaultGCPConfig ¶ added in v0.14.1
func DefaultGCPConfig() *GCP
DefaultGCPConfig returns the default GCP locking configuration.
type GCPConfig ¶ added in v0.2.0
type GCPConfig struct {
ProjectID string `envconfig:"GOOGLE_CLOUD_PROJECT"`
Bucket string `envconfig:"ATHENS_STORAGE_GCP_BUCKET" validate:"required"`
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 `envconfig:"ATHENS_MINIO_ENDPOINT" validate:"required"`
Key string `envconfig:"ATHENS_MINIO_ACCESS_KEY_ID" validate:"required"`
Secret string `envconfig:"ATHENS_MINIO_SECRET_ACCESS_KEY" validate:"required"`
Bucket string `envconfig:"ATHENS_MINIO_BUCKET_NAME" validate:"required"`
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 `envconfig:"ATHENS_MONGO_STORAGE_URL" validate:"required"`
DefaultDBName string `default:"athens" envconfig:"ATHENS_MONGO_DEFAULT_DATABASE"`
DefaultCollectionName string `default:"modules" envconfig:"ATHENS_MONGO_DEFAULT_COLLECTION"`
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 MySQL ¶ added in v0.10.0
type MySQL struct {
Protocol string `envconfig:"ATHENS_INDEX_MYSQL_PROTOCOL" validate:"required"`
Host string `envconfig:"ATHENS_INDEX_MYSQL_HOST" validate:"required"`
Port int `envconfig:"ATHENS_INDEX_MYSQL_PORT" validate:""`
User string `envconfig:"ATHENS_INDEX_MYSQL_USER" validate:"required"`
Password string `envconfig:"ATHENS_INDEX_MYSQL_PASSWORD" validate:""`
Database string `envconfig:"ATHENS_INDEX_MYSQL_DATABASE" validate:"required"`
Params map[string]string `envconfig:"ATHENS_INDEX_MYSQL_PARAMS" validate:"required"`
}
MySQL config.
type Postgres ¶ added in v0.10.0
type Postgres struct {
Host string `envconfig:"ATHENS_INDEX_POSTGRES_HOST" validate:"required"`
Port int `envconfig:"ATHENS_INDEX_POSTGRES_PORT" validate:"required"`
User string `envconfig:"ATHENS_INDEX_POSTGRES_USER" validate:"required"`
Password string `envconfig:"ATHENS_INDEX_POSTGRES_PASSWORD" validate:""`
Database string `envconfig:"ATHENS_INDEX_POSTGRES_DATABASE" validate:"required"`
Params map[string]string `envconfig:"ATHENS_INDEX_POSTGRES_PARAMS" validate:"required"`
}
Postgres config.
type Redis ¶ added in v0.4.0
type Redis struct {
Endpoint string `envconfig:"ATHENS_REDIS_ENDPOINT"`
Password string `envconfig:"ATHENS_REDIS_PASSWORD"`
LockConfig *RedisLockConfig
}
Redis holds the client side configuration to connect to redis as a SingleFlight implementation.
type RedisLockConfig ¶ added in v0.12.0
type RedisLockConfig struct {
Timeout int `envconfig:"ATHENS_REDIS_LOCK_TIMEOUT"`
TTL int `envconfig:"ATHENS_REDIS_LOCK_TTL"`
MaxRetries int `envconfig:"ATHENS_REDIS_LOCK_MAX_RETRIES"`
}
RedisLockConfig is the configuration for redis locking.
func DefaultRedisLockConfig ¶ added in v0.12.0
func DefaultRedisLockConfig() *RedisLockConfig
DefaultRedisLockConfig returns the default redis locking configuration.
type RedisSentinel ¶ added in v0.8.0
type RedisSentinel struct {
Endpoints []string `envconfig:"ATHENS_REDIS_SENTINEL_ENDPOINTS"`
MasterName string `envconfig:"ATHENS_REDIS_SENTINEL_MASTER_NAME"`
SentinelPassword string `envconfig:"ATHENS_REDIS_SENTINEL_PASSWORD"`
LockConfig *RedisLockConfig
}
RedisSentinel is the configuration for using redis with sentinel for SingleFlight.
type S3Config ¶ added in v0.2.0
type S3Config struct {
Region string `envconfig:"AWS_REGION" validate:"required"`
Key string `envconfig:"AWS_ACCESS_KEY_ID"`
Secret string `envconfig:"AWS_SECRET_ACCESS_KEY"`
Token string `envconfig:"AWS_SESSION_TOKEN"`
Bucket string `envconfig:"ATHENS_S3_BUCKET_NAME" validate:"required"`
UseDefaultConfiguration bool `envconfig:"AWS_USE_DEFAULT_CONFIGURATION"`
ForcePathStyle bool `envconfig:"AWS_FORCE_PATH_STYLE"`
CredentialsEndpoint string `envconfig:"AWS_CREDENTIALS_ENDPOINT"`
AwsContainerCredentialsRelativeURI string `envconfig:"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"`
Endpoint string `envconfig:"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
RedisSentinel *RedisSentinel
GCP *GCP
}
SingleFlight holds the various backend configurations for a distributed lock or single flight mechanism.
type Storage ¶ added in v0.10.0
type Storage struct {
Disk *DiskConfig
GCP *GCPConfig
Minio *MinioConfig
Mongo *MongoConfig
S3 *S3Config
AzureBlob *AzureBlobConfig
External *External
}
Storage 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.