5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 23:39:21 +08:00
wails/v3/internal/commands/task.go
2023-01-22 15:39:57 +11:00

70 lines
1.4 KiB
Go

package commands
import (
"context"
"fmt"
"github.com/pterm/pterm"
"github.com/go-task/task/v3"
"github.com/go-task/task/v3/taskfile"
)
type RunTaskOptions struct {
Name string `name:"n" description:"The name of the task to run"`
}
func RunTask(options *RunTaskOptions) error {
if options.Name == "" {
return fmt.Errorf("name of task required")
}
e := task.Executor{}
err := e.Setup()
if err != nil {
return err
}
build := taskfile.Call{
Task: options.Name,
Vars: nil,
}
return e.Run(context.Background(), build)
}
type ListTaskOptions struct {
}
func ListTasks(options *ListTaskOptions) error {
e := task.Executor{}
if err := e.Setup(); err != nil {
return err
}
tasks, err := e.GetTaskList()
if err != nil {
return err
}
if len(tasks) == 0 {
return fmt.Errorf("no tasks found. Ensure there is a `Taskfile.tmpl.yml` in your project. You can generate a default takfile by running `wails generate defaults`")
}
tableData := [][]string{
{"Task", "Summary"},
}
println()
for _, thisTask := range tasks {
if thisTask.Internal {
continue
}
var thisRow = make([]string, 2)
thisRow[0] = thisTask.Task
thisRow[1] = thisTask.Summary
tableData = append(tableData, thisRow)
}
err = pterm.DefaultTable.WithHasHeader(true).WithHeaderRowSeparator("-").WithData(tableData).Render()
if err != nil {
return err
}
println()
return nil
}