From cc99bd9d149560df26cadd5f203032f7a0ae52d7 Mon Sep 17 00:00:00 2001 From: mochi-yu Date: Wed, 4 Oct 2023 15:14:50 +0900 Subject: [PATCH 1/7] =?UTF-8?q?refactor:=20doc=E3=82=B3=E3=83=9E=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=81=AE=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E3=83=AA?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=AF=E3=82=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/docs.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmd/docs.go b/cmd/docs.go index 7e34f08..09fb5f4 100644 --- a/cmd/docs.go +++ b/cmd/docs.go @@ -17,7 +17,9 @@ var docsCmd = &cobra.Command{ Short: "Document of commitify", Run: func(cmd *cobra.Command, args []string) { b, _ := static.Logo.ReadFile("logo.txt") - fmt.Print(color.CyanString(string(b)) + "\n\n ・Languageは日本語と英語が選択できます\n\n ・CodeFormatはPrefix (例: feat: A)とEmoji (例: 🐛 Bugix), Normal (例: Feat A)が選べます") + fmt.Println(color.CyanString(string(b))) + fmt.Println("\n ・Languageは日本語と英語が選択できます") + fmt.Println(" ・CodeFormatはPrefix (例: feat: A)とEmoji (例: 🐛 Bugix), Normal (例: Feat A)が選べます") }, } From a833572e9f1cdc6fbc48da780bf87818b3641bd3 Mon Sep 17 00:00:00 2001 From: mochi-yu Date: Wed, 4 Oct 2023 16:53:03 +0900 Subject: [PATCH 2/7] =?UTF-8?q?refactor:=20=E8=A8=AD=E5=AE=9A=E3=81=AE?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=87=A6=E7=90=86=E3=82=92=E3=80=81=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E6=A9=9F=E8=83=BD=E3=81=8B=E3=82=89=E5=88=86=E9=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/config.go | 42 ++++++++++----------------------------- internal/entity/config.go | 25 +++++++++++++++++++++++ 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index 2386dfc..e4c03f0 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -6,9 +6,10 @@ import ( "github.com/charmbracelet/bubbles/textinput" tea "github.com/charmbracelet/bubbletea" - "github.com/cocoide/commitify/internal/entity" "github.com/fatih/color" "github.com/spf13/cobra" + + "github.com/cocoide/commitify/internal/entity" ) var ( @@ -27,7 +28,7 @@ var ( } ) -type configModel struct { +type configCmdModel struct { configKeyIndex int configOptionIndex int configKeySelected bool @@ -35,21 +36,21 @@ type configModel struct { textInput textinput.Model } -func initConfigModel() configModel { +func initConfigModel() configCmdModel { ti := textinput.New() ti.Focus() - return configModel{ + return configCmdModel{ textInput: ti, err: nil, } } -func (cm configModel) Init() tea.Cmd { +func (cm configCmdModel) Init() tea.Cmd { return textinput.Blink } -func (cm configModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { +func (cm configCmdModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch cm.configKeySelected { // 設定項目を選択する case false: @@ -82,7 +83,7 @@ func (cm configModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case tea.KeyMsg: switch msg.Type { case tea.KeyEnter: - saveConfig(cm) + entity.SaveConfig(cm.configKeyIndex, -1, cm.textInput.Value()) return cm, tea.Quit case tea.KeyCtrlC, tea.KeyEsc: return cm, tea.Quit @@ -109,7 +110,7 @@ func (cm configModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { cm.configOptionIndex++ } case tea.KeyEnter: - saveConfig(cm) + entity.SaveConfig(cm.configKeyIndex, configOption[cm.configKeyIndex][cm.configOptionIndex], "") return cm, tea.Quit case tea.KeyCtrlC, tea.KeyEsc: return cm, tea.Quit @@ -121,7 +122,7 @@ func (cm configModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return cm, nil } -func (cm configModel) View() string { +func (cm configCmdModel) View() string { var b strings.Builder switch cm.configKeySelected { @@ -180,26 +181,3 @@ var configCmd = &cobra.Command{ func init() { rootCmd.AddCommand(configCmd) } - -func saveConfig(cm configModel) { - currentConfig, err := entity.ReadConfig() - if err != nil { - fmt.Println(err) - } - - switch cm.configKeyIndex { - case 0: - currentConfig.ChatGptApiKey = cm.textInput.Value() - case 1: - currentConfig.UseLanguage = configOption[cm.configKeyIndex][cm.configOptionIndex] - case 2: - currentConfig.CommitFormat = configOption[cm.configKeyIndex][cm.configOptionIndex] - case 3: - currentConfig.AISource = configOption[cm.configKeyIndex][cm.configOptionIndex] - } - - err = entity.WriteConfig(currentConfig) - if err != nil { - fmt.Println(err) - } -} diff --git a/internal/entity/config.go b/internal/entity/config.go index cbbfe26..3c93e4e 100644 --- a/internal/entity/config.go +++ b/internal/entity/config.go @@ -95,3 +95,28 @@ func WriteConfig(config Config) error { } return nil } + +func SaveConfig(configIndex, updateConfigParamInt int, updateConfigParamStr string) error { + currentConfig, err := ReadConfig() + if err != nil { + return err + } + + switch configIndex { + case 0: + currentConfig.ChatGptApiKey = updateConfigParamStr + case 1: + currentConfig.UseLanguage = updateConfigParamInt + case 2: + currentConfig.CommitFormat = updateConfigParamInt + case 3: + currentConfig.AISource = updateConfigParamInt + } + + err = WriteConfig(currentConfig) + if err != nil { + return err + } + + return nil +} From 6385fd2e5814557697cddb0cf15574c256dea140 Mon Sep 17 00:00:00 2001 From: mochi-yu Date: Wed, 4 Oct 2023 16:53:28 +0900 Subject: [PATCH 3/7] =?UTF-8?q?fix:=20config.yaml=E3=81=AE=E6=8C=99?= =?UTF-8?q?=E5=8B=95=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/entity/config.go | 14 ++++++++++++-- main.go | 8 ++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/internal/entity/config.go b/internal/entity/config.go index 3c93e4e..faa9f67 100644 --- a/internal/entity/config.go +++ b/internal/entity/config.go @@ -3,6 +3,7 @@ package entity import ( "encoding/json" "fmt" + "os" pb "github.com/cocoide/commitify/pkg/grpc" "github.com/spf13/viper" @@ -61,8 +62,12 @@ func (c *Config) Config2PbVars() (pb.CodeFormatType, pb.LanguageType) { func ReadConfig() (Config, error) { var result Config + homePath, err := os.UserHomeDir() + if err != nil { + return result, err + } - viper.AddConfigPath("$HOME/.commitify") + viper.AddConfigPath(homePath + "/.commitify") viper.SetConfigName("config") viper.SetConfigType("yaml") if err := viper.ReadInConfig(); err != nil { @@ -75,7 +80,12 @@ func ReadConfig() (Config, error) { } func WriteConfig(config Config) error { - viper.AddConfigPath("$HOME/.commitify") + homePath, err := os.UserHomeDir() + if err != nil { + return err + } + + viper.AddConfigPath(homePath + "/.commitify") viper.SetConfigName("config") viper.SetConfigType("yaml") configMap := make(map[string]interface{}) diff --git a/main.go b/main.go index 18a6557..1c5eee1 100644 --- a/main.go +++ b/main.go @@ -9,9 +9,13 @@ import ( func main() { // configファイルがあるかどうかを確認 - homePath := os.Getenv("HOME") + homePath, err := os.UserHomeDir() + if err != nil { + fmt.Printf("error of find user home dir, %v", err) + return + } - _, err := os.Stat(homePath + "/.commitify/config.yaml") + _, err = os.Stat(homePath + "/.commitify/config.yaml") if os.IsNotExist(err) { if err := os.MkdirAll(homePath+"/.commitify", 0755); err != nil { fmt.Printf("error of make directory, %v", err) From c27f677ed942f615a30a9af52d8c8ad25b5895f7 Mon Sep 17 00:00:00 2001 From: mochi-yu Date: Wed, 4 Oct 2023 17:21:35 +0900 Subject: [PATCH 4/7] =?UTF-8?q?fix:=20=E3=83=A2=E3=83=87=E3=83=AB=E3=81=AE?= =?UTF-8?q?=E5=90=8D=E5=89=8D=E3=82=92suggestModel=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/suggest.go | 87 +++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/cmd/suggest.go b/cmd/suggest.go index 1ae9c60..d9bfbc5 100644 --- a/cmd/suggest.go +++ b/cmd/suggest.go @@ -20,10 +20,9 @@ import ( var ( textStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("252")).Render spinnerStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("69")) - helpStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("241")).Render ) -type model struct { +type suggestModel struct { choices []string currentIdx int errorMsg string @@ -33,7 +32,7 @@ type model struct { textInput textinput.Model } -func (m *model) Init() tea.Cmd { +func (sm *suggestModel) Init() tea.Cmd { conf, err := entity.ReadConfig() if err != nil { log.Fatal("設定情報の取得に失敗: ", err) @@ -53,79 +52,79 @@ func (m *model) Init() tea.Cmd { log.Fatal("コミットメッセージの生成に失敗: ", err) os.Exit(-1) } - m.choices = messages - m.isLoading = false + sm.choices = messages + sm.isLoading = false }() return textinput.Blink } -func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { +func (sm *suggestModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { var cmd tea.Cmd - m.textInput, cmd = m.textInput.Update(msg) + sm.textInput, cmd = sm.textInput.Update(msg) switch msg := msg.(type) { case tea.KeyMsg: switch msg.Type { case tea.KeyTab: - m.isEditing = true - m.textInput.Focus() - m.textInput.SetValue(m.choices[m.currentIdx]) - m.textInput.CharLimit = 100 - m.textInput.Width = 100 - return m, cmd + sm.isEditing = true + sm.textInput.Focus() + sm.textInput.SetValue(sm.choices[sm.currentIdx]) + sm.textInput.CharLimit = 100 + sm.textInput.Width = 100 + return sm, cmd case tea.KeyUp: - if m.currentIdx > 0 { - m.currentIdx-- + if sm.currentIdx > 0 { + sm.currentIdx-- } case tea.KeyDown: - if m.currentIdx < len(m.choices)-1 { - m.currentIdx++ + if sm.currentIdx < len(sm.choices)-1 { + sm.currentIdx++ } case tea.KeyEnter: - if err := util.ExecCommitMessage(m.choices[m.currentIdx]); err != nil { - m.errorMsg = "コミットに失敗: " + err.Error() - return m, tea.Quit + if err := util.ExecCommitMessage(sm.choices[sm.currentIdx]); err != nil { + sm.errorMsg = "コミットに失敗: " + err.Error() + return sm, tea.Quit } - return m, tea.Quit + return sm, tea.Quit case tea.KeyCtrlC, tea.KeyEsc: - return m, tea.Quit + return sm, tea.Quit } case spinner.TickMsg: var cmd tea.Cmd - m.spinner, cmd = m.spinner.Update(msg) - return m, cmd + sm.spinner, cmd = sm.spinner.Update(msg) + return sm, cmd } - return m, m.spinner.Tick + return sm, sm.spinner.Tick } -func (m *model) resetSpinner() { - m.spinner = spinner.New() - m.spinner.Style = spinnerStyle - m.spinner.Spinner = spinner.Globe +func (sm *suggestModel) resetSpinner() { + sm.spinner = spinner.New() + sm.spinner.Style = spinnerStyle + sm.spinner.Spinner = spinner.Globe } -func (m *model) View() string { - if m.errorMsg != "" { - return color.RedString(m.errorMsg) +func (sm *suggestModel) View() string { + if sm.errorMsg != "" { + return color.RedString(sm.errorMsg) } - if m.isLoading { - s := fmt.Sprintf("\n %s %s\n\n", m.spinner.View(), textStyle("コミットメッセージ生成中")) + if sm.isLoading { + s := fmt.Sprintf("\n %s %s\n\n", sm.spinner.View(), textStyle("コミットメッセージ生成中")) return s } var b strings.Builder - if m.errorMsg != "" { - b.WriteString(color.RedString(m.errorMsg) + "\n\n") + if sm.errorMsg != "" { + b.WriteString(color.RedString(sm.errorMsg) + "\n\n") } - if m.isEditing { - return m.textInput.View() + if sm.isEditing { + return sm.textInput.View() } b.WriteString(color.WhiteString("🍕 Please select and enter to commit")) b.WriteString(color.WhiteString("\n Use arrow ↑↓ to navigate and press Enter to select.")) b.WriteString(color.WhiteString("\n ( enter Tab key to edit message )\n\n")) - for i, choice := range m.choices { - if i == m.currentIdx { + for i, choice := range sm.choices { + if i == sm.currentIdx { b.WriteString(fmt.Sprintf(color.HiCyanString("➡️ %s\n"), choice)) } else { b.WriteString(fmt.Sprintf(color.CyanString(" %s\n"), choice)) @@ -134,7 +133,7 @@ func (m *model) View() string { return b.String() } -func initialModel() model { +func initialModel() suggestModel { ti := textinput.New() ti.Focus() @@ -153,9 +152,9 @@ var suggestCmd = &cobra.Command{ Short: "Suggestion of commit message for staging repository", Aliases: []string{"s", "suggest"}, Run: func(cmd *cobra.Command, args []string) { - m := initialModel() - m.resetSpinner() - p := tea.NewProgram(&m) + sm := initialModel() + sm.resetSpinner() + p := tea.NewProgram(&sm) p.Run() }, } From 378104df811ce50ced410fe54b9a98f412085f33 Mon Sep 17 00:00:00 2001 From: mochi-yu Date: Wed, 4 Oct 2023 17:47:28 +0900 Subject: [PATCH 5/7] =?UTF-8?q?refactor:=20=E3=82=B3=E3=83=9F=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=81=AE?= =?UTF-8?q?=E4=BD=9C=E6=88=90=E5=87=A6=E7=90=86=E3=82=92=E3=80=81suggest?= =?UTF-8?q?=5Fcmd=5Fservice=E3=81=A8=E3=81=97=E3=81=A6=E5=88=87=E3=82=8A?= =?UTF-8?q?=E5=88=86=E3=81=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/suggest.go | 54 +++++++++---------- .../{grpc_serve.go => ai_source_grpc.go} | 13 +---- internal/gateway/ai_source_interface.go | 5 ++ .../{openai.go => ai_source_openai.go} | 0 internal/gateway/gateway_interface.go | 5 -- internal/service/file_diff_service.go | 8 +-- internal/service/suggest_cmd.go | 44 +++++++++++++++ 7 files changed, 81 insertions(+), 48 deletions(-) rename internal/gateway/{grpc_serve.go => ai_source_grpc.go} (79%) create mode 100644 internal/gateway/ai_source_interface.go rename internal/gateway/{openai.go => ai_source_openai.go} (100%) delete mode 100644 internal/gateway/gateway_interface.go create mode 100644 internal/service/suggest_cmd.go diff --git a/cmd/suggest.go b/cmd/suggest.go index d9bfbc5..2a32716 100644 --- a/cmd/suggest.go +++ b/cmd/suggest.go @@ -10,11 +10,11 @@ import ( "github.com/charmbracelet/bubbles/textinput" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" - "github.com/cocoide/commitify/internal/entity" - "github.com/cocoide/commitify/internal/gateway" - "github.com/cocoide/commitify/util" "github.com/fatih/color" "github.com/spf13/cobra" + + "github.com/cocoide/commitify/internal/service" + "github.com/cocoide/commitify/util" ) var ( @@ -30,24 +30,12 @@ type suggestModel struct { isEditing bool spinner spinner.Model textInput textinput.Model + scs *service.SuggestCmdService } func (sm *suggestModel) Init() tea.Cmd { - conf, err := entity.ReadConfig() - if err != nil { - log.Fatal("設定情報の取得に失敗: ", err) - } - - var gi gateway.GatewayInterface - switch conf.AISource { - case int(entity.WrapServer): - gi = gateway.NewGrpcServeGateway() - default: - gi = gateway.NewGrpcServeGateway() - } - go func() { - messages, err := gi.FetchCommitMessages() + messages, err := sm.scs.GenerateCommitMessages() if err != nil { log.Fatal("コミットメッセージの生成に失敗: ", err) os.Exit(-1) @@ -97,12 +85,6 @@ func (sm *suggestModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return sm, sm.spinner.Tick } -func (sm *suggestModel) resetSpinner() { - sm.spinner = spinner.New() - sm.spinner.Style = spinnerStyle - sm.spinner.Spinner = spinner.Globe -} - func (sm *suggestModel) View() string { if sm.errorMsg != "" { return color.RedString(sm.errorMsg) @@ -133,28 +115,44 @@ func (sm *suggestModel) View() string { return b.String() } -func initialModel() suggestModel { +// モデルの初期化処理 +func NewSuggestModel() *suggestModel { ti := textinput.New() ti.Focus() - return model{ + // suggestコマンドのサービスの取得 + scs, err := service.NewSuggestCmdService() + if err != nil { + log.Fatal(err) + os.Exit(-1) + } + + return &suggestModel{ choices: []string{""}, currentIdx: 0, errorMsg: "", isLoading: true, isEditing: false, textInput: ti, + scs: scs, } } +// スピナーの初期化 +func (sm *suggestModel) initSpinner() { + sm.spinner = spinner.New() + sm.spinner.Style = spinnerStyle + sm.spinner.Spinner = spinner.Globe +} + var suggestCmd = &cobra.Command{ Use: "suggest", Short: "Suggestion of commit message for staging repository", Aliases: []string{"s", "suggest"}, Run: func(cmd *cobra.Command, args []string) { - sm := initialModel() - sm.resetSpinner() - p := tea.NewProgram(&sm) + sm := NewSuggestModel() + sm.initSpinner() + p := tea.NewProgram(sm) p.Run() }, } diff --git a/internal/gateway/grpc_serve.go b/internal/gateway/ai_source_grpc.go similarity index 79% rename from internal/gateway/grpc_serve.go rename to internal/gateway/ai_source_grpc.go index b76bdd2..612c542 100644 --- a/internal/gateway/grpc_serve.go +++ b/internal/gateway/ai_source_grpc.go @@ -8,7 +8,6 @@ import ( "os" "github.com/cocoide/commitify/internal/entity" - "github.com/cocoide/commitify/internal/service" pb "github.com/cocoide/commitify/pkg/grpc" "google.golang.org/grpc" "google.golang.org/grpc/credentials" @@ -41,7 +40,7 @@ func NewGrpcServeGateway() *grpcServeGateway { return gsg } -func (gsg grpcServeGateway) FetchCommitMessages() ([]string, error) { +func (gsg grpcServeGateway) FetchCommitMessages(fileDiffStr string) ([]string, error) { // 設定情報を取得 conf, err := entity.ReadConfig() if err != nil { @@ -49,16 +48,8 @@ func (gsg grpcServeGateway) FetchCommitMessages() ([]string, error) { } cft, lt := conf.Config2PbVars() - fds := service.NewFileDiffService() - - diffStr, err := fds.CreateFileDiffStr() - if err != nil { - log.Fatal("差分の取得に失敗: ", err) - return nil, err - } - req := &pb.CommitMessageRequest{ - InputCode: diffStr, + InputCode: fileDiffStr, CodeFormat: cft, Language: lt, } diff --git a/internal/gateway/ai_source_interface.go b/internal/gateway/ai_source_interface.go new file mode 100644 index 0000000..3dcd9a4 --- /dev/null +++ b/internal/gateway/ai_source_interface.go @@ -0,0 +1,5 @@ +package gateway + +type AISourceGatewayInterface interface { + FetchCommitMessages(fileDiffStr string) ([]string, error) +} diff --git a/internal/gateway/openai.go b/internal/gateway/ai_source_openai.go similarity index 100% rename from internal/gateway/openai.go rename to internal/gateway/ai_source_openai.go diff --git a/internal/gateway/gateway_interface.go b/internal/gateway/gateway_interface.go deleted file mode 100644 index 8d2f8fd..0000000 --- a/internal/gateway/gateway_interface.go +++ /dev/null @@ -1,5 +0,0 @@ -package gateway - -type GatewayInterface interface { - FetchCommitMessages() ([]string, error) -} diff --git a/internal/service/file_diff_service.go b/internal/service/file_diff_service.go index c171a90..e9e2405 100644 --- a/internal/service/file_diff_service.go +++ b/internal/service/file_diff_service.go @@ -5,12 +5,12 @@ import "os/exec" type fileDiffService struct { } -func NewFileDiffService() *fileDiffService { - ps := new(fileDiffService) - return ps +func NewFileDiffService() fileDiffService { + fds := fileDiffService{} + return fds } -func (ps fileDiffService) CreateFileDiffStr() (string, error) { +func (fds *fileDiffService) createFileDiffStr() (string, error) { diff, err := exec.Command("git", "diff", "--staged").Output() return string(diff), err diff --git a/internal/service/suggest_cmd.go b/internal/service/suggest_cmd.go new file mode 100644 index 0000000..07900fc --- /dev/null +++ b/internal/service/suggest_cmd.go @@ -0,0 +1,44 @@ +package service + +import ( + "log" + + "github.com/cocoide/commitify/internal/entity" + "github.com/cocoide/commitify/internal/gateway" +) + +type SuggestCmdService struct { + ais gateway.AISourceGatewayInterface + fds fileDiffService +} + +func NewSuggestCmdService() (*SuggestCmdService, error) { + conf, err := entity.ReadConfig() + if err != nil { + return nil, err + } + + var aigi gateway.AISourceGatewayInterface + switch conf.AISource { + case int(entity.WrapServer): + aigi = gateway.NewGrpcServeGateway() + case int(entity.OpenAiAPI): + log.Fatal("現在、非対応の機能です。") + return nil, err + default: + aigi = gateway.NewGrpcServeGateway() + } + + fds := NewFileDiffService() + + return &SuggestCmdService{ais: aigi, fds: fds}, nil +} + +func (scs *SuggestCmdService) GenerateCommitMessages() ([]string, error) { + fileDiffStr, err := scs.fds.createFileDiffStr() + if err != nil { + return nil, err + } + + return scs.ais.FetchCommitMessages(fileDiffStr) +} From be69e706b36cd74abd97f0f42f1bbaeb94aab4c4 Mon Sep 17 00:00:00 2001 From: mochi-yu Date: Wed, 4 Oct 2023 17:47:40 +0900 Subject: [PATCH 6/7] =?UTF-8?q?doc:=20=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/entity/config.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/entity/config.go b/internal/entity/config.go index faa9f67..519e183 100644 --- a/internal/entity/config.go +++ b/internal/entity/config.go @@ -9,6 +9,7 @@ import ( "github.com/spf13/viper" ) +// コミットメッセージの言語の列挙型 type Language int const ( @@ -16,6 +17,7 @@ const ( JP ) +// コミットメッセージの形式の列挙型 type CodeFormat int const ( @@ -24,6 +26,7 @@ const ( PrefixFormat ) +// AIのソースの列挙型 type AISource int const ( From cf05d15a09f263dcfaa1a051888ae31a2c760c27 Mon Sep 17 00:00:00 2001 From: mochi-yu Date: Wed, 4 Oct 2023 17:54:19 +0900 Subject: [PATCH 7/7] =?UTF-8?q?refactor:=20=E3=82=B3=E3=83=9F=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=82=92=E5=AE=9F=E8=A1=8C=E3=81=99=E3=82=8B=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92`suggest=5Fcmd=5Fservice`=E3=81=AB=E7=A7=BB?= =?UTF-8?q?=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/suggest.go | 3 +-- internal/service/suggest_cmd.go | 9 +++++++++ util/exec.go | 24 ------------------------ 3 files changed, 10 insertions(+), 26 deletions(-) delete mode 100644 util/exec.go diff --git a/cmd/suggest.go b/cmd/suggest.go index 2a32716..13d6e16 100644 --- a/cmd/suggest.go +++ b/cmd/suggest.go @@ -14,7 +14,6 @@ import ( "github.com/spf13/cobra" "github.com/cocoide/commitify/internal/service" - "github.com/cocoide/commitify/util" ) var ( @@ -69,7 +68,7 @@ func (sm *suggestModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { sm.currentIdx++ } case tea.KeyEnter: - if err := util.ExecCommitMessage(sm.choices[sm.currentIdx]); err != nil { + if err := sm.scs.SubmitCommit(sm.choices[sm.currentIdx]); err != nil { sm.errorMsg = "コミットに失敗: " + err.Error() return sm, tea.Quit } diff --git a/internal/service/suggest_cmd.go b/internal/service/suggest_cmd.go index 07900fc..389f4c3 100644 --- a/internal/service/suggest_cmd.go +++ b/internal/service/suggest_cmd.go @@ -2,6 +2,7 @@ package service import ( "log" + "os/exec" "github.com/cocoide/commitify/internal/entity" "github.com/cocoide/commitify/internal/gateway" @@ -42,3 +43,11 @@ func (scs *SuggestCmdService) GenerateCommitMessages() ([]string, error) { return scs.ais.FetchCommitMessages(fileDiffStr) } + +func (scs *SuggestCmdService) SubmitCommit(commitMessage string) error { + cmd := exec.Command("git", "commit", "-m", commitMessage) + if err := cmd.Run(); err != nil { + return err + } + return nil +} diff --git a/util/exec.go b/util/exec.go deleted file mode 100644 index 5d5fba3..0000000 --- a/util/exec.go +++ /dev/null @@ -1,24 +0,0 @@ -package util - -import ( - "fmt" - "log" - "os/exec" -) - -func ExecGetStagingCode() string { - code, err := exec.Command("git", "diff", "--staged").Output() - if err != nil { - fmt.Printf("Gitでエラーが発生") - log.Fatal(err.Error()) - } - return string(code) -} - -func ExecCommitMessage(msg string) error { - cmd := exec.Command("git", "commit", "-m", msg) - if err := cmd.Run(); err != nil { - return err - } - return nil -}