config

package
v0.0.0-...-97a8b9d Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2018 License: MIT Imports: 10 Imported by: 5

Documentation

Overview

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

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

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.

Types

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

Jump to

Keyboard shortcuts

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