Skip to content

Commit 164252d

Browse files
committed
fix: Add ModTime to fileListEntry and consider it when extracting
1 parent dedc148 commit 164252d

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

embed_util/embedded_files.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"io/fs"
1010
"os"
1111
"path/filepath"
12+
"time"
1213
)
1314

1415
type EmbeddedFiles struct {
@@ -128,7 +129,7 @@ func (e *EmbeddedFiles) copyEmbeddedFilesToTmp(embedFs fs.FS, fl *fileList) erro
128129
if resolvedFle.Mode.Type() == existingSt.Mode().Type() {
129130
if resolvedFle.Mode.IsDir() {
130131
continue
131-
} else if existingSt.Size() == resolvedFle.Size {
132+
} else if existingSt.Size() == resolvedFle.Size && existingSt.ModTime().Unix() == resolvedFle.ModTime {
132133
// unchanged
133134
continue
134135
}
@@ -176,6 +177,12 @@ func (e *EmbeddedFiles) copyEmbeddedFilesToTmp(embedFs fs.FS, fl *fileList) erro
176177
if err != nil {
177178
return err
178179
}
180+
if !resolvedFle.Mode.IsDir() {
181+
err = os.Chtimes(path, time.Time{}, time.Unix(resolvedFle.ModTime, 0))
182+
if err != nil {
183+
return err
184+
}
185+
}
179186
}
180187

181188
return nil

embed_util/file_list.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type fileList struct {
2020
type fileListEntry struct {
2121
Name string `json:"name"`
2222
Size int64 `json:"size"`
23+
ModTime int64 `json:"modTime"`
2324
Mode fs.FileMode `json:"perm"`
2425
Symlink string `json:"symlink,omitempty"`
2526
Compressed bool `json:"compressed,omitempty"`
@@ -48,9 +49,10 @@ func buildFileListFromDir(dir string) (*fileList, error) {
4849
}
4950

5051
fle := fileListEntry{
51-
Name: relPath,
52-
Size: info.Size(),
53-
Mode: info.Mode(),
52+
Name: relPath,
53+
Size: info.Size(),
54+
ModTime: info.ModTime().Unix(),
55+
Mode: info.Mode(),
5456
}
5557

5658
if info.Mode().Type() == fs.ModeSymlink {
@@ -92,15 +94,17 @@ func buildFileListFromFs(embedFs fs.FS) (*fileList, error) {
9294
}
9395

9496
fle := fileListEntry{
95-
Name: path,
96-
Size: info.Size(),
97-
Mode: info.Mode() | 0o600,
97+
Name: path,
98+
Size: info.Size(),
99+
ModTime: info.ModTime().Unix(),
100+
Mode: info.Mode() | 0o600,
98101
}
99102

100103
if info.Mode().Type() == fs.ModeSymlink {
101104
return fmt.Errorf("symlink not supported in buildFileListFromFs")
102105
} else if info.Mode().IsDir() {
103106
fle.Size = 0
107+
fle.ModTime = 0
104108
}
105109

106110
fl.Files = append(fl.Files, fle)

0 commit comments

Comments
 (0)