From 0bb9a4c37862e5098a596e121fb13fd12c2ca44f Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期五, 29 五月 2020 14:14:15 +0800
Subject: [PATCH] install sdk tar.gz

---
 extend/util/zip.go |   85 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 78 insertions(+), 7 deletions(-)

diff --git a/extend/util/zip.go b/extend/util/zip.go
index cb44ee3..f057359 100644
--- a/extend/util/zip.go
+++ b/extend/util/zip.go
@@ -5,10 +5,13 @@
 	"basic.com/valib/logger.git"
 	"compress/gzip"
 	"errors"
+	"fmt"
 	"io"
 	"io/ioutil"
+	"log"
 	"os"
 	"path"
+	"path/filepath"
 	"strings"
 )
 
@@ -26,7 +29,7 @@
 	logger.Debug("鏂囦欢鍚嶇О鏄�", FileName)
 	//鍒涘缓瀛樻斁鍘嬬缉鏂囦欢鐨勮矾寰�(濡傛灉鏂囦欢澶逛笉瀛樺湪)
 
-	if !dirExists(DesPathName) {
+	if !DirExists(DesPathName) {
 		os.MkdirAll(DesPathName, 0777)
 	}
 	logger.Debug("鍒涘缓鏂囦欢")
@@ -121,11 +124,11 @@
 	// 娓呯悊璺緞瀛楃涓�
 	src = path.Clean(src)
 	// 鍒ゆ柇瑕佹墦鍖呯殑鏂囦欢鎴栫洰褰曟槸鍚﹀瓨鍦�
-	if !exists(src) {
+	if !Exists(src) {
 		return errors.New("瑕佹墦鍖呯殑鏂囦欢鎴栫洰褰曚笉瀛樺湪锛�" + src)
 	}
 	// 鍒ゆ柇鐩爣鏂囦欢鏄惁瀛樺湪
-	if fileExists(dstTar) {
+	if FileExists(dstTar) {
 		if failIfExist { // 涓嶈鐩栧凡瀛樺湪鐨勬枃浠�
 			return errors.New("鐩爣鏂囦欢宸茬粡瀛樺湪锛�" + dstTar)
 		} else { // 瑕嗙洊宸插瓨鍦ㄧ殑鏂囦欢
@@ -296,19 +299,87 @@
 }
 
 // 鍒ゆ柇妗f鏄惁瀛樺湪
-func exists(name string) bool {
+func Exists(name string) bool {
 	_, err := os.Stat(name)
 	return err == nil || os.IsExist(err)
 }
 
 // 鍒ゆ柇鏂囦欢鏄惁瀛樺湪
-func fileExists(filename string) bool {
+func FileExists(filename string) bool {
 	fi, err := os.Stat(filename)
 	return (err == nil || os.IsExist(err)) && !fi.IsDir()
 }
 
 // 鍒ゆ柇鐩綍鏄惁瀛樺湪
-func dirExists(dirname string) bool {
+func DirExists(dirname string) bool {
 	fi, err := os.Stat(dirname)
 	return (err == nil || os.IsExist(err)) && fi.IsDir()
-}
\ No newline at end of file
+}
+
+
+//鏂囦欢澶瑰鍒�
+func CopyDir(src string, dest string) {
+	src_original := src
+	err := filepath.Walk(src, func(src string, f os.FileInfo, err error) error {
+		if f == nil {
+			return err
+		}
+		if f.IsDir() {
+			CopyDir(f.Name(), dest+"/"+f.Name())
+		} else {
+			fmt.Println(src)
+			fmt.Println(src_original)
+			fmt.Println(dest)
+
+			dest_new := strings.Replace(src, src_original, dest, -1)
+			fmt.Println(dest_new)
+			fmt.Println("CopyFile:" + src + " to " + dest_new)
+			CopyFile(src, dest_new)
+		}
+		return nil
+	})
+	if err != nil {
+		fmt.Printf("filepath.Walk() returned %v\n", err)
+	}
+}
+
+//澶ф枃浠跺鍒�
+func CopyFile(srcFileName string, dstFileName string) {
+	//鎵撳紑婧愭枃浠�
+	srcFile, err := os.Open(srcFileName)
+	if err != nil {
+		log.Fatalf("婧愭枃浠惰鍙栧け璐�,鍘熷洜鏄�:%v\n", err)
+	}
+	defer func() {
+		err = srcFile.Close()
+		if err != nil {
+			log.Fatalf("婧愭枃浠跺叧闂け璐�,鍘熷洜鏄�:%v\n", err)
+		}
+	}()
+
+	//鍒涘缓鐩爣鏂囦欢,绋嶅悗浼氬悜杩欎釜鐩爣鏂囦欢鍐欏叆鎷疯礉鍐呭
+	distFile, err := os.Create(dstFileName)
+	if err != nil {
+		log.Fatalf("鐩爣鏂囦欢鍒涘缓澶辫触,鍘熷洜鏄�:%v\n", err)
+	}
+	defer func() {
+		err = distFile.Close()
+		if err != nil {
+			log.Fatalf("鐩爣鏂囦欢鍏抽棴澶辫触,鍘熷洜鏄�:%v\n", err)
+		}
+	}()
+	//瀹氫箟鎸囧畾闀垮害鐨勫瓧鑺傚垏鐗�,姣忔鏈�澶氳鍙栨寚瀹氶暱搴�
+	var tmp = make([]byte, 1024*4)
+	//寰幆璇诲彇骞跺啓鍏�
+	for {
+		n, err := srcFile.Read(tmp)
+		n, _ = distFile.Write(tmp[:n])
+		if err != nil {
+			if err == io.EOF {//璇诲埌浜嗘枃浠舵湯灏�,骞朵笖鍐欏叆瀹屾瘯,浠诲姟瀹屾垚杩斿洖(鍏抽棴鏂囦欢鐨勬搷浣滅敱defer鏉ュ畬鎴�)
+				return
+			} else {
+				log.Fatalf("鎷疯礉杩囩▼涓彂鐢熼敊璇�,閿欒鍘熷洜涓�:%v\n", err)
+			}
+		}
+	}
+}

--
Gitblit v1.8.0