github.com/sleungcy/cli@v7.1.0+incompatible/command/v7/tasks_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"strconv"
     5  	"time"
     6  
     7  	"code.cloudfoundry.org/cli/actor/v7action"
     8  	"code.cloudfoundry.org/cli/command/flag"
     9  	"code.cloudfoundry.org/cli/util/ui"
    10  )
    11  
    12  type TasksCommand struct {
    13  	BaseCommand
    14  
    15  	RequiredArgs    flag.AppName `positional-args:"yes"`
    16  	usage           interface{}  `usage:"CF_NAME tasks APP_NAME"`
    17  	relatedCommands interface{}  `related_commands:"apps, logs, run-task, terminate-task"`
    18  }
    19  
    20  func (cmd TasksCommand) Execute(args []string) error {
    21  	err := cmd.SharedActor.CheckTarget(true, true)
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	space := cmd.Config.TargetedSpace()
    27  
    28  	user, err := cmd.Config.CurrentUser()
    29  	if err != nil {
    30  		return err
    31  	}
    32  
    33  	application, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(cmd.RequiredArgs.AppName, space.GUID)
    34  	cmd.UI.DisplayWarnings(warnings)
    35  	if err != nil {
    36  		return err
    37  	}
    38  
    39  	cmd.UI.DisplayTextWithFlavor("Getting tasks for app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUser}}...", map[string]interface{}{
    40  		"AppName":     cmd.RequiredArgs.AppName,
    41  		"OrgName":     cmd.Config.TargetedOrganization().Name,
    42  		"SpaceName":   space.Name,
    43  		"CurrentUser": user.Name,
    44  	})
    45  	cmd.UI.DisplayNewline()
    46  
    47  	tasks, warnings, err := cmd.Actor.GetApplicationTasks(application.GUID, v7action.Descending)
    48  	cmd.UI.DisplayWarnings(warnings)
    49  	if err != nil {
    50  		return err
    51  	}
    52  
    53  	if len(tasks) == 0 {
    54  		cmd.UI.DisplayText("No tasks found for application.")
    55  		return nil
    56  	}
    57  
    58  	table := [][]string{
    59  		{
    60  			cmd.UI.TranslateText("id"),
    61  			cmd.UI.TranslateText("name"),
    62  			cmd.UI.TranslateText("state"),
    63  			cmd.UI.TranslateText("start time"),
    64  			cmd.UI.TranslateText("command"),
    65  		},
    66  	}
    67  	for _, task := range tasks {
    68  		t, err := time.Parse(time.RFC3339, task.CreatedAt)
    69  		if err != nil {
    70  			return err
    71  		}
    72  
    73  		if task.Command == "" {
    74  			task.Command = "[hidden]"
    75  		}
    76  
    77  		table = append(table, []string{
    78  			strconv.FormatInt(task.SequenceID, 10),
    79  			task.Name,
    80  			cmd.UI.TranslateText(string(task.State)),
    81  			t.Format(time.RFC1123),
    82  			task.Command,
    83  		})
    84  	}
    85  
    86  	cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding)
    87  
    88  	return nil
    89  }