Skip to content

Commit

Permalink
refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
ayakovlenko committed Jun 8, 2024
1 parent 86babc0 commit 9a4a013
Showing 1 changed file with 74 additions and 59 deletions.
133 changes: 74 additions & 59 deletions internal/identity/set_cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,96 +25,111 @@ var SetCmd = &cli.Command{
},
},
Action: func(cCtx *cli.Context) error {
gitClient := git.NewGitClient()

fs := afero.NewOsFs()

if err := gitutil.EnsureGitDir(gitClient); err != nil {
return err
}
dryRun := cCtx.Bool(dryRunFlag)

gitClient := git.NewGitClient()

userHomeDir, err := os.UserHomeDir()
if err != nil {
return err
return fmt.Errorf("cannot user home dir: %v", err)
}

confPath, err := config.LocateConfFile(
fs,
userHomeDir,
os.Getenv(config.EnvVarName),
)
if err != nil {
return err
}
configPathFromEnv := os.Getenv(config.EnvVarName)

conf, err := config.Load(confPath)
if err != nil {
return err
}
return setIdentityAction(fs, gitClient, userHomeDir, dryRun, configPathFromEnv)
},
}

host, err := gitutil.RemoteURL(gitClient, "origin")
if err != nil {
if _, ok := err.(*gitutil.ErrNoRemoteURL); ok {
fmt.Printf(`Error: %s
func setIdentityAction(
fs afero.Fs,
gitClient git.GitClient,
userHomeDir string,
dryRun bool,
configPathFromEnv string,
) error {
if err := gitutil.EnsureGitDir(gitClient); err != nil {
return err
}

confPath, err := config.LocateConfFile(
fs,
userHomeDir,
configPathFromEnv,
)
if err != nil {
return err
}

conf, err := config.Load(confPath)
if err != nil {
return err
}

host, err := gitutil.RemoteURL(gitClient, "origin")
if err != nil {
if _, ok := err.(*gitutil.ErrNoRemoteURL); ok {
fmt.Printf(`Error: %s
Add remote URL so that zit could use it for choosing the correct git identity as
defined in the configuration file:
git remote add origin <url>
git remote add origin <url>
`, err)
os.Exit(1)
} else {
return err
}
}

repo, err := gitutil.ExtractRepoInfo(host)
if err != nil {
os.Exit(1) // TODO: return "FriendlyError" instead of os.Exit
} else {
return err
}
}

hostConf, err := conf.Get(repo.Host)
if err != nil {
repo, err := gitutil.ExtractRepoInfo(host)
if err != nil {
return err
}

hostConf, err := conf.Get(repo.Host)
if err != nil {
return err
}

cred := findBestMatch(*hostConf, *repo)
if cred == nil {
return fmt.Errorf("cannot find a match for host %q", repo.Host)
}

if !dryRun {
if err := gitutil.SetConfig(gitClient, "--local", "user.name", cred.Name); err != nil {
return err
}

cred := findBestMatch(*hostConf, *repo)
if cred == nil {
return fmt.Errorf("cannot find a match for host %q", repo.Host)
if err := gitutil.SetConfig(gitClient, "--local", "user.email", cred.Email); err != nil {
return err
}

dryRun := cCtx.Bool(dryRunFlag)

if !dryRun {
if err := gitutil.SetConfig(gitClient, "--local", "user.name", cred.Name); err != nil {
if sign := cred.Signing; sign != nil {
if err := gitutil.SetConfig(gitClient, "--local", "commit.gpgsign", "true"); err != nil {
return err
}

if err := gitutil.SetConfig(gitClient, "--local", "user.email", cred.Email); err != nil {
if err := gitutil.SetConfig(gitClient, "--local", "user.signingKey", sign.Key); err != nil {
return err
}

if sign := cred.Signing; sign != nil {
if err := gitutil.SetConfig(gitClient, "--local", "commit.gpgsign", "true"); err != nil {
return err
}

if err := gitutil.SetConfig(gitClient, "--local", "user.signingKey", sign.Key); err != nil {
return err
}

if err := gitutil.SetConfig(gitClient, "--local", "gpg.format", sign.Format); err != nil {
return err
}
if err := gitutil.SetConfig(gitClient, "--local", "gpg.format", sign.Format); err != nil {
return err
}
}
}

if dryRun {
fmt.Printf("[dry-run] ")
}
if dryRun {
fmt.Printf("[dry-run]\n")
}

fmt.Printf("set user: %s <%s>\n", cred.Name, cred.Email)
fmt.Printf("set user: %s <%s>\n", cred.Name, cred.Email)
if sign := cred.Signing; sign != nil {
fmt.Printf("set signing key: %s key at %s\n", sign.Format, sign.Key)
}

return nil
},
return nil
}

0 comments on commit 9a4a013

Please sign in to comment.