diff --git a/cmd/actionExecute.go b/cmd/actionExecute.go index 4dd6ef8..c76ef16 100644 --- a/cmd/actionExecute.go +++ b/cmd/actionExecute.go @@ -86,6 +86,11 @@ func actionExecute( log.Fatalf("error: failed to load state for %s: %v", source, err) } + envs, err := core.GetEnvs(db, source) + if err != nil { + log.Fatalf("error: failed to get envs for %s: %v", source, err) + } + item, err := core.GetItem(db, source, itemId) if err != nil { log.Fatalf("error: failed to get item: %v", err) @@ -104,7 +109,7 @@ func actionExecute( log.Fatalf("error: failed to get action: %v", err) } - newItem, newState, err := core.ExecuteItemAction(item, argv, nil, state, time.Minute) + newItem, newState, err := core.ExecuteItemAction(item, argv, envs, state, time.Minute) if err != nil { log.Fatalf("error executing %s: %v", action, err) } diff --git a/cmd/sourceFetch.go b/cmd/sourceFetch.go index 567bdf6..4a199c7 100644 --- a/cmd/sourceFetch.go +++ b/cmd/sourceFetch.go @@ -48,12 +48,17 @@ func sourceFetch(source string, format string, dryRun bool) { log.Fatalf("error: failed to load state for %s: %v", source, err) } + envs, err := core.GetEnvs(db, source) + if err != nil { + log.Fatalf("error: failed to get envs for %s: %v", source, err) + } + argv, err := core.GetArgvForAction(db, source, "fetch") if err != nil { log.Fatalf("error: failed to get fetch action: %v", err) } - items, newState, err := core.Execute(source, argv, nil, state, "", time.Minute) + items, newState, err := core.Execute(source, argv, envs, state, "", time.Minute) if err != nil { log.Fatalf("error: failed to execute fetch: %v", err) } diff --git a/core/source.go b/core/source.go index de97c99..b212a31 100644 --- a/core/source.go +++ b/core/source.go @@ -290,14 +290,19 @@ func UpdateWithFetchedItems(db *DB, source string, state []byte, items []Item) ( return 0, 0, err } + envs, err := GetEnvs(db, source) + if err != nil { + return 0, 0, fmt.Errorf("failed to get envs for %s: %v", source, err) + } + // If the source has an on-create trigger, run it for each new item // On-create errors are ignored to avoid failing the fetch onCreateArgv, err := GetArgvForAction(db, source, "on_create") - if err == nil { + if err == nil && len(onCreateArgv) > 0 { var updatedNewItems []Item for _, item := range newItems { var updatedItem Item - updatedItem, state, err = ExecuteItemAction(item, onCreateArgv, nil, state, time.Minute) + updatedItem, state, err = ExecuteItemAction(item, onCreateArgv, envs, state, time.Minute) if err != nil { log.Printf("error: on_create failed for %s/%s: %v", item.Source, item.Id, err) } diff --git a/web/item.go b/web/item.go index a05efd3..c58a9e2 100644 --- a/web/item.go +++ b/web/item.go @@ -49,6 +49,11 @@ func (env *Env) doAction(writer http.ResponseWriter, req *http.Request) { log.Fatalf("error: failed to load state for %s: %v", source, err) } + envs, err := core.GetEnvs(env.db, source) + if err != nil { + log.Fatalf("error: failed to get envs for %s: %v", source, err) + } + item, err := core.GetItem(env.db, source, id) if err != nil { http.Error(writer, err.Error(), 500) @@ -66,7 +71,7 @@ func (env *Env) doAction(writer http.ResponseWriter, req *http.Request) { return } - newItem, newState, err := core.ExecuteItemAction(item, argv, nil, state, time.Minute) + newItem, newState, err := core.ExecuteItemAction(item, argv, envs, state, time.Minute) if err != nil { http.Error(writer, err.Error(), 500) return