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 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"` 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
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 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
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
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