Beispiel #1
1
func (cfg *config) init() *app.OptionsError {
	if !version.SemVerValid(cfg.Version) {
		return &app.OptionsError{Field: "version", Message: locale.Sprintf(locale.ErrInvalidFormat)}
	}

	if len(cfg.Inputs) == 0 {
		return &app.OptionsError{Field: "inputs", Message: locale.Sprintf(locale.ErrRequired)}
	}

	if cfg.Output == nil {
		return &app.OptionsError{Field: "output", Message: locale.Sprintf(locale.ErrRequired)}
	}

	for i, opt := range cfg.Inputs {
		if err := opt.Init(); err != nil {
			index := strconv.Itoa(i)
			err.Field = "inputs[" + index + "]." + err.Field
			return err
		}
		opt.SyntaxLog = erro // 语法错误输出到 erro 中
	}

	if err := cfg.Output.Init(); err != nil {
		err.Field = "outputs." + err.Field
		return err
	}

	return nil
}
Beispiel #2
0
// 对一些堂量的基本检测。
func TestConsts(t *testing.T) {
	a := assert.New(t)

	a.True(is.URL(RepoURL))
	a.True(is.URL(OfficialURL))

	a.True(version.SemVerValid(Version))
}
Beispiel #3
0
// 对一些堂量的基本检测。
func TestConsts(t *testing.T) {
	a := assert.New(t)

	a.True(version.SemVerValid(Version))
	a.True(len(Name) > 0)
	a.True(is.URL(RepoURL))
	a.True(is.URL(OfficialURL))
	a.True(len(ConfigFilename) > 0).True(strings.IndexAny(ConfigFilename, "/\\") < 0)
	a.True(len(DefaultTitle) > 0)
	a.True(len(DefaultGroupName) > 0).True(strings.IndexAny(DefaultGroupName, "/\\") < 0)
	a.True(len(Profile) > 0).True(strings.IndexAny(Profile, "/\\") < 0)

	tag, err := language.Parse(DefaultLocale)
	a.NotError(err).NotEqual(tag, language.Und)
}
Beispiel #4
0
// 加载 path 所指的文件内容到 *config 实例。
func loadConfig(path string) (*config, error) {
	data, err := ioutil.ReadFile(path)
	if err != nil {
		return nil, err
	}

	cfg := &config{}
	if err = json.Unmarshal(data, cfg); err != nil {
		return nil, err
	}

	if !version.SemVerValid(cfg.Version) {
		return nil, &app.OptionsError{Field: "version", Message: "格式不正确"}
	}

	if len(cfg.Inputs) == 0 {
		return nil, &app.OptionsError{Field: "inputs", Message: "不能为空"}
	}

	if cfg.Output == nil {
		return nil, &app.OptionsError{Field: "output", Message: "不能为空"}
	}

	l := log.New(&syntaxWriter{}, "", 0)
	for i, opt := range cfg.Inputs {
		index := strconv.Itoa(i)
		if err := opt.Init(); err != nil {
			err.Field = "inputs[" + index + "]." + err.Field
			return nil, err
		}
		opt.SyntaxLog = l
	}

	if err := cfg.Output.Init(); err != nil {
		err.Field = "outputs." + err.Field
		return nil, err
	}

	return cfg, nil
}