@@ -129,10 +129,12 @@ func handleFilePull(client *http.Client, language string) (int64, error) {
129129 )
130130
131131 // todo: check if available first, then prompt, only the do download
132+ fmt .Printf ("Pulling '%s'...\n " , langUrl )
132133 body , err := downLoadFile (client , langUrl )
133134 if err != nil {
134135 return 0 , fmt .Errorf ("failed to download file %s: %w" , langUrl , err )
135136 }
137+ defer body .Close ()
136138
137139 var shouldAppend bool
138140 var userAction choice = "overwrite" // Default to overwrite if no file exists
@@ -170,7 +172,18 @@ func handleFilePull(client *http.Client, language string) (int64, error) {
170172 fileMode = os .O_TRUNC | os .O_CREATE | os .O_WRONLY
171173 }
172174
173- bytesWritten , err := writeGitIgnore (body , fileMode )
175+ out , err := os .OpenFile (GIT_IGNORE , fileMode , 0644 )
176+ if err != nil {
177+ return 0 , fmt .Errorf ("failed to open/create file %s: %w" , GIT_IGNORE , err )
178+ }
179+ defer out .Close ()
180+
181+ bytesWritten , err := writeGitIgnore (out , body )
182+ if fileMode == APPEND {
183+ if _ , err := out .WriteString ("\n " ); err != nil {
184+ return 0 , fmt .Errorf ("failed to write append separator: %w" , err )
185+ }
186+ }
174187 if err != nil {
175188 return bytesWritten , fmt .Errorf ("failed to write file: %w" , err )
176189 }
@@ -194,21 +207,8 @@ func downLoadFile(client *http.Client, langUrl string) (io.ReadCloser, error) {
194207 return resp .Body , nil
195208}
196209
197- func writeGitIgnore (source io.ReadCloser , mode int ) (int64 , error ) {
198- defer source .Close ()
199- out , err := os .OpenFile (GIT_IGNORE , mode , 0644 )
200- if err != nil {
201- return 0 , fmt .Errorf ("failed to open/create file %s: %w" , GIT_IGNORE , err )
202- }
203- defer out .Close ()
204-
205- if mode == APPEND {
206- if _ , err := out .WriteString ("\n " ); err != nil {
207- return 0 , fmt .Errorf ("failed to write append separator: %w" , err )
208- }
209- }
210-
211- bytesCopied , err := io .Copy (out , source )
210+ func writeGitIgnore (dest io.Writer , src io.Reader ) (int64 , error ) {
211+ bytesCopied , err := io .Copy (dest , src )
212212 if err != nil {
213213 return 0 , fmt .Errorf ("failed to copy content to file %s: %w" , GIT_IGNORE , err )
214214 }
0 commit comments