Exemplo n.º 1
0
func jobGet(c *manager.Client, job string, flags parsedFlags) error {
	if job == "" {
		return errUnexpectedArgCount("1", 0)
	}

	out, err := c.GetJob(job)
	if err != nil {
		return err
	}

	// if streaming logs then we just print a short job info followed by the
	// log stream
	if flags.streamLogs {
		if err := printTemplate(out, shortJobTemplate, &jobInfo{}); err != nil {
			return err
		}
		logs, err := c.StreamLogs(job)
		if err != nil {
			return err
		}
		defer logs.Close()
		log := make([]byte, 128)
		for {
			n, err := logs.Read(log)
			if n > 0 {
				fmt.Printf("%s", log[:n])
			}
			if err != nil {
				break
			}
		}
		return nil
	}

	if !flags.jsonOutput {
		return printTemplate(out, jobTemplate, &jobInfo{})
	}

	return ppJSON(out)
}