mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-05-13 16:37:27 +00:00
Add support for RAR archive preview
This commit is contained in:
parent
37eead581b
commit
5f90102413
4 changed files with 18 additions and 2 deletions
2
.github/workflows/ci.py
vendored
2
.github/workflows/ci.py
vendored
|
|
@ -223,7 +223,7 @@ IGNORED_DEPENDENCY_CVES = [
|
|||
# glib
|
||||
'CVE-2025-4056', # Only affects Windows, on which we dont run
|
||||
# github.com/nwaples/rardecode/v2
|
||||
'CVE-2025-11579', # rardecode not present in kitty go.sum
|
||||
'CVE-2025-11579', # rardecode is version 2.2.1, not vulnerable
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
1
go.mod
1
go.mod
|
|
@ -17,6 +17,7 @@ require (
|
|||
github.com/kovidgoyal/go-parallel v1.1.1
|
||||
github.com/kovidgoyal/go-shm v1.0.0
|
||||
github.com/kovidgoyal/imaging v1.8.17
|
||||
github.com/nwaples/rardecode/v2 v2.2.1
|
||||
github.com/seancfoley/ipaddress-go v1.7.1
|
||||
github.com/shirou/gopsutil/v4 v4.25.10
|
||||
github.com/ulikunitz/xz v0.5.15
|
||||
|
|
|
|||
2
go.sum
2
go.sum
|
|
@ -40,6 +40,8 @@ github.com/kovidgoyal/imaging v1.8.17 h1:IDc7lbN2Qrn8s50y7Zt355HhOc+jUpvsScYAaGC
|
|||
github.com/kovidgoyal/imaging v1.8.17/go.mod h1:uD4XKN42lLV9du0TsPkwi53yw23vz/qDmfpiDWCSUCE=
|
||||
github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a h1:N9zuLhTvBSRt0gWSiJswwQ2HqDmtX/ZCDJURnKUt1Ik=
|
||||
github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE=
|
||||
github.com/nwaples/rardecode/v2 v2.2.1 h1:DgHK/O/fkTQEKBJxBMC5d9IU8IgauifbpG78+rZJMnI=
|
||||
github.com/nwaples/rardecode/v2 v2.2.1/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import (
|
|||
"github.com/klauspost/compress/gzip"
|
||||
"github.com/klauspost/compress/zip"
|
||||
"github.com/klauspost/compress/zstd"
|
||||
"github.com/nwaples/rardecode/v2"
|
||||
"github.com/ulikunitz/xz"
|
||||
|
||||
"github.com/kovidgoyal/kitty/tools/utils"
|
||||
|
|
@ -25,7 +26,7 @@ func IsSupportedArchiveFile(abspath string) bool {
|
|||
name := strings.ToLower(filepath.Base(abspath))
|
||||
ext := filepath.Ext(name)
|
||||
switch ext {
|
||||
case ".zip", ".tgz", ".tbz2", ".tzst", ".txz":
|
||||
case ".zip", ".tgz", ".tbz2", ".tzst", ".txz", ".rar":
|
||||
return true
|
||||
case ".gz", ".bz2", ".zst", ".xz":
|
||||
name = name[:len(name)-len(ext)]
|
||||
|
|
@ -88,6 +89,18 @@ func (p *archive_preview) render() {
|
|||
|
||||
}
|
||||
}
|
||||
case ".rar":
|
||||
r, err := rardecode.OpenReader(p.path, rardecode.SkipCheck)
|
||||
if err == nil {
|
||||
defer r.Close()
|
||||
for len(names) < 500 {
|
||||
hdr, err := r.Next()
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
names = append(names, displayFilename(hdr.Name))
|
||||
}
|
||||
}
|
||||
case ".gz", ".tgz":
|
||||
if f, err := os.Open(p.path); err == nil {
|
||||
defer f.Close()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue