github.com/mhlo/force@v0.22.28-0.20150915022417-6d05ecfb0b47/active.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"os/exec"
     7  	"runtime"
     8  	"sort"
     9  )
    10  
    11  var cmdActive = &Command{
    12  	Usage: "active [account]",
    13  	Short: "Show or set the active force.com account",
    14  	Long: `
    15  Set the active force.com account
    16  
    17  Examples:
    18  
    19    force active
    20    force active user@example.org
    21  `,
    22  }
    23  var (
    24  	tojson  bool
    25  	account string
    26  )
    27  
    28  func init() {
    29  	cmdActive.Flag.BoolVar(&tojson, "j", false, "output to json")
    30  	cmdActive.Flag.BoolVar(&tojson, "json", false, "output to json")
    31  	cmdActive.Flag.StringVar(&account, "a", "", "output to json")
    32  	cmdActive.Flag.StringVar(&account, "account", "", "output to json")
    33  	cmdActive.Run = runActive
    34  }
    35  
    36  func runActive(cmd *Command, args []string) {
    37  	if account == "" {
    38  		account, _ := Config.Load("current", "account")
    39  		data, _ := Config.Load("accounts", account)
    40  		var creds ForceCredentials
    41  		json.Unmarshal([]byte(data), &creds)
    42  		if tojson {
    43  			fmt.Printf(fmt.Sprintf("{ \"login\": \"%s\", \"instanceUrl\": \"%s\", \"namespace\":\"%s\" }", account, creds.InstanceUrl, creds.Namespace))
    44  		} else {
    45  			fmt.Println(fmt.Sprintf("%s - %s - ns:%s", account, creds.InstanceUrl, creds.Namespace))
    46  		}
    47  	} else {
    48  		//account := args[0]
    49  		accounts, _ := Config.List("accounts")
    50  		i := sort.SearchStrings(accounts, account)
    51  		if i < len(accounts) && accounts[i] == account {
    52  			if runtime.GOOS == "windows" {
    53  				cmd := exec.Command("title", account)
    54  				cmd.Run()
    55  			} else {
    56  				title := fmt.Sprintf("\033];%s\007", account)
    57  				fmt.Printf(title)
    58  			}
    59  			fmt.Printf("%s now active", account)
    60  			Config.Save("current", "account", account)
    61  		} else {
    62  			ErrorAndExit(fmt.Sprintf("no such account %s\n", account))
    63  		}
    64  	}
    65  }