mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-12 16:01:27 +08:00
feat: create scaffold project
This commit is contained in:
71
internal/scaffold/main.go
Normal file
71
internal/scaffold/main.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package scaffold
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/httprunner/hrp/internal/ga"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
func CreateScaffold(projectName string) error {
|
||||
// report event
|
||||
ga.SendEvent(ga.EventTracking{
|
||||
Category: "Scaffold",
|
||||
Action: "hrp startproject",
|
||||
})
|
||||
|
||||
// check if projectName exists
|
||||
if _, err := os.Stat(projectName); err == nil {
|
||||
log.Warn().Str("projectName", projectName).
|
||||
Msg("project name already exists, please specify a new one.")
|
||||
return fmt.Errorf("project name already exists")
|
||||
}
|
||||
|
||||
log.Info().Str("projectName", projectName).Msg("create new scaffold project")
|
||||
|
||||
// create project folder
|
||||
createFolder(projectName)
|
||||
createFolder(path.Join(projectName, "har"))
|
||||
createFolder(path.Join(projectName, "testcases"))
|
||||
createFolder(path.Join(projectName, "reports"))
|
||||
|
||||
// create demo testcases
|
||||
tCase, _ := demoTestCase.ToTCase()
|
||||
err := tCase.Dump2JSON(path.Join(projectName, "testcases", "demo.json"))
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("create demo.json testcase failed")
|
||||
return err
|
||||
}
|
||||
err = tCase.Dump2YAML(path.Join(projectName, "testcases", "demo.yaml"))
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("create demo.yml testcase failed")
|
||||
return err
|
||||
}
|
||||
|
||||
createFile(path.Join(projectName, ".gitignore"), demoIgnoreContent)
|
||||
createFile(path.Join(projectName, ".env"), demoEnvContent)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func createFolder(folderPath string) error {
|
||||
log.Info().Str("folderPath", folderPath).Msg("create folder")
|
||||
err := os.MkdirAll(folderPath, os.ModePerm)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("create folder failed")
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func createFile(filePath string, data string) error {
|
||||
log.Info().Str("filePath", filePath).Msg("create file")
|
||||
err := os.WriteFile(filePath, []byte(data), 0o644)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("create file failed")
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user