func htmlmin(c *config.Config, q *registry.Queue) error { size := c.CountDefault("htmlmin") for i := 0; i < size; i++ { source := c.GetRequired("htmlmin[%d].source", i) dest := c.GetRequired("htmlmin[%d].dest", i) if err := htmlcompressor(source, dest); err != nil { return fmt.Errorf("html compress failed: %s", err) } } return nil }
func parseAttrs(data *config.Config, object string, idx int) map[string]string { m := map[string]string{} size := data.CountDefault("fields[%d].%s", idx, object) for i := 0; i < size; i++ { name := data.GetRequired("fields[%d].%s[%d].name", idx, object, i) value := data.GetDefault("fields[%d].%s[%d].value", "", idx, object, i) m[name] = value } return m }
func Parse(data *config.Config, idx int) []*Validator { validators := []*Validator{} nvalidators := data.CountDefault("fields[%d].validators", idx) for i := 0; i < nvalidators; i++ { name := data.GetRequired("fields[%d].validators[%d].name", idx, i) value := data.GetDefault("fields[%d].validators[%d].value", "", idx, i) msg := data.GetDefault("fields[%d].validators[%d].msg", "", idx, i) validator := createValidator(name, value, msg) if validator == nil { panic("bad validator name: " + name) } validators = append(validators, validator) } return validators }
func watch(c *config.Config, q *registry.Queue) error { size := c.CountRequired("watch") for i := 0; i < size; i++ { // Extract the task name task := c.GetRequired("watch[%d].task", i) // Extract the paths paths := []string{} pathsSize := c.CountDefault("watch[%d].paths", i) for j := 0; j < pathsSize; j++ { paths = append(paths, c.GetRequired("watch[%d].paths[%d]", i, j)) } // Init the watcher if err := watcher.Dirs(paths, task); err != nil { return fmt.Errorf("watch dirs failed: %s", err) } } return nil }
func parseFields(data *config.Config, spec string) []*field { fields := []*field{} size := data.CountRequired("%s", spec) for i := 0; i < size; i++ { field := &field{ Key: data.GetDefault("%s[%d].key", "", spec, i), Kind: data.GetRequired("%s[%d].kind", spec, i), Store: data.GetDefault("%s[%d].store", "", spec, i), Condition: data.GetDefault("%s[%d].condition", "", spec, i), Validators: make([]*validator, 0), } if field.Kind == "Array" || field.Kind == "Object" || field.Kind == "Conditional" { newSpec := fmt.Sprintf("%s[%d].fields", spec, i) field.Fields = parseFields(data, newSpec) } validatorsSize := data.CountDefault("%s[%d].validators", spec, i) for j := 0; j < validatorsSize; j++ { v := &validator{ Name: data.GetRequired("%s[%d].validators[%d].name", spec, i, j), Value: data.GetDefault("%s[%d].validators[%d].value", "", spec, i, j), } usesSize := data.CountDefault("%s[%d].validators[%d].use", spec, i, j) for k := 0; k < usesSize; k++ { value := data.GetDefault("%s[%d].validators[%d].use[%d]", "", spec, i, j, k) v.Uses = append(v.Uses, value) } field.Validators = append(field.Validators, v) } fields = append(fields, field) } return fields }
func readServeConfig(c *config.Config) (*serveConfig, error) { sc := &serveConfig{ base: true, url: c.GetDefault("serve.url", "http://localhost:8080/"), } method := c.GetDefault("serve.base", "") if method != "" && method != "proxy" && method != "cb" { return nil, fmt.Errorf("serve.base config must be 'proxy' (default) or 'cb'") } sc.base = (method == "cb") size := c.CountDefault("serve.proxy") for i := 0; i < size; i++ { pc := proxyConfig{ host: fmt.Sprintf("%s:%d", c.GetRequired("serve.proxy[%d].host", i), *config.Port), url: c.GetRequired("serve.proxy[%d].url", i), } sc.proxy = append(sc.proxy, pc) } return sc, nil }