提交 66e37d73 编写于 作者: chai2010's avatar chai2010

app 修复 init 生成工程缺少 vendor 目录的问题

上级 e5e4972d
......@@ -19,9 +19,10 @@
安装和测试:
1. `go install github.com/wa-lang/wa@latest`
2. `wa init -name=_examples/hi`
3. `wa run _examples/hi`
1. 安装 [Clang](https://clang.llvm.org), 确保本地 `clang` 命令有效
2. `go install github.com/wa-lang/wa@latest`
3. `wa init -name=_examples/hi`
4. `wa run _examples/hi`
## 设计目标
......
......@@ -117,8 +117,8 @@ func (p *App) InitApp(name, pkgpath string, update bool) error {
Year: time.Now().Year(),
}
fileSys := waroot.GetExampleAppFS()
return fs.WalkDir(fileSys, ".", func(path string, d fs.DirEntry, err error) error {
appFS := waroot.GetExampleAppFS()
err := fs.WalkDir(appFS, ".", func(path string, d fs.DirEntry, err error) error {
if d == nil || d.IsDir() {
return nil
}
......@@ -126,7 +126,7 @@ func (p *App) InitApp(name, pkgpath string, update bool) error {
return err
}
data, err := fs.ReadFile(fileSys, path)
data, err := fs.ReadFile(appFS, path)
if err != nil {
return err
}
......@@ -152,6 +152,50 @@ func (p *App) InitApp(name, pkgpath string, update bool) error {
return nil
})
if err != nil {
return err
}
vendorFS := waroot.GetExampleVendorFS()
err = fs.WalkDir(vendorFS, ".", func(path string, d fs.DirEntry, err error) error {
if d == nil || d.IsDir() {
return nil
}
if err != nil {
return err
}
data, err := fs.ReadFile(vendorFS, path)
if err != nil {
return err
}
tmpl, err := template.New(path).Parse(string(data))
if err != nil {
return err
}
dstpath := filepath.Join(name, "vendor", path)
os.MkdirAll(filepath.Dir(dstpath), 0777)
f, err := os.Create(dstpath)
if err != nil {
return err
}
defer f.Close()
err = tmpl.Execute(f, &info)
if err != nil {
return err
}
return nil
})
if err != nil {
return err
}
return nil
}
func (p *App) Fmt(path string) error {
......
......@@ -7,11 +7,22 @@ import (
"io/fs"
)
//go:embed _example_template
//go:embed _example_app
var _exampleAppFS embed.FS
//go:embed _example_vendor
var _exampleVendorFS embed.FS
func GetExampleAppFS() fs.FS {
fs, err := fs.Sub(_exampleAppFS, "_example_template")
fs, err := fs.Sub(_exampleAppFS, "_example_app")
if err != nil {
panic(err)
}
return fs
}
func GetExampleVendorFS() fs.FS {
fs, err := fs.Sub(_exampleVendorFS, "_example_vendor")
if err != nil {
panic(err)
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册