github.com/jfrog/jfrog-cli-go@v1.22.1-0.20200318093948-4826ef344ffd/bintray/commands/config.go (about)

     1  package commands
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-go/utils/config"
     5  	"github.com/jfrog/jfrog-cli-go/utils/ioutils"
     6  	"github.com/jfrog/jfrog-cli-go/utils/lock"
     7  	"github.com/jfrog/jfrog-client-go/utils/errorutils"
     8  	"github.com/jfrog/jfrog-client-go/utils/log"
     9  	"golang.org/x/crypto/ssh/terminal"
    10  	"sync"
    11  	"syscall"
    12  )
    13  
    14  // Internal golang locking for the same process.
    15  var mutex sync.Mutex
    16  
    17  func Config(details, defaultDetails *config.BintrayDetails, interactive bool) (*config.BintrayDetails, error) {
    18  	mutex.Lock()
    19  	lockFile, err := lock.CreateLock()
    20  	defer mutex.Unlock()
    21  	defer lockFile.Unlock()
    22  
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  
    27  	if details == nil {
    28  		details = new(config.BintrayDetails)
    29  	}
    30  	if interactive {
    31  		if defaultDetails == nil {
    32  			var err error
    33  			defaultDetails, err = config.ReadBintrayConf()
    34  			if err != nil {
    35  				return nil, err
    36  			}
    37  		}
    38  		if details.User == "" {
    39  			ioutils.ScanFromConsole("User", &details.User, defaultDetails.User)
    40  		}
    41  		if details.Key == "" {
    42  			print("Key: ")
    43  			byteKey, err := terminal.ReadPassword(int(syscall.Stdin))
    44  			err = errorutils.CheckError(err)
    45  			if err != nil {
    46  				return nil, err
    47  			}
    48  			details.Key = string(byteKey)
    49  			if details.Key == "" {
    50  				details.Key = defaultDetails.Key
    51  			}
    52  		}
    53  		if details.DefPackageLicense == "" {
    54  			ioutils.ScanFromConsole("\nDefault package licenses",
    55  				&details.DefPackageLicense, defaultDetails.DefPackageLicense)
    56  		}
    57  	}
    58  	err = config.SaveBintrayConf(details)
    59  	return details, err
    60  }
    61  
    62  func ShowConfig() error {
    63  	details, err := config.ReadBintrayConf()
    64  	if err != nil {
    65  		return err
    66  	}
    67  	if details.User != "" {
    68  		log.Output("User: " + details.User)
    69  	}
    70  	if details.Key != "" {
    71  		log.Output("Key: ***")
    72  	}
    73  	if details.DefPackageLicense != "" {
    74  		log.Output("Default package license: " + details.DefPackageLicense)
    75  	}
    76  	return nil
    77  }
    78  
    79  func ClearConfig() {
    80  	config.SaveBintrayConf(new(config.BintrayDetails))
    81  }
    82  
    83  func GetConfig() (*config.BintrayDetails, error) {
    84  	return config.ReadBintrayConf()
    85  }