first commit
This commit is contained in:
parent
a553917c10
commit
dcd6422c3b
|
@ -28,3 +28,9 @@ coverage
|
|||
*.sw?
|
||||
|
||||
*.tsbuildinfo
|
||||
|
||||
/storage
|
||||
|
||||
/app
|
||||
|
||||
/.idea
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
<module type="WEB_MODULE" version="4">
|
||||
<component name="Go" enabled="true" />
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/dist" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
|
|
|
@ -2,5 +2,6 @@
|
|||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/http/middleware/cors" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
|
@ -18,5 +18,5 @@ func Demo(c *gin.Context) {
|
|||
log := c.MustMake(contract.LogKey).(contract.Log)
|
||||
password := configService.GetString("database.mysql.password")
|
||||
log.Info(c, "ceshiceshi", map[string]interface{}{})
|
||||
c.JSON(200, password+"测123")
|
||||
c.JSON(200, password+"后端测试222")
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ dev_fresh: 1
|
|||
dev: # 调试模式
|
||||
port: 8888 # 调试模式最终监听的端口,默认为8070
|
||||
backend: # 后端调试模式配置
|
||||
refresh_time: 3 # 调试模式后端更新时间,如果文件变更,等待3s才进行一次更新,能让频繁保存变更更为顺畅, 默认1s
|
||||
refresh_time: 1 # 调试模式后端更新时间,如果文件变更,等待3s才进行一次更新,能让频繁保存变更更为顺畅, 默认1s
|
||||
port: 8890 # 后端监听端口,默认8072
|
||||
monitor_folder: "" # 监听文件夹地址,为空或者不填默认为AppFolder
|
||||
frontend: # 前端调试模式配置
|
||||
|
|
|
@ -4,9 +4,7 @@ import (
|
|||
"fmt"
|
||||
"github.com/Superdanda/hade/framework/cobra"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
|
@ -21,14 +19,6 @@ func initBuildCommand() *cobra.Command {
|
|||
var buildSelfCommand = &cobra.Command{
|
||||
Use: "self",
|
||||
Short: "编译hade命令",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
return goCommand.RunE(c, []string{"build"})
|
||||
},
|
||||
}
|
||||
|
||||
var buildBackendCommand = &cobra.Command{
|
||||
Use: "backend",
|
||||
Short: "使用go编译后端",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
path, err := exec.LookPath("go")
|
||||
if err != nil {
|
||||
|
@ -37,27 +27,15 @@ var buildBackendCommand = &cobra.Command{
|
|||
|
||||
// 根据系统设置输出文件名
|
||||
output := "hade"
|
||||
env := []string{}
|
||||
if runtime.GOOS == "windows" {
|
||||
output += ".exe"
|
||||
}
|
||||
|
||||
// 指定输出目录
|
||||
outputDir := filepath.Join(".")
|
||||
err = os.MkdirAll(outputDir, 0755)
|
||||
if err != nil {
|
||||
return fmt.Errorf("无法创建输出目录: %v", err)
|
||||
}
|
||||
|
||||
// 设置工作目录(避免权限问题)
|
||||
tempDir := filepath.Join(outputDir, "go-temp")
|
||||
err = os.MkdirAll(tempDir, 0755)
|
||||
if err != nil {
|
||||
return fmt.Errorf("无法创建临时目录: %v", err)
|
||||
//env = append(env, "GOOS=windows", "GOARCH=amd64")
|
||||
}
|
||||
|
||||
// 构建命令,设置环境变量
|
||||
cmd := exec.Command(path, "build", "-o", filepath.Join(outputDir, output), "./")
|
||||
cmd.Env = append(os.Environ(), "GOTMPDIR="+tempDir) // 设置临时目录
|
||||
cmd := exec.Command(path, "build", "-o", output, "./")
|
||||
cmd.Env = append(cmd.Env, env...) // 追加环境变量
|
||||
|
||||
// 执行编译命令并获取输出
|
||||
out, err := cmd.CombinedOutput()
|
||||
|
@ -73,6 +51,14 @@ var buildBackendCommand = &cobra.Command{
|
|||
},
|
||||
}
|
||||
|
||||
var buildBackendCommand = &cobra.Command{
|
||||
Use: "backend",
|
||||
Short: "使用go编译后端",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
return buildSelfCommand.RunE(c, args)
|
||||
},
|
||||
}
|
||||
|
||||
var buildCommand = &cobra.Command{
|
||||
Use: "build",
|
||||
Short: "编译相关命令",
|
||||
|
|
|
@ -0,0 +1,148 @@
|
|||
package command
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/AlecAivazis/survey/v2"
|
||||
"github.com/Superdanda/hade/framework/cobra"
|
||||
"github.com/Superdanda/hade/framework/contract"
|
||||
"github.com/Superdanda/hade/framework/util"
|
||||
"github.com/jianfengye/collection"
|
||||
"github.com/pkg/errors"
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
"html/template"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func initCmdCommand() *cobra.Command {
|
||||
CmdCommand.AddCommand(cmdListCommand)
|
||||
CmdCommand.AddCommand(cmdNewCommand)
|
||||
return CmdCommand
|
||||
}
|
||||
|
||||
var CmdCommand = &cobra.Command{
|
||||
Use: "command",
|
||||
Short: "显示帮助信息",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
if len(args) == 0 {
|
||||
c.Help()
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var cmdListCommand = &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "列出所有控制台命令",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
cmds := c.Root().Commands()
|
||||
ps := [][]string{}
|
||||
for _, cmd := range cmds {
|
||||
line := []string{cmd.Name(), cmd.Short}
|
||||
ps = append(ps, line)
|
||||
}
|
||||
util.PrettyPrint(ps)
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var cmdNewCommand = &cobra.Command{
|
||||
Use: "new",
|
||||
Aliases: []string{"create", "init"}, // 设置别名为 create init
|
||||
Short: "创建一个控制台命令",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
container := c.GetContainer()
|
||||
|
||||
fmt.Println("开始创建控制台命令...")
|
||||
var name string
|
||||
var folder string
|
||||
{
|
||||
prompt := &survey.Input{
|
||||
Message: "请输入控制台命令名称:",
|
||||
}
|
||||
err := survey.AskOne(prompt, &name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
prompt := &survey.Input{
|
||||
Message: "请输入文件夹名称(默认: 同控制台命令):",
|
||||
}
|
||||
err := survey.AskOne(prompt, &folder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if folder == "" {
|
||||
folder = name
|
||||
}
|
||||
|
||||
app := container.MustMake(contract.AppKey).(contract.App)
|
||||
|
||||
pFolder := app.CommandFolder()
|
||||
subFolders, err := util.SubDir(pFolder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if collection.NewStrCollection(subFolders).Contains(folder) {
|
||||
fmt.Println("目录名称已经存在")
|
||||
return nil
|
||||
}
|
||||
|
||||
if err = os.Mkdir(filepath.Join(pFolder, folder), 0700); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
titleCase := cases.Title(language.English)
|
||||
funcMap := template.FuncMap{
|
||||
"title": func(s string) string {
|
||||
return titleCase.String(s)
|
||||
},
|
||||
}
|
||||
{
|
||||
// 创建name.go
|
||||
file := filepath.Join(pFolder, folder, name+".go")
|
||||
f, err := os.Create(file)
|
||||
if err != nil {
|
||||
return errors.Cause(err)
|
||||
}
|
||||
|
||||
// 使用contractTmp模版来初始化template,并且让这个模版支持title方法,即支持{{.|title}}
|
||||
t := template.Must(template.New("cmd").Funcs(funcMap).Parse(cmdTmpl))
|
||||
// 将name传递进入到template中渲染,并且输出到contract.go 中
|
||||
if err := t.Execute(f, name); err != nil {
|
||||
return errors.Cause(err)
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("创建新命令行工具成功,路径:", filepath.Join(pFolder, folder))
|
||||
fmt.Println("请记得开发完成后将命令行工具挂载到 console/kernel.go")
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
// 命令行工具模版
|
||||
var cmdTmpl = `package {{.}}
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/Superdanda/hade/framework/cobra"
|
||||
)
|
||||
|
||||
var {{.|title}}Command = &cobra.Command{
|
||||
Use: "{{.}}",
|
||||
Short: "{{.}}",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
container := c.GetContainer()
|
||||
fmt.Println(container)
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
`
|
|
@ -14,6 +14,9 @@ func AddKernelCommands(root *cobra.Command) {
|
|||
root.AddCommand(initEnvCommand())
|
||||
root.AddCommand(initBuildCommand())
|
||||
root.AddCommand(initDevCommand())
|
||||
root.AddCommand(initProviderCommand())
|
||||
root.AddCommand(initCmdCommand())
|
||||
root.AddCommand(initMiddlewareCommand())
|
||||
}
|
||||
|
||||
// 封装通用的命令执行器
|
||||
|
|
|
@ -0,0 +1,214 @@
|
|||
package command
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/AlecAivazis/survey/v2"
|
||||
"github.com/Superdanda/hade/framework/cobra"
|
||||
"github.com/Superdanda/hade/framework/contract"
|
||||
"github.com/Superdanda/hade/framework/util"
|
||||
"github.com/go-git/go-git/v5"
|
||||
"github.com/jianfengye/collection"
|
||||
"github.com/pkg/errors"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
// 初始化中间件相关命令
|
||||
func initMiddlewareCommand() *cobra.Command {
|
||||
middlewareCommand.AddCommand(middlewareAllCommand)
|
||||
middlewareCommand.AddCommand(middlewareMigrateCommand)
|
||||
middlewareCommand.AddCommand(middlewareCreateCommand)
|
||||
return middlewareCommand
|
||||
}
|
||||
|
||||
// middlewareCommand 中间件二级命令
|
||||
var middlewareCommand = &cobra.Command{
|
||||
Use: "middleware",
|
||||
Short: "中间件相关命令",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
if len(args) == 0 {
|
||||
c.Help()
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
// middlewareAllCommand 显示所有安装的中间件
|
||||
var middlewareAllCommand = &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "显示所有中间件",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
container := c.GetContainer()
|
||||
appService := container.MustMake(contract.AppKey).(contract.App)
|
||||
|
||||
middlewarePath := path.Join(appService.BaseFolder(), "app", "http", "middleware")
|
||||
|
||||
// 读取文件夹
|
||||
files, err := ioutil.ReadDir(middlewarePath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, f := range files {
|
||||
if f.IsDir() {
|
||||
fmt.Println(f.Name())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var middlewareMigrateCommand = &cobra.Command{
|
||||
Use: "migrate",
|
||||
Short: "迁移gin-contrib中间件, 迁移地址:https://github.com/gin-contrib/[middleware].git",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
container := c.GetContainer()
|
||||
fmt.Println("迁移一个Gin中间件")
|
||||
var repo string
|
||||
{
|
||||
prompt := &survey.Input{
|
||||
Message: "请输入中间件名称:",
|
||||
}
|
||||
err := survey.AskOne(prompt, &repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
// step2 : 下载git到一个目录中
|
||||
appService := container.MustMake(contract.AppKey).(contract.App)
|
||||
|
||||
middlewarePath := appService.MiddlewareFolder()
|
||||
url := "https://github.com/gin-contrib/" + repo + ".git"
|
||||
fmt.Println("下载中间件 gin-contrib:")
|
||||
fmt.Println(url)
|
||||
_, err := git.PlainClone(path.Join(middlewarePath, repo), false, &git.CloneOptions{
|
||||
URL: url,
|
||||
Progress: os.Stdout,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// step3:删除不必要的文件 go.mod, go.sum, .git
|
||||
repoFolder := path.Join(middlewarePath, repo)
|
||||
fmt.Println("remove " + path.Join(repoFolder, "go.mod"))
|
||||
os.Remove(path.Join(repoFolder, "go.mod"))
|
||||
fmt.Println("remove " + path.Join(repoFolder, "go.sum"))
|
||||
os.Remove(path.Join(repoFolder, "go.sum"))
|
||||
fmt.Println("remove " + path.Join(repoFolder, ".git"))
|
||||
os.RemoveAll(path.Join(repoFolder, ".git"))
|
||||
|
||||
// step4 : 替换关键词
|
||||
filepath.Walk(repoFolder, func(path string, info os.FileInfo, err error) error {
|
||||
if info.IsDir() {
|
||||
return nil
|
||||
}
|
||||
|
||||
if filepath.Ext(path) != ".go" {
|
||||
return nil
|
||||
}
|
||||
|
||||
c, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
isContain := bytes.Contains(c, []byte("github.com/gin-gonic/gin"))
|
||||
if isContain {
|
||||
fmt.Println("更新文件:" + path)
|
||||
c = bytes.ReplaceAll(c, []byte("github.com/gin-gonic/gin"), []byte("github.com/Superdanda/hade/framework/gin"))
|
||||
err = ioutil.WriteFile(path, c, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var middlewareCreateCommand = &cobra.Command{
|
||||
Use: "new",
|
||||
Aliases: []string{"create", "init"},
|
||||
Short: "创建一个中间件",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
container := c.GetContainer()
|
||||
fmt.Println("创建一个中间件")
|
||||
var name string
|
||||
var folder string
|
||||
{
|
||||
prompt := &survey.Input{
|
||||
Message: "请输入中间件名称:",
|
||||
}
|
||||
err := survey.AskOne(prompt, &name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
{
|
||||
prompt := &survey.Input{
|
||||
Message: "请输入中间件所在目录名称(默认: 同中间件名称):",
|
||||
}
|
||||
err := survey.AskOne(prompt, &folder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if folder == "" {
|
||||
folder = name
|
||||
}
|
||||
|
||||
app := container.MustMake(contract.AppKey).(contract.App)
|
||||
|
||||
pFolder := app.MiddlewareFolder()
|
||||
subFolders, err := util.SubDir(pFolder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
subColl := collection.NewStrCollection(subFolders)
|
||||
if subColl.Contains(folder) {
|
||||
fmt.Println("目录已经存在")
|
||||
return nil
|
||||
}
|
||||
|
||||
// 开始创建文件
|
||||
if err := os.Mkdir(filepath.Join(pFolder, folder), 0700); err != nil {
|
||||
return err
|
||||
}
|
||||
funcs := template.FuncMap{"title": strings.Title}
|
||||
{
|
||||
// 创建
|
||||
file := filepath.Join(pFolder, folder, "middleware.go")
|
||||
f, err := os.Create(file)
|
||||
if err != nil {
|
||||
return errors.Cause(err)
|
||||
}
|
||||
|
||||
t := template.Must(template.New("middleware").Funcs(funcs).Parse(middlewareTmp))
|
||||
if err := t.Execute(f, name); err != nil {
|
||||
return errors.Cause(err)
|
||||
}
|
||||
}
|
||||
fmt.Println("创建中间件成功, 文件夹地址:", filepath.Join(pFolder, folder))
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var middlewareTmp = `package {{.}}
|
||||
|
||||
import "github.com/gohade/hade/framework/gin"
|
||||
|
||||
// {{.|title}}Middleware 代表中间件函数
|
||||
func {{.|title}}Middleware() gin.HandlerFunc {
|
||||
return func(context *gin.Context) {
|
||||
context.Next()
|
||||
}
|
||||
}
|
||||
|
||||
`
|
|
@ -0,0 +1,215 @@
|
|||
package command
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/AlecAivazis/survey/v2"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/Superdanda/hade/framework"
|
||||
"github.com/Superdanda/hade/framework/cobra"
|
||||
"github.com/Superdanda/hade/framework/contract"
|
||||
"github.com/Superdanda/hade/framework/util"
|
||||
|
||||
"github.com/jianfengye/collection"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func initProviderCommand() *cobra.Command {
|
||||
providerCommand.AddCommand(providerCreateCommand)
|
||||
providerCommand.AddCommand(providerListCommand)
|
||||
return providerCommand
|
||||
}
|
||||
|
||||
var providerCommand = &cobra.Command{
|
||||
Use: "provider",
|
||||
Short: "服务相关命令",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
if len(args) == 0 {
|
||||
c.Help()
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var providerListCommand = &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "列出容器内的所有服务,列出它们的字符串凭证",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
container := c.GetContainer()
|
||||
nameList := container.NameList()
|
||||
// 打印
|
||||
for _, line := range nameList {
|
||||
println(line)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var providerCreateCommand = &cobra.Command{
|
||||
Use: "create",
|
||||
Aliases: []string{"create", "init"},
|
||||
Short: "创建服务",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
container := c.GetContainer()
|
||||
fmt.Println("创建一个服务")
|
||||
var name string
|
||||
var folder string
|
||||
{
|
||||
prompt := &survey.Input{
|
||||
Message: "请输入服务名称(服务凭证):",
|
||||
}
|
||||
err := survey.AskOne(prompt, &name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
{
|
||||
prompt := &survey.Input{
|
||||
Message: "请输入服务所在目录名称(默认: 同服务名称):",
|
||||
}
|
||||
err := survey.AskOne(prompt, &folder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 检查服务是否存在
|
||||
providers := container.(*framework.HadeContainer).NameList()
|
||||
providerColl := collection.NewStrCollection(providers)
|
||||
if providerColl.Contains(name) {
|
||||
fmt.Println("服务名称已经存在")
|
||||
return nil
|
||||
}
|
||||
|
||||
if folder == "" {
|
||||
folder = name
|
||||
}
|
||||
|
||||
app := container.MustMake(contract.AppKey).(contract.App)
|
||||
|
||||
pFolder := app.ProviderFolder()
|
||||
subFolders, err := util.SubDir(pFolder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
subColl := collection.NewStrCollection(subFolders)
|
||||
if subColl.Contains(folder) {
|
||||
fmt.Println("目录名称已经存在")
|
||||
return nil
|
||||
}
|
||||
|
||||
// 开始创建文件
|
||||
if err := os.Mkdir(filepath.Join(pFolder, folder), 0700); err != nil {
|
||||
return err
|
||||
}
|
||||
// 创建title这个模版方法
|
||||
funcs := template.FuncMap{"title": strings.Title}
|
||||
{
|
||||
// 创建contract.go
|
||||
file := filepath.Join(pFolder, folder, "contract.go")
|
||||
f, err := os.Create(file)
|
||||
if err != nil {
|
||||
return errors.Cause(err)
|
||||
}
|
||||
|
||||
// 使用contractTmp模版来初始化template,并且让这个模版支持title方法,即支持{{.|title}}
|
||||
t := template.Must(template.New("contract").Funcs(funcs).Parse(contractTmp))
|
||||
// 将name传递进入到template中渲染,并且输出到contract.go 中
|
||||
if err := t.Execute(f, name); err != nil {
|
||||
return errors.Cause(err)
|
||||
}
|
||||
}
|
||||
{
|
||||
// 创建provider.go
|
||||
file := filepath.Join(pFolder, folder, "provider.go")
|
||||
f, err := os.Create(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
t := template.Must(template.New("provider").Funcs(funcs).Parse(providerTmp))
|
||||
if err := t.Execute(f, name); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
{
|
||||
// 创建service.go
|
||||
file := filepath.Join(pFolder, folder, "service.go")
|
||||
f, err := os.Create(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
t := template.Must(template.New("service").Funcs(funcs).Parse(serviceTmp))
|
||||
if err := t.Execute(f, name); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
fmt.Println("创建服务成功, 文件夹地址:", filepath.Join(pFolder, folder))
|
||||
fmt.Println("请不要忘记挂载新创建的服务")
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var contractTmp = `package {{.}}
|
||||
|
||||
const {{.|title}}Key = "{{.}}"
|
||||
|
||||
type Service interface {
|
||||
// 请在这里定义你的方法
|
||||
Foo() string
|
||||
}
|
||||
`
|
||||
|
||||
var providerTmp = `package {{.}}
|
||||
|
||||
import (
|
||||
"github.com/Superdanda/hade/framework"
|
||||
)
|
||||
|
||||
type {{.|title}}Provider struct {
|
||||
framework.ServiceProvider
|
||||
|
||||
c framework.Container
|
||||
}
|
||||
|
||||
func (sp *{{.|title}}Provider) Name() string {
|
||||
return {{.|title}}Key
|
||||
}
|
||||
|
||||
func (sp *{{.|title}}Provider) Register(c framework.Container) framework.NewInstance {
|
||||
return New{{.|title}}Service
|
||||
}
|
||||
|
||||
func (sp *{{.|title}}Provider) IsDefer() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (sp *{{.|title}}Provider) Params(c framework.Container) []interface{} {
|
||||
return []interface{}{c}
|
||||
}
|
||||
|
||||
func (sp *{{.|title}}Provider) Boot(c framework.Container) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
`
|
||||
|
||||
var serviceTmp = `package {{.}}
|
||||
|
||||
import "github.com/Superdanda/hade/framework"
|
||||
|
||||
type {{.|title}}Service struct {
|
||||
container framework.Container
|
||||
}
|
||||
|
||||
func New{{.|title}}Service(params ...interface{}) (interface{}, error) {
|
||||
container := params[0].(framework.Container)
|
||||
return &{{.|title}}Service{container: container}, nil
|
||||
}
|
||||
|
||||
func (s *{{.|title}}Service) Foo() string {
|
||||
return ""
|
||||
}
|
||||
`
|
|
@ -24,6 +24,9 @@ type Container interface {
|
|||
//它是根据服务提供者注册的启动函数和传递的 params 参数实例化出来的
|
||||
//这个函数在需要为不同参数启动不同实例的时候非常有用
|
||||
MakeNew(key string, params []interface{}) (interface{}, error)
|
||||
|
||||
//NameList 返回所有提供服务者的字符串凭证
|
||||
NameList() []string
|
||||
}
|
||||
|
||||
type HadeContainer struct {
|
||||
|
@ -89,6 +92,15 @@ func (h *HadeContainer) MakeNew(key string, params []interface{}) (interface{},
|
|||
return h.make(key, params, true)
|
||||
}
|
||||
|
||||
func (h *HadeContainer) NameList() []string {
|
||||
ret := []string{}
|
||||
for _, provider := range h.providers {
|
||||
name := provider.Name()
|
||||
ret = append(ret, name)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func (h *HadeContainer) make(key string, params []interface{}, forceNew bool) (interface{}, error) {
|
||||
provider, err := h.findServiceProvider(key)
|
||||
if err != nil {
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package contract
|
||||
|
||||
const IDKey = "hade:id"
|
||||
|
||||
type IDService interface {
|
||||
NewID() string
|
||||
}
|
|
@ -61,7 +61,7 @@ func (h HadeApp) LogFolder() string {
|
|||
}
|
||||
|
||||
func (h HadeApp) ProviderFolder() string {
|
||||
return filepath.Join(h.BaseFolder(), "provider")
|
||||
return filepath.Join(h.AppFolder(), "provider")
|
||||
}
|
||||
|
||||
func (h HadeApp) MiddlewareFolder() string {
|
||||
|
@ -85,7 +85,7 @@ func (h HadeApp) HttpFolder() string {
|
|||
}
|
||||
|
||||
func (h HadeApp) ConsoleFolder() string {
|
||||
return filepath.Join(h.BaseFolder(), "console")
|
||||
return filepath.Join(h.AppFolder(), "console")
|
||||
}
|
||||
|
||||
func (h HadeApp) AppFolder() string {
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package id
|
||||
|
||||
import "github.com/Superdanda/hade/framework"
|
||||
|
||||
type HadeIDProvider struct {
|
||||
}
|
||||
|
||||
func (h HadeIDProvider) Register(container framework.Container) framework.NewInstance {
|
||||
return NewHadeIDService
|
||||
}
|
||||
|
||||
func (h HadeIDProvider) Boot(container framework.Container) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h HadeIDProvider) IsDefer() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (h HadeIDProvider) Params(container framework.Container) []interface{} {
|
||||
return []interface{}{}
|
||||
}
|
||||
|
||||
func (h HadeIDProvider) Name() string {
|
||||
return contract.IDKey
|
||||
}
|
|
@ -8,6 +8,7 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
|
||||
|
@ -56,9 +57,20 @@ func NewHadeRotateLog(params ...interface{}) (interface{}, error) {
|
|||
dateFormat = configService.GetString("log.date_format")
|
||||
}
|
||||
|
||||
// 创建一个符号链接,指向当前正在写入的日志文件
|
||||
linkName := rotatelogs.WithLinkName(filepath.Join(folder, file))
|
||||
options := []rotatelogs.Option{linkName}
|
||||
// 创建 rotatelogs 配置选项
|
||||
var options []rotatelogs.Option
|
||||
|
||||
// 检查操作系统,避免在 Windows 上创建符号链接
|
||||
if runtime.GOOS != "windows" {
|
||||
// 创建一个符号链接,指向当前正在写入的日志文件
|
||||
linkName := rotatelogs.WithLinkName(filepath.Join(folder, file))
|
||||
options = append(options, linkName)
|
||||
} else {
|
||||
// Windows 下的替代方案(可选):不创建符号链接或其他处理方式
|
||||
// 可以在此添加 Windows 特定的处理,例如创建硬链接或直接忽略
|
||||
// 这里我们选择不添加 linkName 选项
|
||||
//fmt.Println("Windows 系统下不创建符号链接")
|
||||
}
|
||||
|
||||
// 从配置文件获取rotate_count信息
|
||||
if configService.IsExist("log.rotate_count") {
|
||||
|
|
40
go.mod
40
go.mod
|
@ -3,21 +3,47 @@ module github.com/Superdanda/hade
|
|||
go 1.23.2
|
||||
|
||||
require (
|
||||
github.com/AlecAivazis/survey/v2 v2.3.7
|
||||
github.com/fsnotify/fsnotify v1.7.0
|
||||
github.com/gofrs/flock v0.12.1
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/jianfengye/collection v1.4.2
|
||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
||||
github.com/mitchellh/mapstructure v1.5.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/robfig/cron/v3 v3.0.0
|
||||
github.com/sevlyar/go-daemon v0.1.6
|
||||
github.com/spf13/cast v1.7.0
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
github.com/gofrs/flock v0.12.1 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
dario.cat/mergo v1.0.0 // indirect
|
||||
github.com/Microsoft/go-winio v0.6.1 // indirect
|
||||
github.com/ProtonMail/go-crypto v1.0.0 // indirect
|
||||
github.com/cloudflare/circl v1.3.7 // indirect
|
||||
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
|
||||
github.com/emirpasic/gods v1.18.1 // indirect
|
||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
||||
github.com/go-git/go-billy/v5 v5.5.0 // indirect
|
||||
github.com/go-git/go-git/v5 v5.12.0 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
||||
github.com/jonboulle/clockwork v0.4.0 // indirect
|
||||
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
|
||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible // indirect
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
||||
github.com/kevinburke/ssh_config v1.2.0 // indirect
|
||||
github.com/lestrrat-go/strftime v1.1.0 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/mattn/go-colorable v0.1.2 // indirect
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect
|
||||
github.com/pjbgf/sha1cd v0.3.0 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
||||
github.com/skeema/knownhosts v1.2.2 // indirect
|
||||
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||
golang.org/x/mod v0.12.0 // indirect
|
||||
golang.org/x/term v0.20.0 // indirect
|
||||
golang.org/x/tools v0.13.0 // indirect
|
||||
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||
)
|
||||
|
||||
//gin
|
||||
|
@ -54,7 +80,7 @@ require (
|
|||
golang.org/x/arch v0.8.0 // indirect
|
||||
golang.org/x/crypto v0.23.0 // indirect
|
||||
golang.org/x/sys v0.22.0 // indirect
|
||||
golang.org/x/text v0.15.0 // indirect
|
||||
golang.org/x/text v0.15.0
|
||||
)
|
||||
|
||||
//codra
|
||||
|
|
127
go.sum
127
go.sum
|
@ -1,16 +1,37 @@
|
|||
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
|
||||
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
|
||||
github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ=
|
||||
github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo=
|
||||
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
|
||||
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
|
||||
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
|
||||
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s=
|
||||
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
|
||||
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
|
||||
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
|
||||
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
|
||||
github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=
|
||||
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
|
||||
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
|
||||
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
|
||||
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
|
||||
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
|
||||
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
|
||||
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
|
||||
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
|
||||
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
|
||||
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||
github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI=
|
||||
github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
|
||||
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
|
||||
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
||||
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
|
||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
|
||||
|
@ -19,6 +40,12 @@ github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uq
|
|||
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
|
||||
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
||||
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
|
||||
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
|
||||
github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys=
|
||||
github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY=
|
||||
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
||||
|
@ -31,33 +58,58 @@ github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
|||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||
github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=
|
||||
github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog=
|
||||
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
|
||||
github.com/jianfengye/collection v1.4.2 h1:8uzX8bM3OrQdfPYmg4eXvFNo1ZeeqdvNoKSvAksNJY4=
|
||||
github.com/jianfengye/collection v1.4.2/go.mod h1:Oi7o4E0BF3Z8K8ql/Aa/O10/4ooirgGw+8JLQe+O3lQ=
|
||||
github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4=
|
||||
github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
|
||||
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
|
||||
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
|
||||
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
|
||||
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
|
||||
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
|
||||
github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8=
|
||||
github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is=
|
||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4=
|
||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA=
|
||||
github.com/lestrrat-go/strftime v1.1.0 h1:gMESpZy44/4pXLO/m+sL0yBd1W6LjgjrrD4a68Gapyg=
|
||||
github.com/lestrrat-go/strftime v1.1.0/go.mod h1:uzeIB52CeUJenCo1syghlugshMysrqUT51HlxphXVeI=
|
||||
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
|
||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
|
@ -67,6 +119,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
|
|||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
||||
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
|
||||
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
|
@ -75,10 +129,16 @@ github.com/robfig/cron/v3 v3.0.0 h1:kQ6Cb7aHOHTSzNVNEhmp8EcWKLb4CbiMW9h9VyIhO4E=
|
|||
github.com/robfig/cron/v3 v3.0.0/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
|
||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||
github.com/sevlyar/go-daemon v0.1.6 h1:EUh1MDjEM4BI109Jign0EaknA2izkOyi0LV3ro3QQGs=
|
||||
github.com/sevlyar/go-daemon v0.1.6/go.mod h1:6dJpPatBT9eUwM5VCw9Bt6CdX9Tk6UWvhW3MebLDRKE=
|
||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A=
|
||||
github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
|
||||
github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
|
||||
github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
|
@ -87,7 +147,10 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
|||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
|
@ -99,26 +162,84 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS
|
|||
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
|
||||
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
|
||||
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
|
||||
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
|
||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
|
||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
|
||||
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
|
||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
|
||||
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||
golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
|
||||
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
|
||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
|
||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
|
||||
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
|
||||
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
|
|
|
@ -8,7 +8,7 @@ import HelloWorld from './components/HelloWorld.vue'
|
|||
<img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
|
||||
|
||||
<div class="wrapper">
|
||||
<HelloWorld msg="You did 12312312312" />
|
||||
<HelloWorld msg="You did 前端测试" />
|
||||
|
||||
<nav>
|
||||
<RouterLink to="/">Home</RouterLink>
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
[Info] 2024-10-22T09:12:51+08:00 "ceshiceshi" map[]
|
|
@ -1 +0,0 @@
|
|||
[Info] 2024-10-22T10:25:46+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T10:26:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:26:58+08:00 "ceshiceshi" map[]
|
|
@ -1,11 +0,0 @@
|
|||
[Info] 2024-10-22T10:27:00+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:01+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:01+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:02+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:02+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:27:06+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T10:41:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:41:33+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T10:43:26+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:43:27+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T10:55:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:55:23+08:00 "ceshiceshi" map[]
|
|
@ -1,4 +0,0 @@
|
|||
[Info] 2024-10-22T10:56:22+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:56:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:56:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T10:56:33+08:00 "ceshiceshi" map[]
|
|
@ -1,6 +0,0 @@
|
|||
[Info] 2024-10-22T12:40:24+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:40:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:40:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:40:55+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:40:56+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:40:57+08:00 "ceshiceshi" map[]
|
|
@ -1,3 +0,0 @@
|
|||
[Info] 2024-10-22T12:41:39+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:41:41+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:41:42+08:00 "ceshiceshi" map[]
|
|
@ -1,6 +0,0 @@
|
|||
[Info] 2024-10-22T12:42:02+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:42:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:42:09+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:42:10+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:42:10+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:42:11+08:00 "ceshiceshi" map[]
|
|
@ -1,3 +0,0 @@
|
|||
[Info] 2024-10-22T12:43:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:43:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:43:05+08:00 "ceshiceshi" map[]
|
|
@ -1 +0,0 @@
|
|||
[Info] 2024-10-22T12:45:08+08:00 "ceshiceshi" map[]
|
|
@ -1,5 +0,0 @@
|
|||
[Info] 2024-10-22T12:52:16+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:52:17+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:52:18+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:52:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:52:20+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T12:53:15+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:53:17+08:00 "ceshiceshi" map[]
|
|
@ -1,5 +0,0 @@
|
|||
[Info] 2024-10-22T12:54:11+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:54:49+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:54:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:54:51+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:54:51+08:00 "ceshiceshi" map[]
|
|
@ -1,5 +0,0 @@
|
|||
[Info] 2024-10-22T12:56:47+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:56:48+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:56:49+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:56:51+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:56:52+08:00 "ceshiceshi" map[]
|
|
@ -1,7 +0,0 @@
|
|||
[Info] 2024-10-22T12:57:12+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:57:13+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:57:14+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:57:15+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:57:15+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:57:16+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:57:17+08:00 "ceshiceshi" map[]
|
|
@ -1,4 +0,0 @@
|
|||
[Info] 2024-10-22T12:58:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:58:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:58:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T12:58:07+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T13:00:02+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T13:00:05+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T13:12:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T13:12:50+08:00 "ceshiceshi" map[]
|
|
@ -1,3 +0,0 @@
|
|||
[Info] 2024-10-22T14:18:21+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:18:24+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:18:25+08:00 "ceshiceshi" map[]
|
|
@ -1,3 +0,0 @@
|
|||
[Info] 2024-10-22T14:19:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:19:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:19:06+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T14:26:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:26:05+08:00 "ceshiceshi" map[]
|
|
@ -1,4 +0,0 @@
|
|||
[Info] 2024-10-22T14:27:08+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:27:52+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:27:52+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:27:53+08:00 "ceshiceshi" map[]
|
|
@ -1,8 +0,0 @@
|
|||
[Info] 2024-10-22T14:39:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:39:24+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:39:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:39:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:39:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:39:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:39:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:39:48+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T14:40:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:40:39+08:00 "ceshiceshi" map[]
|
|
@ -1,10 +0,0 @@
|
|||
[Info] 2024-10-22T14:41:00+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:01+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:02+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:02+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:17+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:41:19+08:00 "ceshiceshi" map[]
|
|
@ -1 +0,0 @@
|
|||
[Info] 2024-10-22T14:43:19+08:00 "ceshiceshi" map[]
|
|
@ -1 +0,0 @@
|
|||
[Info] 2024-10-22T14:49:03+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T14:50:54+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:50:55+08:00 "ceshiceshi" map[]
|
|
@ -1,6 +0,0 @@
|
|||
[Info] 2024-10-22T14:52:42+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:52:43+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:52:44+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:52:45+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:52:53+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:52:53+08:00 "ceshiceshi" map[]
|
|
@ -1,11 +0,0 @@
|
|||
[Info] 2024-10-22T14:53:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:29+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:47+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:48+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:48+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:49+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:51+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:53:54+08:00 "ceshiceshi" map[]
|
|
@ -1,16 +0,0 @@
|
|||
[Info] 2024-10-22T14:54:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:06+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:06+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:07+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:10+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:12+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:18+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:20+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:20+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:21+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:21+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:22+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:54:23+08:00 "ceshiceshi" map[]
|
|
@ -1,12 +0,0 @@
|
|||
[Info] 2024-10-22T14:56:22+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:24+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:29+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:56:32+08:00 "ceshiceshi" map[]
|
|
@ -1,7 +0,0 @@
|
|||
[Info] 2024-10-22T14:57:14+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:57:15+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:57:16+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:57:17+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:57:35+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:57:36+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:57:36+08:00 "ceshiceshi" map[]
|
|
@ -1,3 +0,0 @@
|
|||
[Info] 2024-10-22T14:59:09+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:59:10+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T14:59:10+08:00 "ceshiceshi" map[]
|
|
@ -1,6 +0,0 @@
|
|||
[Info] 2024-10-22T15:05:47+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:05:47+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:05:49+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:05:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:05:54+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:05:57+08:00 "ceshiceshi" map[]
|
|
@ -1,6 +0,0 @@
|
|||
[Info] 2024-10-22T15:06:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:06:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:06:26+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:06:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:06:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:06:28+08:00 "ceshiceshi" map[]
|
|
@ -1,5 +0,0 @@
|
|||
[Info] 2024-10-22T15:08:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:08:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:08:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:08:20+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:08:21+08:00 "ceshiceshi" map[]
|
|
@ -1,4 +0,0 @@
|
|||
[Info] 2024-10-22T15:11:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:11:34+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:11:35+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:11:36+08:00 "ceshiceshi" map[]
|
|
@ -1,9 +0,0 @@
|
|||
[Info] 2024-10-22T15:13:46+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:13:47+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:13:48+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:13:49+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:13:49+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:13:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:13:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:13:51+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:13:51+08:00 "ceshiceshi" map[]
|
|
@ -1,6 +0,0 @@
|
|||
[Info] 2024-10-22T15:15:37+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:15:39+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:15:40+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:15:41+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:15:41+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:15:42+08:00 "ceshiceshi" map[]
|
|
@ -1,22 +0,0 @@
|
|||
[Info] 2024-10-22T15:16:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:28+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:34+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:34+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:35+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:35+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:36+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:36+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:37+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:37+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:38+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:38+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:39+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:39+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:16:58+08:00 "ceshiceshi" map[]
|
|
@ -1,36 +0,0 @@
|
|||
[Info] 2024-10-22T15:17:08+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:09+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:09+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:10+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:11+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:15+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:18+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:19+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:20+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:21+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:21+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:22+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:22+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:24+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:24+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:26+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:28+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:29+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:34+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:34+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:17:35+08:00 "ceshiceshi" map[]
|
|
@ -1,9 +0,0 @@
|
|||
[Info] 2024-10-22T15:23:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:23:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:23:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:23:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:23:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:23:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:23:34+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:23:34+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:23:35+08:00 "ceshiceshi" map[]
|
|
@ -1,8 +0,0 @@
|
|||
[Info] 2024-10-22T15:24:20+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:24:21+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:24:21+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:24:48+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:24:49+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:24:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:24:51+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T15:24:51+08:00 "ceshiceshi" map[]
|
|
@ -1,2 +0,0 @@
|
|||
[Info] 2024-10-22T16:02:38+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:02:41+08:00 "ceshiceshi" map[]
|
|
@ -1,6 +0,0 @@
|
|||
[Info] 2024-10-22T16:06:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:06:51+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:06:52+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:06:52+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:06:53+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:06:59+08:00 "ceshiceshi" map[]
|
|
@ -1,8 +0,0 @@
|
|||
[Info] 2024-10-22T16:07:00+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:07:00+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:07:40+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:07:40+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:07:41+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:07:42+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:07:42+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:07:43+08:00 "ceshiceshi" map[]
|
|
@ -1,10 +0,0 @@
|
|||
[Info] 2024-10-22T16:08:20+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:22+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:22+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:25+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:26+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:27+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:08:27+08:00 "ceshiceshi" map[]
|
|
@ -1,7 +0,0 @@
|
|||
[Info] 2024-10-22T16:12:29+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:12:30+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:12:31+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:12:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:12:32+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:12:33+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:12:54+08:00 "ceshiceshi" map[]
|
|
@ -1,10 +0,0 @@
|
|||
[Info] 2024-10-22T16:13:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:06+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:07+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:07+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:10+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:53+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:53+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:54+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:54+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:13:55+08:00 "ceshiceshi" map[]
|
|
@ -1,4 +0,0 @@
|
|||
[Info] 2024-10-22T16:17:37+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:17:42+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:17:42+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:17:43+08:00 "ceshiceshi" map[]
|
|
@ -1,3 +0,0 @@
|
|||
[Info] 2024-10-22T16:18:48+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:18:50+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:18:51+08:00 "ceshiceshi" map[]
|
|
@ -1,6 +0,0 @@
|
|||
[Info] 2024-10-22T16:24:01+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:24:03+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:24:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:24:04+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:24:05+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:24:05+08:00 "ceshiceshi" map[]
|
|
@ -1,7 +0,0 @@
|
|||
[Info] 2024-10-22T16:43:21+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:43:22+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:43:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:43:23+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:43:24+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:43:24+08:00 "ceshiceshi" map[]
|
||||
[Info] 2024-10-22T16:43:25+08:00 "ceshiceshi" map[]
|
Loading…
Reference in New Issue