Compare commits
No commits in common. "master" and "v0.0.7" have entirely different histories.
@ -2,7 +2,7 @@
|
|||||||
以golib.gaore.com/GaoreGo/hertz_demo为模板的hertz框架脚手架
|
以golib.gaore.com/GaoreGo/hertz_demo为模板的hertz框架脚手架
|
||||||
|
|
||||||
#### 安装:
|
#### 安装:
|
||||||
go install golib.gaore.com/GaoreGo/hertz_scaffold@latest
|
go install golib.gaore.com/GaoreGo/hertz_scaffold
|
||||||
|
|
||||||
|
|
||||||
#### 命令行参数:
|
#### 命令行参数:
|
||||||
@ -17,13 +17,12 @@
|
|||||||
Flags:
|
Flags:
|
||||||
-h, --help help for create
|
-h, --help help for create
|
||||||
-p, --project string 项目名称
|
-p, --project string 项目名称
|
||||||
-t, --tag string 指定tag (不指定默认拉取master)
|
|
||||||
|
|
||||||
|
|
||||||
#### 创建项目:
|
#### 创建项目:
|
||||||
hertz_scaffold create -p hertz.gaore.com
|
hertz_scaffold create -p hertz.gaore.com
|
||||||
|
|
||||||
#### 更新项目(注意,更新项目会覆盖本地项目,请谨慎操作):
|
#### 更新项目:
|
||||||
hertz_scaffold update -p hertz.gaore.com -t 1.0.0
|
hertz_scaffold update -p hertz.gaore.com (还没实现)
|
||||||
|
|
||||||
|
|
@ -10,7 +10,7 @@ import (
|
|||||||
var (
|
var (
|
||||||
template = "git@golib-ssh.gaore.com:GaoreGo/hertz_demo.git"
|
template = "git@golib-ssh.gaore.com:GaoreGo/hertz_demo.git"
|
||||||
project string
|
project string
|
||||||
branch string
|
branch = "master"
|
||||||
)
|
)
|
||||||
|
|
||||||
var rootCmd = &cobra.Command{
|
var rootCmd = &cobra.Command{
|
||||||
|
@ -16,11 +16,12 @@ var createCmd = &cobra.Command{
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleCreateCommand(args []string) {
|
func init() {
|
||||||
if projectExists(project) {
|
createCmd.Flags().StringVarP(&project, "project", "p", "", "项目名称")
|
||||||
log.Printf("Project %s already exists, use update", project)
|
createCmd.MarkFlagRequired("project")
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleCreateCommand(args []string) {
|
||||||
err := handleRemoteTemplate(template, branch, project)
|
err := handleRemoteTemplate(template, branch, project)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error creating project: %s\n", err)
|
log.Printf("Error creating project: %s\n", err)
|
||||||
@ -29,16 +30,3 @@ func handleCreateCommand(args []string) {
|
|||||||
fmt.Printf("Project %s created successfully!\n", project)
|
fmt.Printf("Project %s created successfully!\n", project)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
|
||||||
initFlags(createCmd)
|
|
||||||
}
|
|
||||||
|
|
||||||
// projectExists 检查项目路径是否已经存在
|
|
||||||
func projectExists(projectPath string) bool {
|
|
||||||
info, err := os.Stat(projectPath)
|
|
||||||
if os.IsNotExist(err) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return info.IsDir()
|
|
||||||
}
|
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/spf13/cobra"
|
|
||||||
"io"
|
"io"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"log"
|
"log"
|
||||||
@ -40,13 +38,12 @@ func handleRemoteTemplate(templateRepo, branch, projectPath string) (err error)
|
|||||||
defer os.RemoveAll(tempDir)
|
defer os.RemoveAll(tempDir)
|
||||||
|
|
||||||
// 克隆模板仓库
|
// 克隆模板仓库
|
||||||
cloneCmd := exec.Command("git", "clone", "--branch", branch, templateRepo, tempDir)
|
cloneCmd := exec.Command("git", "clone", "-b", branch, templateRepo, tempDir)
|
||||||
cloneCmd.Stdout = io.Discard
|
cloneCmd.Stdout = io.Discard
|
||||||
var stderr bytes.Buffer
|
cloneCmd.Stderr = os.Stderr
|
||||||
cloneCmd.Stderr = &stderr
|
|
||||||
|
|
||||||
if err = cloneCmd.Run(); err != nil {
|
if err = cloneCmd.Run(); err != nil {
|
||||||
return fmt.Errorf("error cloning template repository: %s\n%s", err, extractError(stderr.String()))
|
return fmt.Errorf("error cloning template repository: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return copyTemplate(tempDir, projectPath)
|
return copyTemplate(tempDir, projectPath)
|
||||||
@ -120,23 +117,3 @@ func copyAndReplaceFile(src, dist string, mode os.FileMode, replacements map[str
|
|||||||
_, err = targetFile.WriteString(newContent)
|
_, err = targetFile.WriteString(newContent)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// extractError 解析并提取实际的错误信息
|
|
||||||
func extractError(stderr string) string {
|
|
||||||
lines := strings.Split(stderr, "\n")
|
|
||||||
var errorLines []string
|
|
||||||
for _, line := range lines {
|
|
||||||
// 过滤掉非错误信息
|
|
||||||
if strings.HasPrefix(line, "fatal:") || strings.Contains(line, "error:") {
|
|
||||||
errorLines = append(errorLines, line)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return strings.Join(errorLines, "\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
// initFlags 初始化通用的命令行参数
|
|
||||||
func initFlags(cmd *cobra.Command) {
|
|
||||||
cmd.Flags().StringVarP(&project, "project", "p", "", "项目名称")
|
|
||||||
cmd.Flags().StringVarP(&branch, "tag", "t", "master", "指定tag")
|
|
||||||
cmd.MarkFlagRequired("project")
|
|
||||||
}
|
|
||||||
|
@ -3,8 +3,6 @@ package cmd
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var updateCmd = &cobra.Command{
|
var updateCmd = &cobra.Command{
|
||||||
@ -12,20 +10,6 @@ var updateCmd = &cobra.Command{
|
|||||||
Short: "更新项目",
|
Short: "更新项目",
|
||||||
Long: `Update the current project`,
|
Long: `Update the current project`,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
handleUpdateCommand(args)
|
fmt.Println("还没做")
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
|
||||||
initFlags(updateCmd)
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleUpdateCommand(args []string) {
|
|
||||||
err := handleRemoteTemplate(template, branch, project)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Error update project: %s\n", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
fmt.Printf("Project %s update successfully!\n", project)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user