예제 #1
0
파일: file.go 프로젝트: jfindley/automate
// Configure configures an instance of a module
func (f *File) Configure(in core.Input) error {
	err := in.Validate(schema)
	if err != nil {
		return err
	}

	if val, err := in.Data("path"); err != nil {
		return errors.New("Path is required")
	} else {
		f.path = val.(string)
	}

	if val, err := in.Data("mode"); err != nil {
		f.mode = os.FileMode(0644)
	} else {
		f.mode, err = fileMode(val)
		if err != nil {
			return errors.New("Unable to parse mode")
		}
	}

	if val, err := in.Data("action"); err != nil {
		f.action = f.touch
	} else {
		switch val.(string) {
		case "touch":
			f.action = f.touch

		case "remove":
			f.action = f.remove

		case "set":
			f.configureData(in)
			f.action = f.set

		default:
			return errors.New("Unable to parse action")
		}
	}

	return err
}
예제 #2
0
파일: file.go 프로젝트: jfindley/automate
func (f *File) configureData(in core.Input) {

	t, err := in.Type("content")
	if err != nil {
		return
	}

	if t == "pipe" {
		val, _ := in.Data("content")
		f.data = val.(io.Reader)
	}

	if t == "data" {
		val, _ := in.Data("content")
		f.sum = sum(val.([]byte))
		f.data = bytes.NewReader(val.([]byte))
	}
}