2024-09-13 19:54:19 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
_ "embed"
|
|
|
|
|
"flag"
|
|
|
|
|
"fmt"
|
|
|
|
|
"os"
|
|
|
|
|
"os/exec"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
//go:embed Taskfile.yml
|
|
|
|
|
var taskFile string
|
|
|
|
|
|
|
|
|
|
func main() {
|
2024-09-13 20:02:11 +00:00
|
|
|
taskFlag := flag.String("task", "", "Specify the task to run (e.g., build, setup). Type -task list to see the list of tasks to run.")
|
2024-09-13 19:54:19 +00:00
|
|
|
|
|
|
|
|
// Parse the command-line flags
|
|
|
|
|
flag.Parse()
|
|
|
|
|
|
2024-09-13 20:42:42 +00:00
|
|
|
install := exec.Command("go", "install", "github.com/go-task/task/v3/cmd/task@latest")
|
|
|
|
|
install.Stdout = os.Stdout
|
|
|
|
|
install.Stderr = os.Stderr
|
|
|
|
|
err := install.Run()
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Printf("Error installing task: %v\n", err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-13 19:54:19 +00:00
|
|
|
temp, err := os.CreateTemp("", "Taskfile.yml")
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Printf("Error creating temporary file: %v\n", err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
os.WriteFile(temp.Name(), []byte(taskFile), 0644)
|
|
|
|
|
|
|
|
|
|
if *taskFlag == "" {
|
|
|
|
|
fmt.Println("Please specify a task to run using the -task flag")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-13 20:02:11 +00:00
|
|
|
if *taskFlag == "list" {
|
|
|
|
|
*taskFlag = "--list"
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-13 19:54:19 +00:00
|
|
|
// Define the command and arguments
|
|
|
|
|
cmd := exec.Command("task", "-t", temp.Name(), *taskFlag)
|
|
|
|
|
// Set the standard output and error to be the same as the Go program
|
|
|
|
|
cmd.Stdout = os.Stdout
|
|
|
|
|
cmd.Stderr = os.Stderr
|
|
|
|
|
// Run the command
|
|
|
|
|
err = cmd.Run()
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Printf("Error running task command: %v\n", err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|