app-manager: support triggers
diff --git a/appmanager/triggers.go b/appmanager/triggers.go
new file mode 100644
index 0000000..3eb88d9
--- /dev/null
+++ b/appmanager/triggers.go
@@ -0,0 +1,45 @@
+package appmanager
+
+import (
+	"io/ioutil"
+	"os"
+
+	"gopkg.in/yaml.v2"
+)
+
+type TriggerOn struct {
+	Type  string `yaml:"type"`
+	Event string `yaml:"event"`
+}
+
+type Trigger struct {
+	Name      string    `yaml:"name"`
+	TriggerOn TriggerOn `yaml:"triggerOn"`
+	Template  string    `yaml:"template"`
+}
+
+type Triggers struct {
+	Triggers []Trigger `yaml:"triggers"`
+}
+
+func TriggersFromYaml(str string) (*Triggers, error) {
+	var s Triggers
+	err := yaml.Unmarshal([]byte(str), &s)
+	if err != nil {
+		return nil, err
+	}
+	return &s, nil
+}
+
+func ReadTriggers(actionsFile string) (*Triggers, error) {
+	f, err := os.Open(actionsFile)
+	if err != nil {
+		return nil, err
+	}
+	defer f.Close()
+	b, err := ioutil.ReadAll(f)
+	if err != nil {
+		return nil, err
+	}
+	return TriggersFromYaml(string(b))
+}