mirror of https://github.com/databricks/cli.git
58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package init
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/databricks/bricks/cmd/prompt"
|
|
"github.com/databricks/bricks/project"
|
|
"github.com/mitchellh/go-homedir"
|
|
"gopkg.in/ini.v1"
|
|
)
|
|
|
|
func loadCliProfiles() (profiles []prompt.Answer, err error) {
|
|
file, err := homedir.Expand("~/.databrickscfg")
|
|
if err != nil {
|
|
return
|
|
}
|
|
gitConfig, err := ini.Load(file)
|
|
if err != nil {
|
|
return
|
|
}
|
|
for _, v := range gitConfig.Sections() {
|
|
host, err := v.GetKey("host")
|
|
if err != nil {
|
|
// invalid profile
|
|
continue
|
|
}
|
|
// TODO: verify these tokens to work, becaus they may be expired
|
|
profiles = append(profiles, prompt.Answer{
|
|
Value: v.Name(),
|
|
Details: fmt.Sprintf(`Connecting to "%s" workspace`, host),
|
|
Callback: func(ans prompt.Answer, config *project.Config, _ prompt.Results) {
|
|
if config.Environments == nil {
|
|
config.Environments = make(map[string]project.Environment)
|
|
}
|
|
config.Environments[project.DefaultEnvironment] = project.Environment{
|
|
Workspace: project.Workspace{
|
|
Profile: ans.Value,
|
|
},
|
|
}
|
|
},
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
func getConnectionProfile() (*prompt.Choice, error) {
|
|
profiles, err := loadCliProfiles()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
// TODO: propmt for password and create ~/.databrickscfg
|
|
return &prompt.Choice{
|
|
Key: "profile",
|
|
Label: "Databricks CLI profile",
|
|
Answers: profiles,
|
|
}, err
|
|
}
|