@@ -106,89 +106,7 @@ var commitCmd = &cobra.Command{
106106 return err
107107 }
108108
109- out , err := util .GetTemplateByString (
110- prompt .SummarizeFileDiffTemplate ,
111- util.Data {
112- "file_diffs" : diff ,
113- },
114- )
115- if err != nil {
116- return err
117- }
118-
119- // determine if the user wants to use the prompt only
120- if promptOnly {
121- color .Yellow ("====================Prompt========================" )
122- color .Yellow ("\n " + strings .TrimSpace (out ) + "\n \n " )
123- color .Yellow ("==================================================" )
124- return nil
125- }
126-
127- // Get summarize comment from diff datas
128- color .Cyan ("We are trying to summarize a git diff" )
129- resp , err := client .Completion (cmd .Context (), out )
130- if err != nil {
131- return err
132- }
133- summarizeMessage := resp .Content
134- color .Magenta ("PromptTokens: " + strconv .Itoa (resp .Usage .PromptTokens ) +
135- ", CompletionTokens: " + strconv .Itoa (resp .Usage .CompletionTokens ) +
136- ", TotalTokens: " + strconv .Itoa (resp .Usage .TotalTokens ),
137- )
138-
139- out , err = util .GetTemplateByString (
140- prompt .SummarizeTitleTemplate ,
141- util.Data {
142- "summary_points" : summarizeMessage ,
143- },
144- )
145- if err != nil {
146- return err
147- }
148-
149- // Get summarize title from diff datas
150- color .Cyan ("We are trying to summarize a title for pull request" )
151- resp , err = client .Completion (cmd .Context (), out )
152- if err != nil {
153- return err
154- }
155- summarizeTitle := resp .Content
156- color .Magenta ("PromptTokens: " + strconv .Itoa (resp .Usage .PromptTokens ) +
157- ", CompletionTokens: " + strconv .Itoa (resp .Usage .CompletionTokens ) +
158- ", TotalTokens: " + strconv .Itoa (resp .Usage .TotalTokens ),
159- )
160-
161- // lowercase the first character of first word of the commit message and remove last period
162- summarizeTitle = strings .TrimRight (strings .ToLower (string (summarizeTitle [0 ]))+ summarizeTitle [1 :], "." )
163-
164- // support conventional commits
165- out , err = util .GetTemplateByString (
166- prompt .ConventionalCommitTemplate ,
167- util.Data {
168- "summary_points" : summarizeMessage ,
169- },
170- )
171- if err != nil {
172- return err
173- }
174- color .Cyan ("We are trying to get conventional commit prefix" )
175- resp , err = client .Completion (cmd .Context (), out )
176- if err != nil {
177- return err
178- }
179- summarizePrefix := resp .Content
180- color .Magenta ("PromptTokens: " + strconv .Itoa (resp .Usage .PromptTokens ) +
181- ", CompletionTokens: " + strconv .Itoa (resp .Usage .CompletionTokens ) +
182- ", TotalTokens: " + strconv .Itoa (resp .Usage .TotalTokens ),
183- )
184-
185- var commitMessage string
186- data := util.Data {
187- "summarize_prefix" : strings .TrimSpace (summarizePrefix ),
188- "summarize_title" : strings .TrimSpace (summarizeTitle ),
189- "summarize_message" : strings .TrimSpace (summarizeMessage ),
190- }
191-
109+ data := util.Data {}
192110 // add template vars
193111 if vars := util .ConvertToMap (templateVars ); len (vars ) > 0 {
194112 for k , v := range vars {
@@ -207,6 +125,91 @@ var commitCmd = &cobra.Command{
207125 }
208126 }
209127
128+ // Get code review message from diff datas
129+ if _ , ok := data [prompt .SummarizeMessageKey ]; ! ok {
130+ out , err := util .GetTemplateByString (
131+ prompt .SummarizeFileDiffTemplate ,
132+ util.Data {
133+ "file_diffs" : diff ,
134+ },
135+ )
136+ if err != nil {
137+ return err
138+ }
139+
140+ // determine if the user wants to use the prompt only
141+ if promptOnly {
142+ color .Yellow ("====================Prompt========================" )
143+ color .Yellow ("\n " + strings .TrimSpace (out ) + "\n \n " )
144+ color .Yellow ("==================================================" )
145+ return nil
146+ }
147+
148+ // Get summarize comment from diff datas
149+ color .Cyan ("We are trying to summarize a git diff" )
150+ resp , err := client .Completion (cmd .Context (), out )
151+ if err != nil {
152+ return err
153+ }
154+ data [prompt .SummarizeMessageKey ] = strings .TrimSpace (resp .Content )
155+ color .Magenta ("PromptTokens: " + strconv .Itoa (resp .Usage .PromptTokens ) +
156+ ", CompletionTokens: " + strconv .Itoa (resp .Usage .CompletionTokens ) +
157+ ", TotalTokens: " + strconv .Itoa (resp .Usage .TotalTokens ),
158+ )
159+ }
160+
161+ // Get summarize title from diff datas
162+ if _ , ok := data [prompt .SummarizeTitleKey ]; ! ok {
163+ out , err := util .GetTemplateByString (
164+ prompt .SummarizeTitleTemplate ,
165+ util.Data {
166+ "summary_points" : data [prompt .SummarizeMessageKey ],
167+ },
168+ )
169+ if err != nil {
170+ return err
171+ }
172+
173+ // Get summarize title from diff datas
174+ color .Cyan ("We are trying to summarize a title for pull request" )
175+ resp , err := client .Completion (cmd .Context (), out )
176+ if err != nil {
177+ return err
178+ }
179+ summarizeTitle := resp .Content
180+ color .Magenta ("PromptTokens: " + strconv .Itoa (resp .Usage .PromptTokens ) +
181+ ", CompletionTokens: " + strconv .Itoa (resp .Usage .CompletionTokens ) +
182+ ", TotalTokens: " + strconv .Itoa (resp .Usage .TotalTokens ),
183+ )
184+
185+ // lowercase the first character of first word of the commit message and remove last period
186+ summarizeTitle = strings .TrimRight (strings .ToLower (string (summarizeTitle [0 ]))+ summarizeTitle [1 :], "." )
187+ data [prompt .SummarizeTitleKey ] = strings .TrimSpace (summarizeTitle )
188+ }
189+
190+ if _ , ok := data [prompt .SummarizePrefixKey ]; ! ok {
191+ out , err := util .GetTemplateByString (
192+ prompt .ConventionalCommitTemplate ,
193+ util.Data {
194+ "summary_points" : data [prompt .SummarizeMessageKey ],
195+ },
196+ )
197+ if err != nil {
198+ return err
199+ }
200+ color .Cyan ("We are trying to get conventional commit prefix" )
201+ resp , err := client .Completion (cmd .Context (), out )
202+ if err != nil {
203+ return err
204+ }
205+ data [prompt .SummarizePrefixKey ] = strings .TrimSpace (resp .Content )
206+ color .Magenta ("PromptTokens: " + strconv .Itoa (resp .Usage .PromptTokens ) +
207+ ", CompletionTokens: " + strconv .Itoa (resp .Usage .CompletionTokens ) +
208+ ", TotalTokens: " + strconv .Itoa (resp .Usage .TotalTokens ),
209+ )
210+ }
211+
212+ var commitMessage string
210213 if viper .GetString ("git.template_file" ) != "" {
211214 format , err := os .ReadFile (viper .GetString ("git.template_file" ))
212215 if err != nil {
@@ -238,7 +241,7 @@ var commitCmd = &cobra.Command{
238241 }
239242
240243 if prompt .GetLanguage (viper .GetString ("output.lang" )) != prompt .DefaultLanguage {
241- out , err = util .GetTemplateByString (
244+ out , err : = util .GetTemplateByString (
242245 prompt .TranslationTemplate ,
243246 util.Data {
244247 "output_language" : prompt .GetLanguage (viper .GetString ("output.lang" )),
0 commit comments