리팩토링

This commit is contained in:
2023-05-23 10:57:24 +09:00
parent 0f7b5c22fc
commit d3d451685f
4 changed files with 341 additions and 241 deletions

View File

@ -1,5 +1,11 @@
package shared
import (
"io/fs"
"os"
"strings"
)
type Operation string
const (
@ -48,3 +54,61 @@ type UploadRequest struct {
Filter string
DeleteAfterUploaded string // true, false
}
type ParsedVersionString = []string
func ParseVersionString(ver string) ParsedVersionString {
return strings.Split(ver, ".")
}
func CompareVersionString(lhs, rhs ParsedVersionString) int {
minlen := len(lhs)
if minlen > len(rhs) {
minlen = len(rhs)
}
for i := 0; i < minlen; i++ {
if len(lhs[i]) < len(rhs[i]) {
return -1
}
if len(lhs[i]) > len(rhs[i]) {
return 1
}
if lhs[i] < rhs[i] {
return -1
}
if lhs[i] > rhs[i] {
return 1
}
}
return len(lhs) - len(rhs)
}
func FindLastestVersion(root string) (string, error) {
// 최신 버전을 찾음
entries, err := os.ReadDir(root)
if err != nil {
return "", err
}
if len(entries) == 0 {
return "", nil
}
var dironly []fs.DirEntry
for _, ent := range entries {
if ent.IsDir() {
dironly = append(dironly, ent)
}
}
latest := ParseVersionString(dironly[0].Name())
for i := 1; i < len(dironly); i++ {
next := ParseVersionString(dironly[i].Name())
if CompareVersionString(latest, next) < 0 {
latest = next
}
}
return strings.Join(latest, "."), nil
}