Version: v0.0.0-...-5d38250 Latest Latest

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

Go to latest
Published: Aug 23, 2018 License: MIT Imports: 10 Imported by: 0



Package config provides the bebop configuration file structure, initialization and reading.



This section is empty.


This section is empty.


func GenKeyHex

func GenKeyHex(byteLen int) string

GenKeyHex generates a crypto-random key with byte length byteLen and hex-encodes it to a string.

func Init

func Init() (string, error)

Init generates an initial config string.


type Config

type Config struct {
	Address string `hcl:"address" envconfig:"BEBOP_ADDRESS"`
	BaseURL string `hcl:"base_url" envconfig:"BEBOP_BASE_URL"`
	Title   string `hcl:"title" envconfig:"BEBOP_TITLE"`

	JWT struct {
		Secret string `hcl:"secret" envconfig:"BEBOP_JWT_SECRET"`
	} `hcl:"jwt"`

	FileStorage struct {
		Type string `hcl:"type" envconfig:"BEBOP_FILE_STORAGE_TYPE"`

		Local struct {
			Dir string `hcl:"dir" envconfig:"BEBOP_FILE_STORAGE_LOCAL_DIR"`
		} `hcl:"local"`

		GoogleCloudStorage struct {
			ServiceAccountFile string `hcl:"service_account_file" envconfig:"BEBOP_FILE_STORAGE_GCS_SERVICE_ACCOUNT_FILE"`
			Bucket             string `hcl:"bucket" envconfig:"BEBOP_FILE_STORAGE_GCS_BUCKET"`
		} `hcl:"google_cloud_storage"`

		AmazonS3 struct {
			AccessKey string `hcl:"access_key" envconfig:"BEBOP_FILE_STORAGE_S3_ACCESS_KEY"`
			SecretKey string `hcl:"secret_key" envconfig:"BEBOP_FILE_STORAGE_S3_SECRET_KEY"`
			Region    string `hcl:"region" envconfig:"BEBOP_FILE_STORAGE_S3_REGION"`
			Bucket    string `hcl:"bucket" envconfig:"BEBOP_FILE_STORAGE_S3_BUCKET"`
		} `hcl:"amazon_s3"`
	} `hcl:"file_storage"`

	Store struct {
		Type string `hcl:"type" envconfig:"BEBOP_STORE_TYPE"`

		PostgreSQL struct {
			Address     string `hcl:"address" envconfig:"BEBOP_STORE_POSTGRESQL_ADDRESS"`
			Username    string `hcl:"username" envconfig:"BEBOP_STORE_POSTGRESQL_USERNAME"`
			Password    string `hcl:"password" envconfig:"BEBOP_STORE_POSTGRESQL_PASSWORD"`
			Database    string `hcl:"database" envconfig:"BEBOP_STORE_POSTGRESQL_DATABASE"`
			SSLMode     string `hcl:"sslmode" envconfig:"BEBOP_STORE_POSTGRESQL_SSLMODE"`
			SSLRootCert string `hcl:"sslrootcert" envconfig:"BEBOP_STORE_POSTGRESQL_SSLROOTCERT"`
		} `hcl:"postgresql"`

		MySQL struct {
			Address  string `hcl:"address" envconfig:"BEBOP_STORE_MYSQL_ADDRESS"`
			Username string `hcl:"username" envconfig:"BEBOP_STORE_MYSQL_USERNAME"`
			Password string `hcl:"password" envconfig:"BEBOP_STORE_MYSQL_PASSWORD"`
			Database string `hcl:"database" envconfig:"BEBOP_STORE_MYSQL_DATABASE"`
		} `hcl:"mysql"`
	} `hcl:"store"`

	OAuth struct {
		Google struct {
			ClientID string `hcl:"client_id" envconfig:"BEBOP_OAUTH_GOOGLE_CLIENT_ID"`
			Secret   string `hcl:"secret" envconfig:"BEBOP_OAUTH_GOOGLE_SECRET"`
		} `hcl:"google"`

		Facebook struct {
			ClientID string `hcl:"client_id" envconfig:"BEBOP_OAUTH_FACEBOOK_CLIENT_ID"`
			Secret   string `hcl:"secret" envconfig:"BEBOP_OAUTH_FACEBOOK_SECRET"`
		} `hcl:"facebook"`

		Github struct {
			ClientID string `hcl:"client_id" envconfig:"BEBOP_OAUTH_GITHUB_CLIENT_ID"`
			Secret   string `hcl:"secret" envconfig:"BEBOP_OAUTH_GITHUB_SECRET"`
		} `hcl:"github"`

		BattleNet struct {
			ClientID string `hcl:"client_id" envconfig:"BEBOP_OAUTH_BATTLENET_CLIENT_ID"`
			Secret   string `hcl:"secret" envconfig:"BEBOP_OAUTH_BATTLENET_SECRET"`
		} `hcl:"battlenet"`
	} `hcl:"oauth"`

Config is a bebop configuration struct.

func ReadEnv

func ReadEnv() (*Config, error)

ReadEnv reads a bebop config from environment variables.

func ReadFile

func ReadFile(filename string) (*Config, error)

ReadFile reads a bebop config from file.

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL