From 7d65a623291221f097af12bfd3c2994550d776f6 Mon Sep 17 00:00:00 2001 From: siddharth Date: Sun, 28 Nov 2021 21:55:26 -0500 Subject: fern: flush out main --- fern.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/fern.go b/fern.go index 25fa8c9..4908483 100644 --- a/fern.go +++ b/fern.go @@ -3,4 +3,58 @@ package main -func main() {} +import ( + "fmt" + "os" + + "ricketyspace.net/fern/config" + "ricketyspace.net/fern/db" + "ricketyspace.net/fern/state" +) + +var fConf *config.FernConfig +var pState *state.ProcessState + +func init() { + var err error + + fConf, err = config.Read() + if err != nil { + fmt.Printf("Error: %v\n", err.Error()) + os.Exit(1) + } + + pState = state.NewProcessState() + pState.YDLPath = fConf.YDLPath + pState.DumpDir = fConf.DumpDir + + // Open database. + pState.DB, err = db.Open() + if err != nil { + fmt.Printf("Error: %v\n", err.Error()) + os.Exit(1) + } +} + +func main() { + defer pState.DB.Write() // Write database to disk before returning. + + // Process all feeds. + for _, feed := range fConf.Feeds { + f := feed + go f.Process(pState) + pState.FeedsProcessing += 1 + } + // Wait for all feeds finish processing. + for pState.FeedsProcessing > 0 { + fr := <-pState.FeedResultChan + if fr.Err == nil { + fmt.Printf("[%s]: %s\n", + fr.FeedId, fr.FeedResult) + } else { + fmt.Printf("[%s]: %s: %v\n", + fr.FeedId, fr.FeedResult, fr.Err.Error()) + } + pState.FeedsProcessing -= 1 + } +} -- cgit v1.2.3