cmd

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var RootCmd = &cobra.Command{
	Use:   "easycommit",
	Short: "simple cli tool for generating commit using Ollama",
	Run: func(cmd *cobra.Command, args []string) {
		l := logger.Get()

		diff, err := exec.Command("git", "diff", "--cached", "--diff-algorithm=minimal").Output()
		if err != nil {
			fmt.Println("😔 git diff failed")
			l.Err(err).Send()
			return
		}

		if string(diff) == "" {
			fmt.Println("😔 no diff")
			return
		}

		var summary string
		var prompter llm.Prompter
		var resultCommits []string

		spinningProg := ui.NewSpinningProgram()
		go func() {
			prompter = llm.NewPrompter(endpoint,
				llm.LLMmodel(llmModel),
				llm.OllamaOptions{
					Temperature: &llmTemperature,
					NumPredict:  &llmNumPredict,
				})
			summary = prompter.GetSummary(string(diff), "")
			rawCommits := prompter.GetCommitMsg(summary, "")

			rawCommits = strings.Replace(rawCommits, "\n\n", "\n", -1)
			resultCommits = strings.Split(rawCommits, "\n")
			for i := range resultCommits {
				resultCommits[i] = strings.Trim(resultCommits[i], "\"")
			}
			spinningProg.Send(ui.JobCompletionCmd{})
		}()

		switch ui.RunSpinning(spinningProg) {
		case ui.UserCancel:
			fmt.Println("❌ user cancel")
			return
		case ui.Crashed:
			fmt.Println("😔 crashed")
			return
		}

		interactionProg := ui.NewInteractionProgram(resultCommits)
		selectedCommit := ui.RunInteraction(interactionProg)

		l.Debug().Strs("recommended", resultCommits).Str("selected", selectedCommit).Send()
		if selectedCommit == "" {
			fmt.Println("❌ user cancel")
			return
		}

		if err := exec.Command("git", "commit", "-m", selectedCommit).Run(); err != nil {
			fmt.Println("😔 commit failed")
			l.Err(err).Send()
			return
		}
		fmt.Println("😃 commit success!")
	},
}

Functions

func SetGlobalFlag

func SetGlobalFlag()

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL