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 }