serv

package
v0.15.60 Latest Latest
Warning

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

Go to latest
Published: Jan 16, 2021 License: Apache-2.0 Imports: 62 Imported by: 0

Documentation

Overview

Package reload offers lightweight automatic reloading of running processes.

After initialisation with reload.Do() any changes to the binary will restart the process.

Example:

go func() {
    err := reload.Do(log.Printf)
    if err != nil {
        panic(err)
    }
}()

A list of additional directories to watch can be added:

go func() {
    err := reload.Do(log.Printf, reload.Dir("tpl", reloadTpl)
    if err != nil {
        panic(err)
    }
}()

Note that this package won't prevent race conditions (e.g. when assigning to a global templates variable). You'll need to use sync.RWMutex yourself.

Code generated by rice embed-go; DO NOT EDIT.

Index

Constants

View Source
const (
	LogLevelNone int = iota
	LogLevelInfo
	LogLevelWarn
	LogLevelError
	LogLevelDebug
)
View Source
const (
	PEM_SIG = "--BEGIN "
)

Variables

This section is empty.

Functions

func BuildDetails

func BuildDetails() string

func Cmd

func Cmd()

func Dir

func Dir(path string, cb func()) dir

Dir is an additional directory to watch for changes. Directories are watched non-recursively.

The second argument is the callback that to run when the directory changes. Use reload.ReExec(servConf) to restart the process.

func Do

func Do(servConf *ServConfig, log func(string, ...interface{}), additional ...dir) error

Do reload the current process when its binary changes.

The log function is used to display an informational startup message and errors. It works well with e.g. the standard log package or Logrus.

The error return will only return initialisation errors. Once initialized it will use the log function to print errors, rather than return.

func GetConfigName

func GetConfigName() string

func NewCSVSource

func NewCSVSource(filename string, sep rune) (*csvSource, error)

func ReExec

func ReExec(servConf *ServConfig) func()

Exec replaces the current process with a new copy of itself.

Types

type Action

type Action struct {
	Name     string
	SQL      string
	AuthName string `mapstructure:"auth_name"`
}

Action struct contains config values for a GraphJin service action

type Auth

type Auth struct {
	Name          string
	Type          string
	Cookie        string
	CredsInHeader bool `mapstructure:"creds_in_header"`
	Rails         struct {
		Version       string
		SecretKeyBase string `mapstructure:"secret_key_base"`
		URL           string
		Password      string
		MaxIdle       int `mapstructure:"max_idle"`
		MaxActive     int `mapstructure:"max_active"`
		Salt          string
		SignSalt      string `mapstructure:"sign_salt"`
		AuthSalt      string `mapstructure:"auth_salt"`
	}

	JWT struct {
		Provider   string
		Secret     string
		PubKeyFile string `mapstructure:"public_key_file"`
		PubKeyType string `mapstructure:"public_key_type"`
	}

	Header struct {
		Name   string
		Value  string
		Exists bool
	}
}

Auth struct contains authentication related config values used by the GraphJin service

type Config

type Config struct {
	Core `mapstructure:",squash"`
	Serv `mapstructure:",squash"`
	// contains filtered or unexported fields
}

Config struct holds the GraphJin config values

func ReadInConfig

func ReadInConfig(configFile string) (*Config, error)

ReadInConfig function reads in the config file for the environment specified in the GO_ENV environment variable. This is the best way to create a new GraphJin config.

type Core

type Core = core.Config

type ErrorLineExtract

type ErrorLineExtract struct {
	LineNum   int    // Line number starting with 1
	ColumnNum int    // Column number starting with 1
	Text      string // Text of the line without a new line character.
}

func ExtractErrorLine

func ExtractErrorLine(source string, position int) (ErrorLineExtract, error)

ExtractErrorLine takes source and character position extracts the line number, column number, and the line of text.

The first character is position 1.

type Serv

type Serv struct {
	AppName        string `mapstructure:"app_name"`
	Production     bool
	LogLevel       string `mapstructure:"log_level"`
	HostPort       string `mapstructure:"host_port"`
	Host           string
	Port           string
	HTTPGZip       bool     `mapstructure:"http_compress"`
	WebUI          bool     `mapstructure:"web_ui"`
	EnableTracing  bool     `mapstructure:"enable_tracing"`
	WatchAndReload bool     `mapstructure:"reload_on_config_change"`
	AuthFailBlock  bool     `mapstructure:"auth_fail_block"`
	SeedFile       string   `mapstructure:"seed_file"`
	MigrationsPath string   `mapstructure:"migrations_path"`
	AllowedOrigins []string `mapstructure:"cors_allowed_origins"`
	DebugCORS      bool     `mapstructure:"cors_debug"`
	APIPath        string   `mapstructure:"api_path"`
	CacheControl   string   `mapstructure:"cache_control"`

	// Telemetry struct contains OpenCensus metrics and tracing related config
	Telemetry struct {
		Debug    bool
		Interval *time.Duration
		Metrics  struct {
			Exporter  string
			Endpoint  string
			Namespace string
			Key       string
		}

		Tracing struct {
			Exporter      string
			Endpoint      string
			Sample        string
			IncludeQuery  bool `mapstructure:"include_query"`
			IncludeParams bool `mapstructure:"include_params"`
		}
	}

	Auth  auth.Auth
	Auths []auth.Auth

	// DB struct contains db config
	DB struct {
		Type        string
		Host        string
		Port        uint16
		DBName      string
		User        string
		Password    string
		Schema      string
		PoolSize    int32         `mapstructure:"pool_size"`
		MaxRetries  int           `mapstructure:"max_retries"`
		PingTimeout time.Duration `mapstructure:"ping_timeout"`
		EnableTLS   bool          `mapstructure:"enable_tls"`
		ServerName  string        `mapstructure:"server_name"`
		ServerCert  string        `mapstructure:"server_cert"`
		ClientCert  string        `mapstructure:"client_cert"`
		ClientKey   string        `mapstructure:"client_key"`
	} `mapstructure:"database"`

	Actions []Action

	RateLimiter struct {
		Rate     float64
		Bucket   int
		IPHeader string `mapstructure:"ip_header"`
	} `mapstructure:"rate_limiter"`
}

Serv struct contains config values used by the GraphJin service

type ServConfig

type ServConfig struct {
	// contains filtered or unexported fields
}

type Templ

type Templ struct {
	*rice.Box
	// contains filtered or unexported fields
}

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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