init commit da
This commit is contained in:
1 parent
d64b4f3983
commit
22359129af
5 files changed
+300
-35
No files matched your search
@@ -3,9 +3,12 @@ package helpers
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"path/filepath"
|
||||
"math/rand"
|
||||
"time"
|
||||
"strconv"
|
||||
"os"
|
||||
"io"
|
||||
)
|
||||
|
||||
var r = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
@@ -42,3 +45,60 @@ func RandStr(n int) string {
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
func CopyDir(src, dst string) error {
|
||||
return filepath.Walk(src, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
rel, err := filepath.Rel(src, path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
target := filepath.Join(dst, rel)
|
||||
|
||||
mode := info.Mode()
|
||||
|
||||
switch {
|
||||
case mode&os.ModeSymlink != 0:
|
||||
link, err := os.Readlink(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return os.Symlink(link, target)
|
||||
|
||||
case info.IsDir():
|
||||
return os.MkdirAll(target, 0755)
|
||||
|
||||
default:
|
||||
return CopyFile(path, target)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func CopyFile(src, dst string) error {
|
||||
in, err := os.Open(src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer in.Close()
|
||||
|
||||
out, err := os.Create(dst)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
_, err = io.Copy(out, in)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
si, err := os.Stat(src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return os.Chmod(dst, si.Mode())
|
||||
}
|
||||
Reference in new issue
Block a user