Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9981619

Browse files
committed
fix embed
1 parent3574b87 commit9981619

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

‎cmd/embedded.go‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,23 +118,23 @@ func initEmbeddedExtractor(c *cli.Command) error {
118118

119119
funcrunList(_ context.Context,c*cli.Command)error {
120120
iferr:=runListDo(c);err!=nil {
121-
fmt.Fprintf(os.Stderr,"%v\n",err)
121+
_,_=fmt.Fprintf(os.Stderr,"%v\n",err)
122122
returnerr
123123
}
124124
returnnil
125125
}
126126

127127
funcrunView(_ context.Context,c*cli.Command)error {
128128
iferr:=runViewDo(c);err!=nil {
129-
fmt.Fprintf(os.Stderr,"%v\n",err)
129+
_,_=fmt.Fprintf(os.Stderr,"%v\n",err)
130130
returnerr
131131
}
132132
returnnil
133133
}
134134

135135
funcrunExtract(_ context.Context,c*cli.Command)error {
136136
iferr:=runExtractDo(c);err!=nil {
137-
fmt.Fprintf(os.Stderr,"%v\n",err)
137+
_,_=fmt.Fprintf(os.Stderr,"%v\n",err)
138138
returnerr
139139
}
140140
returnnil
@@ -217,7 +217,7 @@ func runExtractDo(c *cli.Command) error {
217217
for_,a:=rangematchedAssetFiles {
218218
iferr:=extractAsset(destdir,a,overwrite,rename);err!=nil {
219219
// Non-fatal error
220-
fmt.Fprintf(os.Stderr,"%s: %v",a.path,err)
220+
_,_=fmt.Fprintf(os.Stderr,"%s: %v\n",a.path,err)
221221
}
222222
}
223223

‎modules/assetfs/embed.go‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,21 @@ func (e *embeddedFS) ReadDir(name string) (l []fs.DirEntry, err error) {
126126
}
127127
l=make([]fs.DirEntry,len(fi.Children))
128128
fori,child:=rangefi.Children {
129-
l[i]=child
129+
l[i],err=e.getFileInfo(name+"/"+child.BaseName)
130+
iferr!=nil {
131+
returnnil,err
132+
}
130133
}
131134
returnl,nil
132135
}
133136

134137
func (e*embeddedFS)getFileInfo(fullNamestring) (*embeddedFileInfo,error) {
138+
// no need to do heavy "path.Clean()" because we don't want to support "foo/../bar" or absolute paths
139+
fullName=strings.TrimPrefix(fullName,"./")
140+
iffullName=="" {
141+
fullName="."
142+
}
143+
135144
e.filesMu.RLock()
136145
fi:=e.files[fullName]
137146
e.filesMu.RUnlock()
@@ -247,7 +256,7 @@ func (fi *embeddedFileInfo) Size() int64 {
247256
}
248257

249258
func (fi*embeddedFileInfo)Mode() fs.FileMode {
250-
returnutil.Iif[fs.FileMode](fi.IsDir(),0o555,0o444)
259+
returnutil.Iif[fs.FileMode](fi.IsDir(),fs.ModeDir|0o555,0o444)
251260
}
252261

253262
func (fi*embeddedFileInfo)ModTime() time.Time {

‎modules/assetfs/embed_test.go‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ func TestEmbed(t *testing.T) {
4646
assert.Equal(t,bytes.Repeat([]byte("a"),1000),content)
4747
fi,err=fs.Stat(efs,"foo/bar/b.txt")
4848
require.NoError(t,err)
49+
assert.False(t,fi.Mode().IsDir())
50+
assert.True(t,fi.Mode().IsRegular())
4951
gzipContent,ok:=fi.(EmbeddedFileInfo).GetGzipContent()
5052
assert.True(t,ok)
5153
assert.Greater(t,len(gzipContent),1)
@@ -67,6 +69,13 @@ func TestEmbed(t *testing.T) {
6769
assert.Equal(t,"c.txt",entries[1].Name())
6870
assert.False(t,entries[1].IsDir())
6971

72+
// test directory mode
73+
fi,err=fs.Stat(efs,"foo")
74+
require.NoError(t,err)
75+
assert.True(t,fi.IsDir())
76+
assert.True(t,fi.Mode().IsDir())
77+
assert.False(t,fi.Mode().IsRegular())
78+
7079
// test httpfs
7180
hfs:=http.FS(efs)
7281
hf,err:=hfs.Open("foo/bar/b.txt")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp