tasks now run in goroutines
This commit is contained in:
		
							parent
							
								
									acff443905
								
							
						
					
					
						commit
						84ab0bf369
					
				
							
								
								
									
										63
									
								
								run.go
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								run.go
									
									
									
									
									
								
							| @ -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 { |  | ||||||
| 			fmt.Fprintf(os.Stderr, "ERROR: could not display \"%s\":\n\t%s\n", title, err) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
|  | 		var desc string | ||||||
|  | 		// 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() |  | ||||||
| 		if err != nil { |  | ||||||
| 			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 | 
 | ||||||
|  | 	out, err := exec.Command("bash", "-c", command).Output() | ||||||
|  | 	if err != nil { | ||||||
|  | 		fmt.Fprintf(os.Stderr, "ERROR: could not run command \"%s\":\n\t%s\n", command, err) | ||||||
|  | 	} | ||||||
|  | 	return string(out) | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user