...

Source file src/edge-infra.dev/third_party/gke-iap/helpers.go

Documentation: edge-infra.dev/third_party/gke-iap

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"os"
     7  	"os/exec"
     8  )
     9  
    10  func CheckPackagesInstalled(pkgs []string) {
    11  	ok := true
    12  
    13  	for _, pkg := range pkgs {
    14  		if !IsCommandAvailable(pkg) {
    15  			fmt.Fprintf(os.Stderr, "%q: executable file not found in PATH", pkg)
    16  		}
    17  	}
    18  
    19  	if !ok {
    20  		os.Exit(1)
    21  	}
    22  }
    23  
    24  func IsCommandAvailable(name string) bool {
    25  	_, err := exec.LookPath(name)
    26  	if err != nil {
    27  		return false
    28  	}
    29  	return true
    30  }
    31  
    32  func Exec(command string, args []string, msg string) (string, error) {
    33  	var stdout, stderr bytes.Buffer
    34  
    35  	cmd := exec.Command(command, args...)
    36  	cmd.Stdout = &stdout
    37  	cmd.Stderr = &stderr
    38  
    39  	if msg != "" {
    40  		fmt.Printf(msg)
    41  	}
    42  
    43  	fmt.Printf("running: " + cmd.String() + "\n")
    44  	
    45  	if err := cmd.Run(); err != nil {
    46  		return "", ConcatenateError(err, stderr.String())
    47  	}
    48  
    49  	return stdout.String(), nil
    50  }
    51  
    52  func ConcatenateError(err error, stderr string) error {
    53  	if len(stderr) == 0 {
    54  		return err
    55  	}
    56  	return fmt.Errorf("%w - %s", err, stderr)
    57  }
    58  

View as plain text