mirror of
https://github.com/shtorm-7/sing-box-extended.git
synced 2026-09-15 21:00:27 +00:00
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package powerreport
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
)
|
|
|
|
func PromoteDraft(basePath string) {
|
|
promoteDirectory(filepath.Join(basePath, DraftDirectoryName), filepath.Join(basePath, ReportsDirectoryName))
|
|
}
|
|
|
|
func finalizeDraft(draftPath string) {
|
|
promoteDirectory(draftPath, filepath.Join(filepath.Dir(draftPath), ReportsDirectoryName))
|
|
}
|
|
|
|
func promoteDirectory(draftPath string, reportsPath string) {
|
|
info, err := os.Stat(draftPath)
|
|
if err != nil || !info.IsDir() {
|
|
return
|
|
}
|
|
entries, err := os.ReadDir(draftPath)
|
|
if err != nil || len(entries) == 0 {
|
|
os.RemoveAll(draftPath)
|
|
return
|
|
}
|
|
err = os.MkdirAll(reportsPath, 0o777)
|
|
if err != nil {
|
|
return
|
|
}
|
|
destName := info.ModTime().UTC().Format("2006-01-02T15-04-05")
|
|
destPath := filepath.Join(reportsPath, destName)
|
|
for i := 1; ; i++ {
|
|
_, err = os.Stat(destPath)
|
|
if os.IsNotExist(err) {
|
|
break
|
|
}
|
|
if i > 1000 {
|
|
os.RemoveAll(draftPath)
|
|
return
|
|
}
|
|
destPath = filepath.Join(reportsPath, destName+"-"+strconv.Itoa(i))
|
|
}
|
|
err = os.Rename(draftPath, destPath)
|
|
if err != nil {
|
|
os.RemoveAll(draftPath)
|
|
}
|
|
}
|