https://github.com/Songmu/godzil
package main
import (
"context"
"flag"
"log"
"os"
"{{.PackagePath}}"
)
func main() {
log.SetFlags(0)
err := {{.Package}}.Run(context.Background(), os.Args[1:], os.Stdout, os.Stderr)
if err != nil && err != flag.ErrHelp {
log.Println(err)
exitCode := 1
if ecoder, ok := err.(interface{ ExitCode() int }); ok {
exitCode = ecoder.ExitCode()
}
os.Exit(exitCode)
}
}
以下のようなエラーが発生。
pattern testdata/assets/*: cannot embed directory testdata/assets/basic: in different module
アセット内にgo.modがあるとエラーになる。たしかにこのあたりは仕様的に慎重になったほうが良さそう。
if _, err := fsys.Stat(filepath.Join(dir, "go.mod")); err == nil {
return nil, nil, fmt.Errorf("cannot embed %s %s: in different module", what, rel)
}
https://github.com/golang/go/blob/go1.16.2/src/cmd/go/internal/load/pkg.go#L2001-L2003
go mod init
するように.github/workflows/test.yaml
とかも自動生成したいのに困る。If a pattern names a directory, all files in the subtree rooted at that directory are embedded (recursively), except that files with names beginning with ‘.’ or ‘_’ are excluded.
-- https://golang.org/pkg/embed/#hdr-Directives
直接指定でいけるという話もあるようだが、うまくいかなかった…。
OSS活動を支援してくれると嬉しいです。