Skip to content

Commit

Permalink
watcher.go
Browse files Browse the repository at this point in the history
  • Loading branch information
DenBeke committed Aug 26, 2017
1 parent 3b77c93 commit 17e75a4
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 71 deletions.
72 changes: 1 addition & 71 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package main

import (
"github.com/BurntSushi/toml"
"github.com/howeyc/fsnotify"
log "github.com/sirupsen/logrus"
"html/template"
"io/ioutil"
Expand Down Expand Up @@ -143,75 +142,6 @@ func main() {

k.GenerateAllPages()

// Watch for changes
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}

done := make(chan bool)

// Handle file change
go func() {
for {
select {
case event := <-watcher.Event:

if _, err := os.Stat(event.Name); os.IsNotExist(err) {
break
}

if strings.Contains(event.Name, ".go") {
// Skip Go files
break
}

log.Println("Detected change to:", event.Name)

if strings.Contains(event.Name, "assets") {
// Copy asset file
err = CopyFile(event.Name, "./generated/"+event.Name)
if err != nil {
log.Warnln("Couldn't update asset:", err)
}
break
}
if strings.Contains(event.Name, "pages") {
// Regenerate page
k.generatePage(event.Name)
break
}
if strings.Contains(event.Name, "config.toml") {
// Parse config again and regenerated all pages
err = k.ParseConfig()
if err == nil {
k.GenerateAllPages()
}
}
if strings.Contains(event.Name, "index.html") {
// Parse template again en regenerate all files
err = k.ParseTemplates()
if err == nil {
k.GenerateAllPages()
}
}

case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()

err = watcher.Watch("assets")
err = watcher.Watch("pages")
err = watcher.Watch("./")
if err != nil {
log.Warnln("Couldn't watch for changes:", err)
}

// Hang so program doesn't exit
<-done

watcher.Close()
k.WatchForChanges()

}
83 changes: 83 additions & 0 deletions watcher.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package main

import (
"github.com/howeyc/fsnotify"
log "github.com/sirupsen/logrus"
"os"
"strings"
)

func (k *Koekr) WatchForChanges() {
// Watch for changes
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}

done := make(chan bool)

// Handle file change
go func() {
for {
select {
case event := <-watcher.Event:

if _, err := os.Stat(event.Name); os.IsNotExist(err) {
break
}

if strings.Contains(event.Name, ".go") {
// Skip Go files
break
}

log.Println("Detected change to:", event.Name)

if strings.Contains(event.Name, "assets") {
// Copy asset file
err = CopyFile(event.Name, "./generated/"+event.Name)
if err != nil {
log.Warnln("Couldn't update asset:", err)
}
break
}
if strings.Contains(event.Name, "pages") {
// Regenerate page
k.generatePage(event.Name)
break
}
if strings.Contains(event.Name, "config.toml") {
// Parse config again and regenerated all pages
err = k.ParseConfig()
if err == nil {
k.GenerateAllPages()
}
}
if strings.Contains(event.Name, "index.html") {
// Parse template again en regenerate all files
err = k.ParseTemplates()
if err == nil {
k.GenerateAllPages()
}
}

case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()

err = watcher.Watch("assets")
err = watcher.Watch("pages")
err = watcher.Watch("./")
if err != nil {
log.Warnln("Couldn't watch for changes:", err)
} else {
log.Println("Watching for changes")
}

// Hang so program doesn't exit
<-done

watcher.Close()
}

0 comments on commit 17e75a4

Please # to comment.