|
|
@ -4,39 +4,58 @@ import ( |
|
|
|
"fmt" |
|
|
|
"fmt" |
|
|
|
"os" |
|
|
|
"os" |
|
|
|
"os/exec" |
|
|
|
"os/exec" |
|
|
|
|
|
|
|
"sync" |
|
|
|
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
|
|
|
"github.com/gen2brain/beeep" |
|
|
|
"github.com/gen2brain/beeep" |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
// Run will take the config file and for each task, run a go routine
|
|
|
|
// Run will take the config file and for each task, run a go routine
|
|
|
|
func TaskRun(c Config) { |
|
|
|
func TaskRun(c Config) { |
|
|
|
|
|
|
|
var wg sync.WaitGroup |
|
|
|
|
|
|
|
|
|
|
|
for i := range c.Tasks { |
|
|
|
for i := range c.Tasks { |
|
|
|
title := c.Tasks[i].TaskName |
|
|
|
title := c.Tasks[i].TaskName |
|
|
|
desc := c.Tasks[i].TaskDesc |
|
|
|
interval := c.Tasks[i].Interval |
|
|
|
err := beeep.Notify(title, desc, "") |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
var desc string |
|
|
|
fmt.Fprintf(os.Stderr, "ERROR: could not display \"%s\":\n\t%s\n", title, err) |
|
|
|
// check if desc is empty and use the cmd output, if not just get the desc
|
|
|
|
|
|
|
|
if c.Tasks[i].TaskDesc == "" { |
|
|
|
|
|
|
|
desc = TaskCMD(c.Tasks[i]) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
desc = c.Tasks[i].TaskDesc |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
asset := c.Tasks[i].Icon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//run the commands with go func()!
|
|
|
|
|
|
|
|
wg.Add(1) |
|
|
|
|
|
|
|
go func() { |
|
|
|
|
|
|
|
fmt.Printf("%s has time interval %d\n", title, interval) |
|
|
|
|
|
|
|
for range time.Tick(time.Second * interval) { |
|
|
|
|
|
|
|
err := beeep.Notify(title, desc, asset) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
fmt.Fprintf(os.Stderr, "ERROR: could not display \"%s\":\n\t%s\n", title, err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wg.Done() |
|
|
|
|
|
|
|
}() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
wg.Wait() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// TaskCMD will take the config struct and run all the "CMD" fields with "bash -c [command]" and return the output
|
|
|
|
// TaskCMD will take in a Task, run the command with bash and return the string output
|
|
|
|
func TaskCMD(c Config) (output string) { |
|
|
|
func TaskCMD(t Task) (output string) { |
|
|
|
for i := range c.Tasks { |
|
|
|
command := t.CMD |
|
|
|
command := c.Tasks[i].CMD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if command == " " { |
|
|
|
if command == " " { |
|
|
|
fmt.Printf("INFO: Task %s has the cmd section empty. Will just return...\n", c.Tasks[i].TaskName) |
|
|
|
fmt.Printf("INFO: Task %s has the cmd section empty. Will just return...\n", t.TaskName) |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
out, err := exec.Command("bash", "-c", command).Output() |
|
|
|
out, err := exec.Command("bash", "-c", command).Output() |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
fmt.Fprintf(os.Stderr, "ERROR: could not run command \"%s\":\n\t%s\n", command, err) |
|
|
|
fmt.Fprintf(os.Stderr, "ERROR: could not run command \"%s\":\n\t%s\n", command, err) |
|
|
|
} |
|
|
|
|
|
|
|
//fmt.Printf("Output:\n%s\n", out)
|
|
|
|
|
|
|
|
return string(out) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
return |
|
|
|
return string(out) |
|
|
|
} |
|
|
|
} |
|
|
|