Documentation ¶
Overview ¶
Package tags функционал работы с кастомными спецификациями и процессингом тэгов структур
Example (TagSpecification) ¶
package main import ( "log" "os" "reflect" "time" "git.corout.in/golibs/errors" "git.corout.in/golibs/filepaths" "git.corout.in/golibs/tags" ) type RedisConf struct { Endpoint string `env:"REDIS_ENDPOINT" default:"redis:6379"` } type Config struct { Endpoint string `env:"SERVICE_LISTEN_ENDPOINT" default:"0.0.0.0:8080"` TempDirectory string `env:"SERVICE_TMP" default:"/tmp/servicename" checkfs:"mkdir"` Redis RedisConf StartTimeout time.Duration `env:"SERVICE_START_TIMEOUT" default:"15s"` LimitConnections int `env:"SERVICE_CONN_LIMIT" default:"1000"` RetryPolicyMaxAttempts uint64 `env:"SERVICE_RETRY_MAX_ATTEMPTS" default:"10"` RetryPolicyBackoffMultiplier float64 `env:"SERVICE_RETRY_BACKOFF_MULTIPLIER" default:"1.5"` } type confSpec struct { Default tags.TagProcessor Env tags.TagProcessor CheckFS tags.TagProcessor } func main() { spec, err := tags.ParseSpec(confSpec{ Default: tags.DirectSetter(), Env: tags.SetterFromEnv(), CheckFS: tags.TagProcFunc(func(f reflect.Value, tv string) error { if !filepaths.FileExists(f.String()) { switch tv { case "mkdir": return filepaths.MakeDirs(f.String()) case "mkfile": fd, err := os.Create(f.String()) if err != nil { return errors.Wrap(err, "create file") } return fd.Close() } } return nil }), }) if err != nil { log.Fatalln(err) } conf := &Config{} if err = spec.Apply(conf); err != nil { log.Fatalln(err) } }
Output:
Index ¶
Examples ¶
Constants ¶
View Source
const ( // ErrWrongSpec - ошибка спецификации ErrWrongSpec = errors.Const("Wrong tags specifiacation") // ErrWrongInterface - ошибка переданного параметра в процессинг ErrWrongInterface = errors.Const("Wrong struct interface") )
Variables ¶
This section is empty.
Functions ¶
func FieldTagsIterator ¶
FieldTagsIterator - итератор по полям структуры со значениями указанных тэгов
Types ¶
type Spec ¶
type Spec interface {
Apply(in interface{}) error
}
Spec - спецификация описания тэгов и их процессинга
type TagProcFunc ¶
TagProcFunc - процессор тэга
type TagProcessor ¶
TagProcessor - интерфейс процессора тэгов
func DirectSetter ¶
func DirectSetter() TagProcessor
DirectSetter - стандартный сеттер значений по значению тэга
func SetterFromEnv ¶
func SetterFromEnv() TagProcessor
SetterFromEnv - стандартный сеттер значений из переменных окружения
Click to show internal directories.
Click to hide internal directories.