github.com/rafflecopter/deis@v1.12.2/client/cmd/utils.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strings"
     7  	"time"
     8  
     9  	"github.com/deis/deis/client/controller/client"
    10  	"github.com/deis/deis/client/pkg/git"
    11  )
    12  
    13  var defaultLimit = -1
    14  
    15  func progress() chan bool {
    16  	frames := []string{"...", "o..", ".o.", "..o"}
    17  	backspaces := strings.Repeat("\b", 3)
    18  	tick := time.Tick(400 * time.Millisecond)
    19  	quit := make(chan bool)
    20  	go func() {
    21  		for {
    22  			for _, frame := range frames {
    23  				fmt.Print(frame)
    24  				select {
    25  				case <-quit:
    26  					fmt.Print(backspaces)
    27  					close(quit)
    28  					return
    29  				case <-tick:
    30  					fmt.Print(backspaces)
    31  				}
    32  			}
    33  		}
    34  	}()
    35  	return quit
    36  }
    37  
    38  // Choose an ANSI color by converting a string to an int.
    39  func chooseColor(input string) string {
    40  	var sum uint8
    41  
    42  	for _, char := range []byte(input) {
    43  		sum += uint8(char)
    44  	}
    45  
    46  	// Seven possible terminal colors
    47  	color := (sum % 7) + 1
    48  
    49  	if color == 7 {
    50  		color = 9
    51  	}
    52  
    53  	return fmt.Sprintf("\033[3%dm", color)
    54  }
    55  
    56  func load(appID string) (*client.Client, string, error) {
    57  	c, err := client.New()
    58  
    59  	if err != nil {
    60  		return nil, "", err
    61  	}
    62  
    63  	if appID == "" {
    64  		appID, err = git.DetectAppName(c.ControllerURL.Host)
    65  
    66  		if err != nil {
    67  			return nil, "", err
    68  		}
    69  	}
    70  
    71  	return c, appID, nil
    72  }
    73  
    74  func drinkOfChoice() string {
    75  	drink := os.Getenv("DEIS_DRINK_OF_CHOICE")
    76  
    77  	if drink == "" {
    78  		drink = "coffee"
    79  	}
    80  
    81  	return drink
    82  }
    83  
    84  func limitCount(objs, total int) string {
    85  	if objs == total {
    86  		return "\n"
    87  	}
    88  
    89  	return fmt.Sprintf(" (%d of %d)\n", objs, total)
    90  }