mirror of
https://github.com/ayflying/p2p.git
synced 2026-03-05 01:39:23 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 84723248cd | |||
| d3f3687201 |
@@ -1,9 +1,12 @@
|
|||||||
package system
|
package system
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"archive/tar"
|
||||||
|
"compress/gzip"
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
@@ -69,8 +72,8 @@ func (s *sSystem) Update(ctx context.Context, gzFile string) (err error) {
|
|||||||
g.Log().Debugf(ctx, "zip解压%v到%v", gzFile, gfile.Dir(runFile))
|
g.Log().Debugf(ctx, "zip解压%v到%v", gzFile, gfile.Dir(runFile))
|
||||||
err = gcompress.UnZipFile(gzFile, gfile.Dir(runFile))
|
err = gcompress.UnZipFile(gzFile, gfile.Dir(runFile))
|
||||||
} else {
|
} else {
|
||||||
g.Log().Debugf(ctx, "gzip解压%v到%v", gzFile, runFile)
|
g.Log().Debugf(ctx, "gzip解压%v到%v", gzFile, gfile.Dir(runFile))
|
||||||
err = gcompress.UnGzipFile(gzFile, runFile)
|
err = s.UnTarGz(gzFile, gfile.Dir(runFile))
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -87,6 +90,64 @@ func (s *sSystem) Update(ctx context.Context, gzFile string) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnTarGz 解压tar.gz文件到指定目录
|
||||||
|
func (s *sSystem) UnTarGz(tarGzFileName, targetDir string) (err error) {
|
||||||
|
// 打开tar.gz文件
|
||||||
|
file, err := os.Open(tarGzFileName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
// 创建gzip reader
|
||||||
|
gzr, err := gzip.NewReader(file)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer gzr.Close()
|
||||||
|
|
||||||
|
// 创建tar reader
|
||||||
|
tr := tar.NewReader(gzr)
|
||||||
|
|
||||||
|
// 遍历tar中的每个文件
|
||||||
|
for {
|
||||||
|
hdr, err := tr.Next()
|
||||||
|
if err == io.EOF {
|
||||||
|
// 到达文件末尾,退出循环
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建解压后的文件路径
|
||||||
|
targetPath := targetDir + string(os.PathSeparator) + hdr.Name
|
||||||
|
|
||||||
|
// 如果是目录,创建目录
|
||||||
|
if hdr.Typeflag == tar.TypeDir {
|
||||||
|
err := os.MkdirAll(targetPath, 0755)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是文件,创建文件并写入内容
|
||||||
|
outFile, err := os.Create(targetPath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer outFile.Close()
|
||||||
|
|
||||||
|
_, err = io.Copy(outFile, tr)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// RestartSelf 实现 Windows 平台下的程序自重启
|
// RestartSelf 实现 Windows 平台下的程序自重启
|
||||||
func (s *sSystem) RestartSelf() error {
|
func (s *sSystem) RestartSelf() error {
|
||||||
ctx := gctx.New()
|
ctx := gctx.New()
|
||||||
|
|||||||
3
main.go
3
main.go
@@ -10,7 +10,6 @@ import (
|
|||||||
"github.com/gogf/gf/v2/os/gcmd"
|
"github.com/gogf/gf/v2/os/gcmd"
|
||||||
"github.com/gogf/gf/v2/os/gfile"
|
"github.com/gogf/gf/v2/os/gfile"
|
||||||
"github.com/gogf/gf/v2/os/gtime"
|
"github.com/gogf/gf/v2/os/gtime"
|
||||||
|
|
||||||
//步骤1:加载驱动
|
//步骤1:加载驱动
|
||||||
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
|
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
|
||||||
|
|
||||||
@@ -24,7 +23,7 @@ var (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
g.Log().Infof(ctx, "启动文件最后修改时间:%v", gtime.New(gfile.MTime(gcmd.GetArg(0).String())).String())
|
g.Log().Infof(ctx, "启动文件最后修改时间:%v", gtime.New(gfile.MTime(gcmd.GetArg(0).String())).String())
|
||||||
g.Dump("v1.0.0.2")
|
//g.Dump("v1.0.0.2")
|
||||||
|
|
||||||
if ok := gfile.Exists("runtime"); !ok {
|
if ok := gfile.Exists("runtime"); !ok {
|
||||||
gfile.Mkdir("runtime")
|
gfile.Mkdir("runtime")
|
||||||
|
|||||||
Reference in New Issue
Block a user