From a401caa001d7993fbc719d616e63b7e3d1bdcac1 Mon Sep 17 00:00:00 2001 From: bjk Date: Mon, 18 Sep 2023 20:31:05 +0000 Subject: [PATCH 1/3] feat: use environment variables for init if they exist --- internal/fleek/config.go | 161 ++++++++++++++++++++++----------------- 1 file changed, 90 insertions(+), 71 deletions(-) diff --git a/internal/fleek/config.go b/internal/fleek/config.go index 53c6d099..7004b083 100644 --- a/internal/fleek/config.go +++ b/internal/fleek/config.go @@ -123,31 +123,38 @@ func NewSystem() (*System, error) { func NewUser() (*User, error) { fin.Info.Println("Enter User Details for Git Configuration:") user := &User{} - name, err := Name() - if err != nil { - return user, err - } - // Prompt for name var use bool - name = strings.TrimSpace(name) - if name != "" { - fin.Info.Println("Detected your name: " + name) - use, err = ux.Confirm("Use detected name: " + name) + envname := os.Getenv("FLEEK_USER_NAME") + if envname == "" { + name, err := Name() if err != nil { return user, err } - } - if use { - user.Name = name - } else { - prompt := "Name" - iname, err := ux.Input(prompt, name, "Your Name") - if err != nil { - return user, err + // Prompt for name + name = strings.TrimSpace(name) + if name != "" { + + fin.Info.Println("Detected your name: " + name) + use, err = ux.Confirm("Use detected name: " + name) + if err != nil { + return user, err + } } - user.Name = iname + if use { + user.Name = name + } else { + prompt := "Name" + iname, err := ux.Input(prompt, name, "Your Name") + if err != nil { + return user, err + } + user.Name = iname + } + } else { + user.Name = envname } + // It doesn't make sense to change the username, // so just use the detected one uname, err := Username() @@ -156,75 +163,87 @@ func NewUser() (*User, error) { } user.Username = uname - // email + envmail := os.Getenv("FLEEK_USER_EMAIL") + if envmail == "" { + // email - cmd := "git" - cmdLine := []string{"config", "--global", "user.email"} - command := exec.Command(cmd, cmdLine...) - command.Stdin = os.Stdin + cmd := "git" + cmdLine := []string{"config", "--global", "user.email"} + command := exec.Command(cmd, cmdLine...) + command.Stdin = os.Stdin - command.Env = os.Environ() - var email string - bb, err := command.Output() - if err != nil { - // get the email manually - prompt := "Email" - email, err = ux.Input(prompt, "", "Your Email Address") + command.Env = os.Environ() + var email string + bb, err := command.Output() if err != nil { - return user, err - } - user.Email = email - } else { - email = strings.TrimSpace(string(bb)) - use, err = ux.Confirm("Use detected email: " + email) - if err != nil { - return user, err - } - if use { + // get the email manually + prompt := "Email" + email, err = ux.Input(prompt, "", "Your Email Address") + if err != nil { + return user, err + } user.Email = email } else { - prompt := "Email" - uemail, err := ux.Input(prompt, "", "Your Email Address") + email = strings.TrimSpace(string(bb)) + use, err = ux.Confirm("Use detected email: " + email) if err != nil { return user, err } - user.Email = uemail + if use { + user.Email = email + } else { + prompt := "Email" + uemail, err := ux.Input(prompt, "", "Your Email Address") + if err != nil { + return user, err + } + user.Email = uemail + } } + } else { + user.Email = envmail } + envpubkey := os.Getenv("FLEEK_USER_PUBKEY") + envprivkey := os.Getenv("FLEEK_USER_PRIVKEY") + if envpubkey == "" && envpubkey == "" { - // ssh keys - privateKey := "" - publicKey := "" + // ssh keys + privateKey := "" + publicKey := "" - // find and add ssh keys - sshDir := filepath.Join(os.Getenv("HOME"), ".ssh") - sshFiles, err := os.ReadDir(sshDir) - hasSSH := true - if err != nil { - if errors.Is(err, fs.ErrNotExist) { - hasSSH = false - } else { - return user, err - } - } - if hasSSH { - candidates := []string{} - for _, f := range sshFiles { - if strings.HasSuffix(f.Name(), ".pub") { - candidates = append(candidates, f.Name()) + // find and add ssh keys + sshDir := filepath.Join(os.Getenv("HOME"), ".ssh") + sshFiles, err := os.ReadDir(sshDir) + hasSSH := true + if err != nil { + if errors.Is(err, fs.ErrNotExist) { + hasSSH = false + } else { + return user, err } } - if len(candidates) > 0 { - key, err := ux.PromptSingle("Choose Git SSH Key", candidates) - if err != nil { - return user, err + if hasSSH { + candidates := []string{} + for _, f := range sshFiles { + if strings.HasSuffix(f.Name(), ".pub") { + candidates = append(candidates, f.Name()) + } + } + if len(candidates) > 0 { + key, err := ux.PromptSingle("Choose Git SSH Key", candidates) + if err != nil { + return user, err + } + privateKey = strings.Replace(key, ".pub", "", 1) + privateKey = filepath.Join("~", ".ssh", privateKey) + publicKey = filepath.Join("~", ".ssh", key) + user.SSHPrivateKeyFile = privateKey + user.SSHPublicKeyFile = publicKey } - privateKey = strings.Replace(key, ".pub", "", 1) - privateKey = filepath.Join("~", ".ssh", privateKey) - publicKey = filepath.Join("~", ".ssh", key) - user.SSHPrivateKeyFile = privateKey - user.SSHPublicKeyFile = publicKey } + } else { + user.SSHPrivateKeyFile = envprivkey + user.SSHPublicKeyFile = envpubkey } return user, nil From 689e5c6bcc6957d0f665b8864b0d1cc3d7083ae4 Mon Sep 17 00:00:00 2001 From: bjk Date: Mon, 18 Sep 2023 20:35:48 +0000 Subject: [PATCH 2/3] feat: use environment variables for init if they exist --- internal/fleek/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/fleek/config.go b/internal/fleek/config.go index 7004b083..b6e85c85 100644 --- a/internal/fleek/config.go +++ b/internal/fleek/config.go @@ -205,7 +205,7 @@ func NewUser() (*User, error) { } envpubkey := os.Getenv("FLEEK_USER_PUBKEY") envprivkey := os.Getenv("FLEEK_USER_PRIVKEY") - if envpubkey == "" && envpubkey == "" { + if (envpubkey == "") && (envpubkey == "") { // ssh keys privateKey := "" From a6b3c0f1c3160087428113f5e7e537a4bcc07255 Mon Sep 17 00:00:00 2001 From: bjk Date: Tue, 19 Sep 2023 01:31:06 +0000 Subject: [PATCH 3/3] fix: typo --- internal/fleek/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/fleek/config.go b/internal/fleek/config.go index b6e85c85..d6b07248 100644 --- a/internal/fleek/config.go +++ b/internal/fleek/config.go @@ -205,7 +205,7 @@ func NewUser() (*User, error) { } envpubkey := os.Getenv("FLEEK_USER_PUBKEY") envprivkey := os.Getenv("FLEEK_USER_PRIVKEY") - if (envpubkey == "") && (envpubkey == "") { + if (envpubkey == "") && (envprivkey == "") { // ssh keys privateKey := ""