@@ -10,8 +10,10 @@ import (
1010 "os"
1111 "regexp"
1212 "strings"
13+ "io"
1314
1415 "github.com/flowcommerce/tools/util"
16+ "runtime"
1517)
1618
1719type Carrier struct {
@@ -290,8 +292,13 @@ func WriteJson(target string, data interface{}) {
290292 os .Exit (1 )
291293 }
292294
293- err = os .Rename (tmp .Name (), target )
294- util .ExitIfError (err , "Error renaming tmp file" )
295+ if runtime .GOOS == "linux" {
296+ err = MoveFile (tmp .Name (), target )
297+ util .ExitIfError (err , "Error moving tmp file" )
298+ } else {
299+ err = os .Rename (tmp .Name (), target )
300+ util .ExitIfError (err , "Error renaming tmp file" )
301+ }
295302}
296303
297304func FormatLocaleId (value string ) string {
@@ -374,3 +381,29 @@ func RemapCurrencyCodeToSupported(code string) string {
374381 return newCurrency
375382 }
376383}
384+
385+ //This method is executed for linux OS
386+ //Reference for this method: https://gist.github.com/var23rav/23ae5d0d4d830aff886c3c970b8f6c6b
387+ func MoveFile (sourcePath , destPath string ) error {
388+ inputFile , err := os .Open (sourcePath )
389+ if err != nil {
390+ return fmt .Errorf ("Couldn't open source file: %s" , err )
391+ }
392+ outputFile , err := os .Create (destPath )
393+ if err != nil {
394+ inputFile .Close ()
395+ return fmt .Errorf ("Couldn't open dest file: %s" , err )
396+ }
397+ defer outputFile .Close ()
398+ _ , err = io .Copy (outputFile , inputFile )
399+ inputFile .Close ()
400+ if err != nil {
401+ return fmt .Errorf ("Writing to output file failed: %s" , err )
402+ }
403+ // The copy was successful, so now delete the original file
404+ err = os .Remove (sourcePath )
405+ if err != nil {
406+ return fmt .Errorf ("Failed removing original file: %s" , err )
407+ }
408+ return nil
409+ }
0 commit comments