From b1e2d17dd1daa804a03538a89b3b8152e64de3e1 Mon Sep 17 00:00:00 2001 From: Tilo K Date: Tue, 3 Oct 2023 19:53:56 +0200 Subject: [PATCH] Some cleanup --- fileio.go | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++ main.go | 118 +----------------------------------------------------- util.go | 9 +++++ 3 files changed, 125 insertions(+), 116 deletions(-) create mode 100644 fileio.go diff --git a/fileio.go b/fileio.go new file mode 100644 index 0000000..8d6ea77 --- /dev/null +++ b/fileio.go @@ -0,0 +1,114 @@ +package main + +import ( + "fmt" + "io" + "os" + "path/filepath" +) + +func CopyDirectory(scrDir, dest string) error { + entries, err := os.ReadDir(scrDir) + if err != nil { + return err + } + for _, entry := range entries { + sourcePath := filepath.Join(scrDir, entry.Name()) + destPath := filepath.Join(dest, entry.Name()) + + fileInfo, err := os.Stat(sourcePath) + if err != nil { + return err + } + + switch fileInfo.Mode() & os.ModeType { + case os.ModeDir: + if err := CreateIfNotExists(destPath, 0755); err != nil { + return err + } + if err := CopyDirectory(sourcePath, destPath); err != nil { + return err + } + case os.ModeSymlink: + if err := CopySymLink(sourcePath, destPath); err != nil { + return err + } + default: + if err := Copy(sourcePath, destPath); err != nil { + return err + } + } + + fInfo, err := entry.Info() + if err != nil { + return err + } + + isSymlink := fInfo.Mode()&os.ModeSymlink != 0 + if !isSymlink { + if err := os.Chmod(destPath, fInfo.Mode()); err != nil { + return err + } + } + } + return nil +} + +func Copy(srcFile, dstFile string) error { + out, err := os.Create(dstFile) + if err != nil { + return err + } + + defer out.Close() + + in, err := os.Open(srcFile) + defer in.Close() + if err != nil { + return err + } + + _, err = io.Copy(out, in) + if err != nil { + return err + } + + return nil +} + +func Exists(filePath string) bool { + if _, err := os.Stat(filePath); os.IsNotExist(err) { + return false + } + + return true +} + +func CreateIfNotExists(dir string, perm os.FileMode) error { + if Exists(dir) { + return nil + } + + if err := os.MkdirAll(dir, perm); err != nil { + return fmt.Errorf("failed to create directory: '%s', error: '%s'", dir, err.Error()) + } + + return nil +} + +func CopySymLink(source, dest string) error { + link, err := os.Readlink(source) + if err != nil { + return err + } + return os.Symlink(link, dest) +} + +func deleteTgz() { + files, err := filepath.Glob("ddragon*.tgz") + checkError(err) + for _, file := range files { + fmt.Printf("Deleting %s", file) + os.RemoveAll(file) + } +} diff --git a/main.go b/main.go index c674fb3..2d42a4f 100644 --- a/main.go +++ b/main.go @@ -15,103 +15,6 @@ import ( "github.com/otiai10/copy" ) -func CopyDirectory(scrDir, dest string) error { - entries, err := os.ReadDir(scrDir) - if err != nil { - return err - } - for _, entry := range entries { - sourcePath := filepath.Join(scrDir, entry.Name()) - destPath := filepath.Join(dest, entry.Name()) - - fileInfo, err := os.Stat(sourcePath) - if err != nil { - return err - } - - switch fileInfo.Mode() & os.ModeType { - case os.ModeDir: - if err := CreateIfNotExists(destPath, 0755); err != nil { - return err - } - if err := CopyDirectory(sourcePath, destPath); err != nil { - return err - } - case os.ModeSymlink: - if err := CopySymLink(sourcePath, destPath); err != nil { - return err - } - default: - if err := Copy(sourcePath, destPath); err != nil { - return err - } - } - - fInfo, err := entry.Info() - if err != nil { - return err - } - - isSymlink := fInfo.Mode()&os.ModeSymlink != 0 - if !isSymlink { - if err := os.Chmod(destPath, fInfo.Mode()); err != nil { - return err - } - } - } - return nil -} - -func Copy(srcFile, dstFile string) error { - out, err := os.Create(dstFile) - if err != nil { - return err - } - - defer out.Close() - - in, err := os.Open(srcFile) - defer in.Close() - if err != nil { - return err - } - - _, err = io.Copy(out, in) - if err != nil { - return err - } - - return nil -} - -func Exists(filePath string) bool { - if _, err := os.Stat(filePath); os.IsNotExist(err) { - return false - } - - return true -} - -func CreateIfNotExists(dir string, perm os.FileMode) error { - if Exists(dir) { - return nil - } - - if err := os.MkdirAll(dir, perm); err != nil { - return fmt.Errorf("failed to create directory: '%s', error: '%s'", dir, err.Error()) - } - - return nil -} - -func CopySymLink(source, dest string) error { - link, err := os.Readlink(source) - if err != nil { - return err - } - return os.Symlink(link, dest) -} - func getVersions() []string { url := "https://ddragon.leagueoflegends.com/api/versions.json" @@ -122,7 +25,7 @@ func getVersions() []string { } defer res.Body.Close() - body, err := ioutil.ReadAll(res.Body) + body, err := io.ReadAll(res.Body) checkError(err) versions := make([]string, 0) @@ -189,15 +92,6 @@ func getCurrentVersion() string { return string(data) } -func deleteTgz() { - files, err := filepath.Glob("ddragon*.tgz") - checkError(err) - for _, file := range files { - fmt.Printf("Deleting %s", file) - os.RemoveAll(file) - } -} - func loadCurrent() { deleteTgz() storageDir := os.Getenv("STORAGE_DIR") @@ -207,7 +101,7 @@ func loadCurrent() { } if getCurrentVersion() != versions[0] { file := loadDdragon(versions[0]) - ioutil.WriteFile(filepath.Join(storageDir, "current.txt"), []byte(versions[0]), 0777) + os.WriteFile(filepath.Join(storageDir, "current.txt"), []byte(versions[0]), 0777) path, err := tgz.Extract(file) checkError(err) @@ -238,14 +132,6 @@ func loadCurrent() { } } -func cors(fs http.Handler) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - (w).Header().Set("Access-Control-Allow-Origin", "*") - - fs.ServeHTTP(w, r) - } -} - func main() { storageDir := os.Getenv("STORAGE_DIR") loadCurrent() diff --git a/util.go b/util.go index 6ad06d6..301cbe0 100644 --- a/util.go +++ b/util.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "net/http" "os" "time" ) @@ -16,3 +17,11 @@ func checkError(err error) { v, _ := time.Now().UTC().MarshalText() f.WriteString(fmt.Sprintf("[%s] %s\n", string(v), err)) } + +func cors(fs http.Handler) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + (w).Header().Set("Access-Control-Allow-Origin", "*") + + fs.ServeHTTP(w, r) + } +}