优化生成工具逻辑
This commit is contained in:
parent
84c9206d22
commit
e7fc3614a8
|
@ -7,6 +7,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"git.nobla.cn/golang/kos/util/env"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
@ -18,8 +19,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
packageNameFlag = flag.String("package-name", "github.com/golang/example", "Application package name")
|
packageNameFlag = flag.String("package-name", "", "应用程序包名称")
|
||||||
versionFlag = flag.String("version", "v0.0.1", "Application package version")
|
versionFlag = flag.String("version", env.Get("MOTO_VERSION", "v0.0.1"), "模板版本号,可以使用环境变量 MOTO_VERSION")
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -70,29 +71,21 @@ func extractFile(file string, dirname string) (err error) {
|
||||||
if header.Typeflag == tar.TypeXGlobalHeader {
|
if header.Typeflag == tar.TypeXGlobalHeader {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
fileInfo := header.FileInfo()
|
|
||||||
if prefix == "" && header.Typeflag == tar.TypeDir {
|
if prefix == "" && header.Typeflag == tar.TypeDir {
|
||||||
prefix = header.Name
|
prefix = header.Name
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
filename := path.Join(dirname, strings.TrimPrefix(header.Name, prefix))
|
filename := path.Join(dirname, strings.TrimPrefix(header.Name, prefix))
|
||||||
if header.Typeflag == tar.TypeDir {
|
if header.Typeflag == tar.TypeDir {
|
||||||
if err = os.MkdirAll(filename, fileInfo.Mode().Perm()); err != nil {
|
if err = os.MkdirAll(filename, 0755); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if runtime.GOOS != "windows" {
|
|
||||||
if err = os.Chmod(filename, fileInfo.Mode().Perm()); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if err = writeFile(filename, tarReader); err != nil {
|
if err = writeFile(filename, tarReader); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if runtime.GOOS != "windows" {
|
if runtime.GOOS != "windows" {
|
||||||
if err = os.Chmod(filename, fileInfo.Mode().Perm()); err != nil {
|
os.Chmod(filename, 0644)
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,28 +156,33 @@ func main() {
|
||||||
)
|
)
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
packageName = *packageNameFlag
|
packageName = *packageNameFlag
|
||||||
|
if packageName == "" {
|
||||||
|
if len(os.Args) > 1 {
|
||||||
|
packageName = os.Args[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
pos = strings.LastIndexByte(packageName, '/')
|
pos = strings.LastIndexByte(packageName, '/')
|
||||||
if pos == -1 {
|
if pos == -1 {
|
||||||
fmt.Println("package name invalid")
|
fmt.Println("应用包名称是无效的")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
appname = packageName[pos:]
|
appname = packageName[pos:]
|
||||||
if dirname, err = os.Getwd(); err != nil {
|
if dirname, err = os.Getwd(); err != nil {
|
||||||
fmt.Println(err.Error())
|
fmt.Println("获取应用目录失败:" + err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
dirname = path.Join(dirname, appname)
|
dirname = path.Join(dirname, appname)
|
||||||
if err = os.MkdirAll(dirname, 0755); err != nil {
|
if err = os.MkdirAll(dirname, 0755); err != nil {
|
||||||
fmt.Println(err.Error())
|
fmt.Println("创建应用目录失败:" + err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
if err = downloadPackage(*versionFlag, dirname); err != nil {
|
if err = downloadPackage(*versionFlag, dirname); err != nil {
|
||||||
fmt.Println("download file error:" + err.Error())
|
fmt.Println("下载模板文件失败:" + err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
if err = replaceFiles(dirname, oldPackageName, packageName); err != nil {
|
if err = replaceFiles(dirname, oldPackageName, packageName); err != nil {
|
||||||
fmt.Println(err.Error())
|
fmt.Println("生产应用文件失败:" + err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
fmt.Println("Create project successful !!!")
|
fmt.Println("创建项目成功")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue