gogen icon indicating copy to clipboard operation
gogen copied to clipboard

import alias in generated multi-file packages

Open luoliwoshang opened this issue 1 year ago • 0 comments

When I create a package with two files, both importing 'fmt', the second file uses an alias for the import. Is this expected

file1.go

package mypackage

import "fmt"

func Func1() {
	fmt.Println("Hello from file1")
}

file2.go

package mypackage

import fmt1 "fmt"

func Func2() {
	fmt1.Println("Hello from file2")
}

source code

package main

import (
	"os"
	"path/filepath"

	"github.com/goplus/gogen"
)

func main() {
	pkg := gogen.NewPackage("", "mypackage", nil)
	fmt := pkg.Import("fmt")

	pkg.SetCurFile("file1", true)
	pkg.NewFunc(nil, "Func1", nil, nil, false).BodyStart(pkg).
		Val(fmt.Ref("Println")).Val("Hello from file1").Call(1).EndStmt().
		End()

	ToTempFolder(pkg, "file1")

	pkg.SetCurFile("file2", true)
	pkg.NewFunc(nil, "Func2", nil, nil, false).BodyStart(pkg).
		Val(fmt.Ref("Println")).Val("Hello from file2").Call(1).EndStmt().
		End()

	ToTempFolder(pkg, "file2")
}

func ToTempFolder(pkg *gogen.Package, fname string) {
	resultDir := "result"
	err := os.MkdirAll(resultDir, 0755)
	if err != nil {
		panic(err)
	}

	outputPath := filepath.Join(resultDir, fname+".go")

	outfile, err := os.Create(outputPath)
	if err != nil {
		panic(err)
	}
	defer outfile.Close()

	err = pkg.WriteTo(outfile, fname)
	if err != nil {
		panic(err)
	}
}

luoliwoshang avatar Sep 30 '24 07:09 luoliwoshang