@@ -356,7 +356,7 @@ func tryUpdateGoModAndGoSum(modMode ModMode, depMode DependencyInstallerMode) {
356356 }
357357}
358358
359- func moveToTemporaryGopath (srcdir string , importpath string ) {
359+ func moveToTemporaryGopath (srcdir string , importpath string ) ( string , [] string , string , string , string ) {
360360 // a temporary directory where everything is moved while the correct
361361 // directory structure is created.
362362 scratch , err := ioutil .TempDir (srcdir , "scratch" )
@@ -408,10 +408,11 @@ func moveToTemporaryGopath(srcdir string, importpath string) {
408408 log .Fatalf ("Failed to rename %s to %s: %s\n " , scratch , newdir , err .Error ())
409409 }
410410
411- // schedule restoring the contents of newdir to their original location after this function completes:
412- defer restoreRepoLayout ( newdir , files , filepath . Base ( scratch ), srcdir )
411+ return scratch , files , realSrc , root , newdir
412+ }
413413
414- err = os .Chdir (newdir )
414+ func createPathTransformerFile (newdir string ) * os.File {
415+ err := os .Chdir (newdir )
415416 if err != nil {
416417 log .Fatalf ("Failed to chdir into %s: %s\n " , newdir , err .Error ())
417418 }
@@ -422,8 +423,11 @@ func moveToTemporaryGopath(srcdir string, importpath string) {
422423 if err != nil {
423424 log .Fatalf ("Unable to create path transformer file: %s." , err .Error ())
424425 }
425- defer os .Remove (pt .Name ())
426- _ , err = pt .WriteString ("#" + realSrc + "\n " + newdir + "//\n " )
426+ return pt
427+ }
428+
429+ func writePathTransformerFile (pt * os.File , realSrc , root , newdir string ) {
430+ _ , err := pt .WriteString ("#" + realSrc + "\n " + newdir + "//\n " )
427431 if err != nil {
428432 log .Fatalf ("Unable to write path transformer file: %s." , err .Error ())
429433 }
@@ -435,7 +439,9 @@ func moveToTemporaryGopath(srcdir string, importpath string) {
435439 if err != nil {
436440 log .Fatalf ("Unable to set SEMMLE_PATH_TRANSFORMER environment variable: %s.\n " , err .Error ())
437441 }
442+ }
438443
444+ func setGopath (root string ) {
439445 // set/extend GOPATH
440446 oldGopath := os .Getenv ("GOPATH" )
441447 var newGopath string
@@ -447,7 +453,7 @@ func moveToTemporaryGopath(srcdir string, importpath string) {
447453 } else {
448454 newGopath = root
449455 }
450- err = os .Setenv ("GOPATH" , newGopath )
456+ err : = os .Setenv ("GOPATH" , newGopath )
451457 if err != nil {
452458 log .Fatalf ("Unable to set GOPATH to %s: %s\n " , newGopath , err .Error ())
453459 }
@@ -634,7 +640,16 @@ func main() {
634640 inLGTM := os .Getenv ("LGTM_SRC" ) != "" || os .Getenv ("LGTM_INDEX_NEED_GOPATH" ) != ""
635641
636642 if inLGTM && needGopath {
637- moveToTemporaryGopath (srcdir , importpath )
643+ scratch , files , realSrc , root , newdir := moveToTemporaryGopath (srcdir , importpath )
644+
645+ // schedule restoring the contents of newdir to their original location after this function completes:
646+ defer restoreRepoLayout (newdir , files , filepath .Base (scratch ), srcdir )
647+
648+ pt := createPathTransformerFile (newdir )
649+ defer os .Remove (pt .Name ())
650+
651+ writePathTransformerFile (pt , realSrc , root , newdir )
652+ setGopath (root )
638653 }
639654
640655 // check whether an explicit dependency installation command was provided
0 commit comments