diff --git a/pkg/cmd/config/init/init.go b/pkg/cmd/config/init/init.go index bd57b133..79de4089 100644 --- a/pkg/cmd/config/init/init.go +++ b/pkg/cmd/config/init/init.go @@ -40,56 +40,13 @@ func NewCmdInit(f cmdutil.Factory) *cobra.Command { return err } - ws, err := c.GetWorkspaces(api.GetWorkspaces{}) - if err != nil { + if err := setWorkspace(c, config, i); err != nil { return err } - dWorkspace := "" - wsString := make([]string, len(ws)) - for i := range ws { - wsString[i] = fmt.Sprintf("%s - %s", ws[i].ID, ws[i].Name) - - if ws[i].ID == config.GetString(cmdutil.CONF_WORKSPACE) { - dWorkspace = wsString[i] - } - } - - w := "" - if w, err = i.AskFromOptions("Choose default Workspace:", - wsString, dWorkspace); err != nil { + if err := setUser(c, config, i); err != nil { return err } - config.SetString(cmdutil.CONF_WORKSPACE, - strings.TrimSpace(w[0:strings.Index(w, " - ")])) - - users, err := c.WorkspaceUsers(api.WorkspaceUsersParam{ - Workspace: config.GetString(cmdutil.CONF_WORKSPACE), - PaginationParam: api.AllPages(), - }) - - if err != nil { - return err - } - - userId := config.GetString(cmdutil.CONF_USER_ID) - dUser := "" - usersString := make([]string, len(users)) - for i := range users { - usersString[i] = fmt.Sprintf("%s - %s", users[i].ID, users[i].Name) - - if users[i].ID == userId { - dUser = usersString[i] - } - } - - userID := "" - if userID, err = i.AskFromOptions( - "Choose your user:", usersString, dUser); err != nil { - return err - } - config.SetString(cmdutil.CONF_USER_ID, - strings.TrimSpace(userID[0:strings.Index(userID, " - ")])) if err := updateFlag(i, config, cmdutil.CONF_ALLOW_NAME_FOR_ID, "Should try to find projects/clients/users/tasks/tags by their names?", @@ -217,6 +174,64 @@ func NewCmdInit(f cmdutil.Factory) *cobra.Command { return cmd } +func setUser(c api.Client, config cmdutil.Config, i ui.UI) error { + users, err := c.WorkspaceUsers(api.WorkspaceUsersParam{ + Workspace: config.GetString(cmdutil.CONF_WORKSPACE), + PaginationParam: api.AllPages(), + }) + + if err != nil { + return err + } + + userId := config.GetString(cmdutil.CONF_USER_ID) + dUser := "" + usersString := make([]string, len(users)) + for i := range users { + usersString[i] = fmt.Sprintf("%s - %s", users[i].ID, users[i].Name) + + if users[i].ID == userId { + dUser = usersString[i] + } + } + + userID := "" + if userID, err = i.AskFromOptions( + "Choose your user:", usersString, dUser); err != nil { + return err + } + + config.SetString(cmdutil.CONF_USER_ID, + strings.TrimSpace(userID[0:strings.Index(userID, " - ")])) + return nil +} + +func setWorkspace(c api.Client, config cmdutil.Config, i ui.UI) error { + ws, err := c.GetWorkspaces(api.GetWorkspaces{}) + if err != nil { + return err + } + + dWorkspace := "" + wsString := make([]string, len(ws)) + for i := range ws { + wsString[i] = fmt.Sprintf("%s - %s", ws[i].ID, ws[i].Name) + + if ws[i].ID == config.GetString(cmdutil.CONF_WORKSPACE) { + dWorkspace = wsString[i] + } + } + + w := "" + if w, err = i.AskFromOptions("Choose default Workspace:", + wsString, dWorkspace); err != nil { + return err + } + config.SetString(cmdutil.CONF_WORKSPACE, + strings.TrimSpace(w[0:strings.Index(w, " - ")])) + return err +} + func updateInt(ui ui.UI, config cmdutil.Config, param, desc string) error { value := config.GetInt(param) value, err := ui.AskForInt(desc, value)