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))
+}