mirror of
https://github.com/gen2brain/cbconvert
synced 2026-09-08 14:33:06 +02:00
Compare commits
16
Commits
v1.2.0
...
469bd39ee7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
469bd39ee7 | ||
|
|
a90395759b | ||
|
|
97a601263c | ||
|
|
8c6dfc3301 | ||
|
|
ed6d60ea72 | ||
|
|
5d87cd59b6 | ||
|
|
365ee2cdf9 | ||
|
|
147480003c | ||
|
|
7cf35d502d | ||
|
|
01a205a07e | ||
|
|
b5994ef137 | ||
|
|
b8bf8fa9df | ||
|
|
38cb375a93 | ||
|
|
9f6792eaae | ||
|
|
63605a1775 | ||
|
|
d45a14ecc5 |
@@ -18,7 +18,7 @@ jobs:
|
|||||||
run: go build -v ./...
|
run: go build -v ./...
|
||||||
working-directory: cmd/cbconvert
|
working-directory: cmd/cbconvert
|
||||||
env:
|
env:
|
||||||
CGO_ENABLED: 1
|
CGO_ENABLED: 0
|
||||||
|
|
||||||
gui:
|
gui:
|
||||||
strategy:
|
strategy:
|
||||||
|
|||||||
@@ -17,4 +17,4 @@ jobs:
|
|||||||
- name: Test
|
- name: Test
|
||||||
run: go test -v ./...
|
run: go test -v ./...
|
||||||
env:
|
env:
|
||||||
CGO_ENABLED: 1
|
CGO_ENABLED: 0
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ See more [screenshots](https://github.com/gen2brain/cbconvert/blob/master/cmd/cb
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* reads CBR (RAR), CBZ (ZIP), CB7 (7Z), CBT (TAR), PDF, XPS, EPUB, MOBI, DOCX, PPTX and plain directory
|
* reads CBR (RAR), CBZ (ZIP), CB7 (7Z), CBT (TAR), PDF, EPUB, MOBI, CHM, DOCX, PPTX and plain directory
|
||||||
* saves processed files in ZIP archive format or TAR
|
* saves processed files in ZIP archive format or TAR
|
||||||
* images can be converted to JPEG, PNG, TIFF, WEBP, AVIF, JXL, or 4-Bit BMP (16 colors) image format
|
* images can be converted to JPEG, PNG, TIFF, WEBP, AVIF, JXL, or 4-Bit BMP (16 colors) image format
|
||||||
* rotate, adjust brightness/contrast or grayscale images
|
* rotate, adjust brightness/contrast or grayscale images
|
||||||
@@ -28,8 +28,6 @@ Linux Flatpak is available at [Flathub](https://flathub.org/apps/io.github.gen2b
|
|||||||
|
|
||||||
### Compile
|
### Compile
|
||||||
|
|
||||||
You must have `CGO_ENABLED=1`. Note that `Go` will disable cgo when cross-compiling.
|
|
||||||
|
|
||||||
Install to `GOBIN` (you can point `GOBIN` to e.g. `/usr/local/bin` or `~/.local/bin`):
|
Install to `GOBIN` (you can point `GOBIN` to e.g. `/usr/local/bin` or `~/.local/bin`):
|
||||||
|
|
||||||
`go install github.com/gen2brain/cbconvert/cmd/cbconvert@latest`
|
`go install github.com/gen2brain/cbconvert/cmd/cbconvert@latest`
|
||||||
@@ -38,11 +36,6 @@ For GUI app, check [IUP](https://github.com/gen2brain/iup-go) requirements, and
|
|||||||
|
|
||||||
`go install github.com/gen2brain/cbconvert/cmd/cbconvert-gui@latest`
|
`go install github.com/gen2brain/cbconvert/cmd/cbconvert-gui@latest`
|
||||||
|
|
||||||
### Build tags
|
|
||||||
|
|
||||||
* `extlib` - use external `libmupdf` library
|
|
||||||
* `pkgconfig` - enable pkg-config (used with `extlib`)
|
|
||||||
|
|
||||||
### Using cbconvert in file managers to generate FreeDesktop thumbnails
|
### Using cbconvert in file managers to generate FreeDesktop thumbnails
|
||||||
|
|
||||||
Copy/install `cbconvert` cli binary to your `PATH`, create file `~/.local/share/thumbnailers/cbconvert.thumbnailer`
|
Copy/install `cbconvert` cli binary to your `PATH`, create file `~/.local/share/thumbnailers/cbconvert.thumbnailer`
|
||||||
@@ -85,7 +78,7 @@ Commands:
|
|||||||
--quality
|
--quality
|
||||||
Image quality (default "75")
|
Image quality (default "75")
|
||||||
--effort
|
--effort
|
||||||
Encoder speed/effort, format-specific (webp method 0-6, avif speed 0-10, jxl effort 1-10), -1 uses the format default (default "-1")
|
Encoder speed/effort, format-specific (webp method 0-6, avif speed 0-10, jxl effort 1-7), -1 uses the format default (default "-1")
|
||||||
--lossless
|
--lossless
|
||||||
Lossless compression (webp, avif, jxl), ignores quality (default "false")
|
Lossless compression (webp, avif, jxl), ignores quality (default "false")
|
||||||
--combine
|
--combine
|
||||||
@@ -141,7 +134,7 @@ Commands:
|
|||||||
--quality
|
--quality
|
||||||
Image quality (default "75")
|
Image quality (default "75")
|
||||||
--effort
|
--effort
|
||||||
Encoder speed/effort, format-specific (webp method 0-6, avif speed 0-10, jxl effort 1-10), -1 uses the format default (default "-1")
|
Encoder speed/effort, format-specific (webp method 0-6, avif speed 0-10, jxl effort 1-7), -1 uses the format default (default "-1")
|
||||||
--lossless
|
--lossless
|
||||||
Lossless compression (webp, avif, jxl), ignores quality (default "false")
|
Lossless compression (webp, avif, jxl), ignores quality (default "false")
|
||||||
--filter
|
--filter
|
||||||
|
|||||||
+33
-56
@@ -7,15 +7,13 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"image"
|
"image"
|
||||||
_ "image/gif"
|
_ "image/gif"
|
||||||
"image/png"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
pngstructure "github.com/dsoprea/go-png-image-structure"
|
folio "github.com/gen2brain/folio/doc"
|
||||||
"github.com/dustin/go-humanize"
|
"github.com/gen2brain/pngn"
|
||||||
"github.com/gen2brain/go-fitz"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Options type.
|
// Options type.
|
||||||
@@ -212,14 +210,31 @@ func (o Options) Args() []string {
|
|||||||
return args
|
return args
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fallbackDPI is the resolution a page renders at when its own is too large.
|
||||||
|
const fallbackDPI = 300
|
||||||
|
|
||||||
// renderPage renders document page n at the configured DPI, or at the page's
|
// renderPage renders document page n at the configured DPI, or at the page's
|
||||||
// native resolution when DPI is unset.
|
// native resolution when DPI is unset.
|
||||||
func (c *Converter) renderPage(doc *fitz.Document, n int) (*image.RGBA, error) {
|
func (c *Converter) renderPage(doc folio.Document, n int) (*image.RGBA, error) {
|
||||||
if c.Opts.DPI > 0 {
|
page, err := doc.Page(n)
|
||||||
return doc.ImageDPI(n, float64(c.Opts.DPI))
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return doc.Image(n)
|
if c.Opts.DPI > 0 {
|
||||||
|
return page.ImageDPI(float64(c.Opts.DPI))
|
||||||
|
}
|
||||||
|
|
||||||
|
img, err := page.Image()
|
||||||
|
if err == nil {
|
||||||
|
return img, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if img, retry := page.ImageDPI(fallbackDPI); retry == nil {
|
||||||
|
return img, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cancel cancels the operation.
|
// Cancel cancels the operation.
|
||||||
@@ -240,7 +255,7 @@ func (c *Converter) Files(args []string) ([]File, error) {
|
|||||||
file.Path = fp
|
file.Path = fp
|
||||||
file.Root = root
|
file.Root = root
|
||||||
file.Stat = f
|
file.Stat = f
|
||||||
file.SizeHuman = humanize.IBytes(uint64(f.Size()))
|
file.SizeHuman = sizeHuman(uint64(f.Size()))
|
||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,23 +432,6 @@ func (c *Converter) Thumbnail(file File) error {
|
|||||||
cover = resize(cover, 256, 0, resampleFilter(c.Opts.Filter))
|
cover = resize(cover, 256, 0, resampleFilter(c.Opts.Filter))
|
||||||
}
|
}
|
||||||
|
|
||||||
var buf bytes.Buffer
|
|
||||||
err = png.Encode(&buf, cover)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("%s: %w", fileName, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
pmp := pngstructure.NewPngMediaParser()
|
|
||||||
csTmp, err := pmp.ParseBytes(buf.Bytes())
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("%s: %w", fileName, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
cs, ok := csTmp.(*pngstructure.ChunkSlice)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("%s: type is not ChunkSlice", fileName)
|
|
||||||
}
|
|
||||||
|
|
||||||
var fName string
|
var fName string
|
||||||
var fURI string
|
var fURI string
|
||||||
|
|
||||||
@@ -456,33 +454,13 @@ func (c *Converter) Thumbnail(file File) error {
|
|||||||
fName = abs
|
fName = abs
|
||||||
}
|
}
|
||||||
|
|
||||||
chunks := cs.Chunks()
|
meta := &pngn.Metadata{Text: []pngn.Text{
|
||||||
textChunks := []*pngstructure.Chunk{
|
{Keyword: "Software", Value: "CBconvert"},
|
||||||
{Type: `tEXt`, Data: []uint8("Software\x00" + "CBconvert")},
|
{Keyword: "Description", Value: "Thumbnail of " + fileName},
|
||||||
{Type: `tEXt`, Data: []uint8("Description\x00" + "Thumbnail of " + fileName)},
|
{Keyword: "Thumb::URI", Value: fURI},
|
||||||
{Type: `tEXt`, Data: []uint8("Thumb::URI\x00" + fURI)},
|
{Keyword: "Thumb::MTime", Value: strconv.FormatInt(fileInfo.ModTime().Unix(), 10)},
|
||||||
{Type: `tEXt`, Data: []uint8("Thumb::MTime\x00" + strconv.FormatInt(fileInfo.ModTime().Unix(), 10))},
|
{Keyword: "Thumb::Size", Value: strconv.FormatInt(fileInfo.Size(), 10)},
|
||||||
{Type: `tEXt`, Data: []uint8("Thumb::Size\x00" + strconv.FormatInt(fileInfo.Size(), 10))},
|
}}
|
||||||
}
|
|
||||||
|
|
||||||
for _, textChunk := range textChunks {
|
|
||||||
textChunk.Length = uint32(len(textChunk.Data))
|
|
||||||
textChunk.UpdateCrc32()
|
|
||||||
}
|
|
||||||
|
|
||||||
chunks = append(
|
|
||||||
chunks[:1],
|
|
||||||
append(
|
|
||||||
textChunks,
|
|
||||||
chunks[1:]...,
|
|
||||||
)...,
|
|
||||||
)
|
|
||||||
|
|
||||||
cs = pngstructure.NewChunkSlice(chunks)
|
|
||||||
err = cs.WriteTo(&buf)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("%s: %w", fileName, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
f, err := os.Create(fName)
|
f, err := os.Create(fName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -491,8 +469,7 @@ func (c *Converter) Thumbnail(file File) error {
|
|||||||
|
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
_, err = buf.WriteTo(f)
|
if err = pngn.Encode(f, cover, &pngn.EncodeOptions{Metadata: meta}); err != nil {
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("%s: %w", fileName, err)
|
return fmt.Errorf("%s: %w", fileName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -601,7 +578,7 @@ func (c *Converter) previewImage(fileName string, i image.Image, width, height i
|
|||||||
|
|
||||||
img.Width = i.Bounds().Dx()
|
img.Width = i.Bounds().Dx()
|
||||||
img.Height = i.Bounds().Dy()
|
img.Height = i.Bounds().Dy()
|
||||||
img.SizeHuman = humanize.IBytes(uint64(len(w.Bytes())))
|
img.SizeHuman = sizeHuman(uint64(len(w.Bytes())))
|
||||||
|
|
||||||
dec, err := c.imageDecode(bytes.NewReader(w.Bytes()))
|
dec, err := c.imageDecode(bytes.NewReader(w.Bytes()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
+88
-64
@@ -6,7 +6,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"image"
|
"image"
|
||||||
"image/png"
|
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -14,12 +13,12 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
"github.com/gen2brain/avif"
|
folio "github.com/gen2brain/folio/doc"
|
||||||
"github.com/gen2brain/go-fitz"
|
"github.com/gen2brain/gav1d/avif"
|
||||||
"github.com/gen2brain/jpegli"
|
|
||||||
"github.com/gen2brain/jpegn"
|
"github.com/gen2brain/jpegn"
|
||||||
"github.com/gen2brain/jpegxl"
|
"github.com/gen2brain/jxl"
|
||||||
"github.com/gen2brain/webp"
|
"github.com/gen2brain/pngn"
|
||||||
|
"github.com/gen2brain/vpx/webp"
|
||||||
"github.com/jsummers/gobmp"
|
"github.com/jsummers/gobmp"
|
||||||
"github.com/mholt/archives"
|
"github.com/mholt/archives"
|
||||||
"golang.org/x/image/tiff"
|
"golang.org/x/image/tiff"
|
||||||
@@ -28,14 +27,14 @@ import (
|
|||||||
|
|
||||||
// convertDocument converts PDF/EPUB document to CBZ.
|
// convertDocument converts PDF/EPUB document to CBZ.
|
||||||
func (c *Converter) convertDocument(ctx context.Context, fileName string) error {
|
func (c *Converter) convertDocument(ctx context.Context, fileName string) error {
|
||||||
doc, err := fitz.New(fileName)
|
doc, err := folio.Open(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("convertDocument: %w", err)
|
return fmt.Errorf("convertDocument: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
defer doc.Close()
|
defer doc.Close()
|
||||||
|
|
||||||
c.Ncontents = doc.NumPage()
|
c.Ncontents = doc.NumPages()
|
||||||
c.CurrContent = 0
|
c.CurrContent = 0
|
||||||
|
|
||||||
if c.OnStart != nil {
|
if c.OnStart != nil {
|
||||||
@@ -47,23 +46,24 @@ func (c *Converter) convertDocument(ctx context.Context, fileName string) error
|
|||||||
|
|
||||||
for n := 0; n < c.Ncontents; n++ {
|
for n := 0; n < c.Ncontents; n++ {
|
||||||
if ctx.Err() != nil {
|
if ctx.Err() != nil {
|
||||||
return fmt.Errorf("convertDocument: %w", ctx.Err())
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
img, err := c.renderPage(doc, n)
|
eg.Go(func() error {
|
||||||
if err != nil {
|
img, err := c.renderPage(doc, n)
|
||||||
return fmt.Errorf("convertDocument: %w", err)
|
if err != nil {
|
||||||
}
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if img != nil {
|
if img == nil {
|
||||||
eg.Go(func() error {
|
return nil
|
||||||
return c.imageConvert(ctx, img, n, "")
|
}
|
||||||
})
|
|
||||||
}
|
return c.imageConvert(ctx, img, n, "")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
err = eg.Wait()
|
if err = eg.Wait(); err != nil {
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("convertDocument: %w", err)
|
return fmt.Errorf("convertDocument: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@ func (c *Converter) convertArchive(ctx context.Context, fileName string) error {
|
|||||||
|
|
||||||
// convertDirectory converts directory to CBZ.
|
// convertDirectory converts directory to CBZ.
|
||||||
func (c *Converter) convertDirectory(ctx context.Context, dirPath string) error {
|
func (c *Converter) convertDirectory(ctx context.Context, dirPath string) error {
|
||||||
contents, err := imagesFromPath(dirPath)
|
contents, err := filesFromPath(dirPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
return fmt.Errorf("convertDirectory: %w", err)
|
||||||
}
|
}
|
||||||
@@ -203,11 +203,7 @@ func (c *Converter) convertDirectory(ctx context.Context, dirPath string) error
|
|||||||
eg, ctx := errgroup.WithContext(ctx)
|
eg, ctx := errgroup.WithContext(ctx)
|
||||||
eg.SetLimit(runtime.NumCPU() + 1)
|
eg.SetLimit(runtime.NumCPU() + 1)
|
||||||
|
|
||||||
for index, img := range contents {
|
convertOne := func(index int, img string) error {
|
||||||
if ctx.Err() != nil {
|
|
||||||
return fmt.Errorf("convertDirectory: %w", ctx.Err())
|
|
||||||
}
|
|
||||||
|
|
||||||
rel, rerr := filepath.Rel(dirPath, img)
|
rel, rerr := filepath.Rel(dirPath, img)
|
||||||
if rerr != nil {
|
if rerr != nil {
|
||||||
rel = filepath.Base(img)
|
rel = filepath.Base(img)
|
||||||
@@ -217,28 +213,15 @@ func (c *Converter) convertDirectory(ctx context.Context, dirPath string) error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
return fmt.Errorf("convertDirectory: %w", err)
|
||||||
}
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
if isNonImage(img) && c.prefix == "" && !c.Opts.NoNonImage {
|
if isImage(img) {
|
||||||
if err = copyFile(file, c.workPath(flatName(rel))); err != nil {
|
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err = file.Close(); err != nil {
|
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
continue
|
|
||||||
} else if isImage(img) {
|
|
||||||
if c.Opts.NoConvert {
|
if c.Opts.NoConvert {
|
||||||
if err = copyFile(file, c.workPath(flatName(rel))); err != nil {
|
if err = copyFile(file, c.workPath(flatName(rel))); err != nil {
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
return fmt.Errorf("convertDirectory: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = file.Close(); err != nil {
|
return nil
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var i image.Image
|
var i image.Image
|
||||||
@@ -252,15 +235,7 @@ func (c *Converter) convertDirectory(ctx context.Context, dirPath string) error
|
|||||||
return fmt.Errorf("convertDirectory: %w", err)
|
return fmt.Errorf("convertDirectory: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = file.Close(); err != nil {
|
return nil
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if err = file.Close(); err != nil {
|
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if i != nil {
|
if i != nil {
|
||||||
@@ -268,12 +243,39 @@ func (c *Converter) convertDirectory(ctx context.Context, dirPath string) error
|
|||||||
return c.imageConvert(ctx, i, index, rel)
|
return c.imageConvert(ctx, i, index, rel)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if filepath.Ext(img) == ".DS_Store" || strings.Contains(img, "__MACOSX") {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.prefix == "" && !c.Opts.NoNonImage {
|
||||||
|
if err = copyFile(file, c.workPath(flatName(rel))); err != nil {
|
||||||
|
return fmt.Errorf("convertDirectory: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
for index, img := range contents {
|
||||||
|
if ctx.Err() != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = convertOne(index, img); err != nil {
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = eg.Wait()
|
if werr := eg.Wait(); werr != nil {
|
||||||
|
return fmt.Errorf("convertDirectory: %w", werr)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("convertDirectory: %w", err)
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@@ -361,6 +363,19 @@ func (c *Converter) imageTransform(img image.Image) image.Image {
|
|||||||
// jpegnOptions decodes straight to RGBA with high-quality chroma upsampling.
|
// jpegnOptions decodes straight to RGBA with high-quality chroma upsampling.
|
||||||
var jpegnOptions = jpegn.Options{ToRGBA: true, UpsampleMethod: jpegn.CatmullRom}
|
var jpegnOptions = jpegn.Options{ToRGBA: true, UpsampleMethod: jpegn.CatmullRom}
|
||||||
|
|
||||||
|
// pngnOptions keeps the rows a truncated file did carry.
|
||||||
|
var pngnOptions = pngn.Options{Partial: true}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
folio.RegisterPictureDecoder("jpeg", "\xff\xd8", func(b []byte) (image.Image, error) {
|
||||||
|
return jpegn.Decode(bytes.NewReader(b), nil)
|
||||||
|
})
|
||||||
|
|
||||||
|
folio.RegisterPictureDecoder("png", "\x89PNG\r\n\x1a\n", func(b []byte) (image.Image, error) {
|
||||||
|
return pngn.Decode(bytes.NewReader(b), &pngnOptions)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Converter) imageDecode(reader io.Reader) (image.Image, error) {
|
func (c *Converter) imageDecode(reader io.Reader) (image.Image, error) {
|
||||||
br := bufio.NewReader(reader)
|
br := bufio.NewReader(reader)
|
||||||
|
|
||||||
@@ -393,6 +408,15 @@ func (c *Converter) imageDecode(reader io.Reader) (image.Image, error) {
|
|||||||
return img, nil
|
return img, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if magic, err := br.Peek(8); err == nil && string(magic) == "\x89PNG\r\n\x1a\n" {
|
||||||
|
img, err := pngn.Decode(br, &pngnOptions)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("imageDecode: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return img, nil
|
||||||
|
}
|
||||||
|
|
||||||
img, _, err := image.Decode(br)
|
img, _, err := image.Decode(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return img, fmt.Errorf("imageDecode: %w", err)
|
return img, fmt.Errorf("imageDecode: %w", err)
|
||||||
@@ -418,35 +442,35 @@ func (c *Converter) imageEncode(img image.Image, w io.Writer) error {
|
|||||||
|
|
||||||
switch c.Opts.Format {
|
switch c.Opts.Format {
|
||||||
case "png":
|
case "png":
|
||||||
err = png.Encode(w, img)
|
err = pngn.Encode(w, img)
|
||||||
case "tiff":
|
case "tiff":
|
||||||
err = tiff.Encode(w, img, &tiff.Options{Compression: tiff.Uncompressed})
|
err = tiff.Encode(w, img, &tiff.Options{Compression: tiff.Uncompressed})
|
||||||
case "jpeg":
|
case "jpeg":
|
||||||
opts := &jpegli.EncodingOptions{}
|
opts := &jpegn.EncodeOptions{}
|
||||||
opts.Quality = c.Opts.Quality
|
opts.Quality = c.Opts.Quality
|
||||||
opts.ChromaSubsampling = image.YCbCrSubsampleRatio420
|
opts.Subsampling = jpegn.Subsample420
|
||||||
opts.ProgressiveLevel = 2
|
opts.Progressive = true
|
||||||
|
opts.OptimizeCoding = true
|
||||||
opts.AdaptiveQuantization = true
|
opts.AdaptiveQuantization = true
|
||||||
opts.DCTMethod = jpegli.DefaultDCTMethod
|
err = jpegn.Encode(w, img, opts)
|
||||||
err = jpegli.Encode(w, img, opts)
|
|
||||||
case "webp":
|
case "webp":
|
||||||
method := webp.DefaultMethod
|
method := webp.DefaultMethod
|
||||||
if c.Opts.Effort >= 0 {
|
if c.Opts.Effort >= 0 {
|
||||||
method = min(max(c.Opts.Effort, 0), 6)
|
method = min(max(c.Opts.Effort, 0), 6)
|
||||||
}
|
}
|
||||||
err = webp.Encode(w, img, webp.Options{Quality: c.Opts.Quality, Method: method, Lossless: c.Opts.Lossless})
|
err = webp.Encode(w, img, webp.EncodeOptions{Quality: c.Opts.Quality, Method: method, Lossless: c.Opts.Lossless})
|
||||||
case "avif":
|
case "avif":
|
||||||
speed := avif.DefaultSpeed
|
speed := avif.DefaultSpeed
|
||||||
if c.Opts.Effort >= 0 {
|
if c.Opts.Effort >= 0 {
|
||||||
speed = min(max(c.Opts.Effort, 0), 10)
|
speed = min(max(c.Opts.Effort, 0), 10)
|
||||||
}
|
}
|
||||||
err = avif.Encode(w, img, avif.Options{Quality: c.Opts.Quality, Speed: speed, Lossless: c.Opts.Lossless})
|
err = avif.Encode(w, img, avif.EncodeOptions{Quality: c.Opts.Quality, Speed: speed, Lossless: c.Opts.Lossless})
|
||||||
case "jxl":
|
case "jxl":
|
||||||
effort := jpegxl.DefaultEffort
|
effort := jxl.DefaultEffort
|
||||||
if c.Opts.Effort >= 0 {
|
if c.Opts.Effort >= 0 {
|
||||||
effort = min(max(c.Opts.Effort, 1), 10)
|
effort = min(max(c.Opts.Effort, 1), jxl.MaxEffort)
|
||||||
}
|
}
|
||||||
err = jpegxl.Encode(w, img, jpegxl.Options{Quality: c.Opts.Quality, Effort: effort, Lossless: c.Opts.Lossless})
|
err = jxl.Encode(w, img, jxl.EncodeOptions{Quality: c.Opts.Quality, Effort: effort, Lossless: c.Opts.Lossless})
|
||||||
case "bmp":
|
case "bmp":
|
||||||
opts := &gobmp.EncoderOptions{}
|
opts := &gobmp.EncoderOptions{}
|
||||||
opts.SupportTransparency(false)
|
opts.SupportTransparency(false)
|
||||||
|
|||||||
+7
-7
@@ -10,7 +10,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/fvbommel/sortorder"
|
"github.com/fvbommel/sortorder"
|
||||||
"github.com/gen2brain/go-fitz"
|
folio "github.com/gen2brain/folio/doc"
|
||||||
)
|
)
|
||||||
|
|
||||||
// coverArchive extracts cover from archive.
|
// coverArchive extracts cover from archive.
|
||||||
@@ -46,7 +46,7 @@ func (c *Converter) coverArchive(fileName string) (image.Image, error) {
|
|||||||
|
|
||||||
// coverDocument extracts cover from document.
|
// coverDocument extracts cover from document.
|
||||||
func (c *Converter) coverDocument(fileName string) (image.Image, error) {
|
func (c *Converter) coverDocument(fileName string) (image.Image, error) {
|
||||||
doc, err := fitz.New(fileName)
|
doc, err := folio.Open(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("coverDocument: %w", err)
|
return nil, fmt.Errorf("coverDocument: %w", err)
|
||||||
}
|
}
|
||||||
@@ -114,14 +114,14 @@ func (c *Converter) pageArchive(fileName string, page int) (image.Image, error)
|
|||||||
|
|
||||||
// pageDocument extracts the page-th rendered page from a document.
|
// pageDocument extracts the page-th rendered page from a document.
|
||||||
func (c *Converter) pageDocument(fileName string, page int) (image.Image, error) {
|
func (c *Converter) pageDocument(fileName string, page int) (image.Image, error) {
|
||||||
doc, err := fitz.New(fileName)
|
doc, err := folio.Open(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("pageDocument: %w", err)
|
return nil, fmt.Errorf("pageDocument: %w", err)
|
||||||
}
|
}
|
||||||
defer doc.Close()
|
defer doc.Close()
|
||||||
|
|
||||||
if page < 0 || page >= doc.NumPage() {
|
if page < 0 || page >= doc.NumPages() {
|
||||||
return nil, fmt.Errorf("pageDocument: page %d out of range (%d pages)", page+1, doc.NumPage())
|
return nil, fmt.Errorf("pageDocument: page %d out of range (%d pages)", page+1, doc.NumPages())
|
||||||
}
|
}
|
||||||
|
|
||||||
img, err := c.renderPage(doc, page)
|
img, err := c.renderPage(doc, page)
|
||||||
@@ -192,13 +192,13 @@ func (c *Converter) PageCount(fileName string, fileInfo os.FileInfo) (int, error
|
|||||||
|
|
||||||
return len(imagesFromSlice(contents)), nil
|
return len(imagesFromSlice(contents)), nil
|
||||||
case isDocument(fileName):
|
case isDocument(fileName):
|
||||||
doc, err := fitz.New(fileName)
|
doc, err := folio.Open(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, fmt.Errorf("PageCount: %w", err)
|
return 0, fmt.Errorf("PageCount: %w", err)
|
||||||
}
|
}
|
||||||
defer doc.Close()
|
defer doc.Close()
|
||||||
|
|
||||||
return doc.NumPage(), nil
|
return doc.NumPages(), nil
|
||||||
case isArchive(fileName):
|
case isArchive(fileName):
|
||||||
contents, err := c.archiveList(fileName)
|
contents, err := c.archiveList(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
+51
-1
@@ -3,6 +3,7 @@ package cbconvert
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"math"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -59,6 +60,55 @@ func imagesFromSlice(files []string) []string {
|
|||||||
return images
|
return images
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// filesFromPath returns list of all found files for given directory.
|
||||||
|
func filesFromPath(path string) ([]string, error) {
|
||||||
|
var files []string
|
||||||
|
|
||||||
|
walkFiles := func(fp string, f os.FileInfo, err error) error {
|
||||||
|
if !f.IsDir() && f.Mode()&os.ModeType == 0 && f.Size() > 0 {
|
||||||
|
files = append(files, fp)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
f, err := filepath.Abs(path)
|
||||||
|
if err != nil {
|
||||||
|
return files, fmt.Errorf("filesFromPath: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
stat, err := os.Stat(f)
|
||||||
|
if err != nil {
|
||||||
|
return files, fmt.Errorf("filesFromPath: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !stat.IsDir() && stat.Mode()&os.ModeType == 0 {
|
||||||
|
files = append(files, f)
|
||||||
|
} else if err = filepath.Walk(f, walkFiles); err != nil {
|
||||||
|
return files, fmt.Errorf("filesFromPath: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return files, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// sizeHuman formats a size in IEC units.
|
||||||
|
func sizeHuman(s uint64) string {
|
||||||
|
if s < 10 {
|
||||||
|
return fmt.Sprintf("%d B", s)
|
||||||
|
}
|
||||||
|
|
||||||
|
sizes := []string{"B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB"}
|
||||||
|
e := math.Floor(math.Log(float64(s)) / math.Log(1024))
|
||||||
|
val := math.Floor(float64(s)/math.Pow(1024, e)*10+0.5) / 10
|
||||||
|
|
||||||
|
f := "%.0f %s"
|
||||||
|
if val < 10 {
|
||||||
|
f = "%.1f %s"
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf(f, val, sizes[int(e)])
|
||||||
|
}
|
||||||
|
|
||||||
// isArchive checks if a file is archive.
|
// isArchive checks if a file is archive.
|
||||||
func isArchive(f string) bool {
|
func isArchive(f string) bool {
|
||||||
var types = []string{".rar", ".zip", ".7z", ".tar", ".cbr", ".cbz", ".cb7", ".cbt"}
|
var types = []string{".rar", ".zip", ".7z", ".tar", ".cbr", ".cbz", ".cb7", ".cbt"}
|
||||||
@@ -73,7 +123,7 @@ func isArchive(f string) bool {
|
|||||||
|
|
||||||
// isDocument checks if file is document.
|
// isDocument checks if file is document.
|
||||||
func isDocument(f string) bool {
|
func isDocument(f string) bool {
|
||||||
var types = []string{".pdf", ".xps", ".epub", ".mobi", ".docx", ".pptx", ".xlsx"}
|
var types = []string{".pdf", ".epub", ".mobi", ".chm", ".fb2", ".docx", ".pptx", ".xlsx"}
|
||||||
for _, t := range types {
|
for _, t := range types {
|
||||||
if strings.ToLower(filepath.Ext(f)) == t {
|
if strings.ToLower(filepath.Ext(f)) == t {
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ func loadCover(path string, w, h int) iup.Ihandle {
|
|||||||
func isComic(path string) bool {
|
func isComic(path string) bool {
|
||||||
switch strings.ToLower(filepath.Ext(path)) {
|
switch strings.ToLower(filepath.Ext(path)) {
|
||||||
case ".rar", ".zip", ".7z", ".tar", ".cbr", ".cbz", ".cb7", ".cbt",
|
case ".rar", ".zip", ".7z", ".tar", ".cbr", ".cbz", ".cb7", ".cbt",
|
||||||
".pdf", ".xps", ".epub", ".mobi", ".docx", ".pptx", ".xlsx":
|
".pdf", ".epub", ".mobi", ".chm", ".fb2", ".docx", ".pptx", ".xlsx":
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=CBconvert
|
Name=CBconvert
|
||||||
GenericName=A Comic Book converter
|
GenericName=A Comic Book converter
|
||||||
Comment=A comic converter with support for .cb*, .pdf, .xps, .epub, .mobi and directories.
|
Comment=A comic converter with support for .cb*, .pdf, .epub, .mobi, .chm and directories.
|
||||||
Exec=cbconvert-gui
|
Exec=cbconvert-gui
|
||||||
Icon=io.github.gen2brain.cbconvert
|
Icon=io.github.gen2brain.cbconvert
|
||||||
Terminal=false
|
Terminal=false
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<description>
|
<description>
|
||||||
<p>
|
<p>
|
||||||
A comic book converter with support for .cb*, .pdf, .xps, .epub, .mobi and directories.
|
A comic book converter with support for .cb*, .pdf, .epub, .mobi, .chm and directories.
|
||||||
Images can be converted to JPEG, PNG, TIFF, WEBP, AVIF, JXL or 4-Bit BMP (16 colors) file format.
|
Images can be converted to JPEG, PNG, TIFF, WEBP, AVIF, JXL or 4-Bit BMP (16 colors) file format.
|
||||||
</p>
|
</p>
|
||||||
</description>
|
</description>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Thumbnailer Entry]
|
[Thumbnailer Entry]
|
||||||
TryExec=cbconvert
|
TryExec=cbconvert
|
||||||
Exec=cbconvert thumbnail --quiet --width %s --outfile %o %i
|
Exec=cbconvert thumbnail --quiet --width %s --outfile %o %i
|
||||||
MimeType=application/pdf;application/x-cb7;application/x-cbt;application/epub+zip;application/vnd.comicbook-rar;application/vnd.comicbook+zip;application/x-mobipocket-ebook;application/vnd.ms-xpsdocument;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;
|
MimeType=application/pdf;application/x-cb7;application/x-cbt;application/epub+zip;application/vnd.comicbook-rar;application/vnd.comicbook+zip;application/x-mobipocket-ebook;application/vnd.ms-htmlhelp;application/x-fictionbook+xml;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;
|
||||||
|
|||||||
+164
-49
@@ -1,11 +1,50 @@
|
|||||||
# github.com/anthonynsimon/bild v0.14.0
|
# github.com/STARRY-S/zip v0.2.3
|
||||||
## explicit; go 1.21
|
## explicit; go 1.23
|
||||||
|
github.com/STARRY-S/zip
|
||||||
|
# github.com/andybalholm/brotli v1.2.1
|
||||||
|
## explicit; go 1.22
|
||||||
|
github.com/andybalholm/brotli
|
||||||
|
github.com/andybalholm/brotli/flate
|
||||||
|
github.com/andybalholm/brotli/matchfinder
|
||||||
|
# github.com/anthonynsimon/bild v0.15.0
|
||||||
|
## explicit; go 1.26
|
||||||
github.com/anthonynsimon/bild/adjust
|
github.com/anthonynsimon/bild/adjust
|
||||||
github.com/anthonynsimon/bild/clone
|
github.com/anthonynsimon/bild/clone
|
||||||
github.com/anthonynsimon/bild/math/f64
|
github.com/anthonynsimon/bild/math/f64
|
||||||
github.com/anthonynsimon/bild/parallel
|
github.com/anthonynsimon/bild/parallel
|
||||||
github.com/anthonynsimon/bild/transform
|
github.com/anthonynsimon/bild/transform
|
||||||
github.com/anthonynsimon/bild/util
|
github.com/anthonynsimon/bild/util
|
||||||
|
# github.com/bodgit/plumbing v1.3.0
|
||||||
|
## explicit; go 1.13
|
||||||
|
github.com/bodgit/plumbing
|
||||||
|
# github.com/bodgit/sevenzip v1.6.4
|
||||||
|
## explicit; go 1.25.0
|
||||||
|
github.com/bodgit/sevenzip
|
||||||
|
github.com/bodgit/sevenzip/internal/aes7z
|
||||||
|
github.com/bodgit/sevenzip/internal/bcj2
|
||||||
|
github.com/bodgit/sevenzip/internal/bra
|
||||||
|
github.com/bodgit/sevenzip/internal/brotli
|
||||||
|
github.com/bodgit/sevenzip/internal/bzip2
|
||||||
|
github.com/bodgit/sevenzip/internal/deflate
|
||||||
|
github.com/bodgit/sevenzip/internal/delta
|
||||||
|
github.com/bodgit/sevenzip/internal/lz4
|
||||||
|
github.com/bodgit/sevenzip/internal/lzma
|
||||||
|
github.com/bodgit/sevenzip/internal/lzma2
|
||||||
|
github.com/bodgit/sevenzip/internal/pool
|
||||||
|
github.com/bodgit/sevenzip/internal/ppmd
|
||||||
|
github.com/bodgit/sevenzip/internal/util
|
||||||
|
github.com/bodgit/sevenzip/internal/zstd
|
||||||
|
# github.com/bodgit/windows v1.0.1
|
||||||
|
## explicit; go 1.13
|
||||||
|
github.com/bodgit/windows
|
||||||
|
# github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707
|
||||||
|
## explicit; go 1.9
|
||||||
|
github.com/dsnet/compress
|
||||||
|
github.com/dsnet/compress/bzip2
|
||||||
|
github.com/dsnet/compress/bzip2/internal/sais
|
||||||
|
github.com/dsnet/compress/internal
|
||||||
|
github.com/dsnet/compress/internal/errors
|
||||||
|
github.com/dsnet/compress/internal/prefix
|
||||||
# github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d
|
# github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d
|
||||||
## explicit; go 1.13
|
## explicit; go 1.13
|
||||||
github.com/dsoprea/go-exif/v2
|
github.com/dsoprea/go-exif/v2
|
||||||
@@ -23,88 +62,140 @@ github.com/dsoprea/go-utility/image
|
|||||||
# github.com/dustin/go-humanize v1.0.1
|
# github.com/dustin/go-humanize v1.0.1
|
||||||
## explicit; go 1.16
|
## explicit; go 1.16
|
||||||
github.com/dustin/go-humanize
|
github.com/dustin/go-humanize
|
||||||
# github.com/ebitengine/purego v0.8.1
|
# github.com/ebitengine/purego v0.10.1
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
github.com/ebitengine/purego
|
github.com/ebitengine/purego
|
||||||
github.com/ebitengine/purego/internal/cgo
|
github.com/ebitengine/purego/internal/cgo
|
||||||
github.com/ebitengine/purego/internal/fakecgo
|
github.com/ebitengine/purego/internal/fakecgo
|
||||||
github.com/ebitengine/purego/internal/strings
|
github.com/ebitengine/purego/internal/strings
|
||||||
|
github.com/ebitengine/purego/internal/xreflect
|
||||||
# github.com/fvbommel/sortorder v1.1.0
|
# github.com/fvbommel/sortorder v1.1.0
|
||||||
## explicit; go 1.13
|
## explicit; go 1.13
|
||||||
github.com/fvbommel/sortorder
|
github.com/fvbommel/sortorder
|
||||||
# github.com/gen2brain/avif v0.4.1
|
# github.com/gen2brain/avif v0.5.1
|
||||||
## explicit; go 1.21
|
## explicit; go 1.25.0
|
||||||
github.com/gen2brain/avif
|
github.com/gen2brain/avif
|
||||||
# github.com/gen2brain/cbconvert v1.0.5-0.20241106181414-0dee611bf1de
|
# github.com/gen2brain/cbconvert v1.2.0
|
||||||
## explicit; go 1.23
|
## explicit; go 1.26
|
||||||
github.com/gen2brain/cbconvert
|
github.com/gen2brain/cbconvert
|
||||||
# github.com/gen2brain/go-fitz v1.24.14
|
# github.com/gen2brain/go-fitz v1.28.1
|
||||||
## explicit; go 1.22
|
## explicit; go 1.24.0
|
||||||
github.com/gen2brain/go-fitz
|
github.com/gen2brain/go-fitz
|
||||||
github.com/gen2brain/go-fitz/include/mupdf
|
github.com/gen2brain/go-fitz/include/mupdf
|
||||||
github.com/gen2brain/go-fitz/include/mupdf/fitz
|
github.com/gen2brain/go-fitz/include/mupdf/fitz
|
||||||
github.com/gen2brain/go-fitz/libs
|
github.com/gen2brain/go-fitz/libs
|
||||||
# github.com/gen2brain/go-unarr v0.2.4
|
# github.com/gen2brain/iup-go/iup v0.32.1-0.20260627135200-7df674d35173
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/gen2brain/go-unarr
|
|
||||||
github.com/gen2brain/go-unarr/unarrc
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/bzip2
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/unarr
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/unarr/_7z
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/unarr/common
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/unarr/lzmasdk
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/unarr/rar
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/unarr/tar
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/unarr/zip
|
|
||||||
github.com/gen2brain/go-unarr/unarrc/external/zlib
|
|
||||||
# github.com/gen2brain/iup-go/iup v0.0.0-20241106050025-0f971ac33ed4
|
|
||||||
## explicit; go 1.22
|
|
||||||
github.com/gen2brain/iup-go/iup
|
github.com/gen2brain/iup-go/iup
|
||||||
github.com/gen2brain/iup-go/iup/external
|
github.com/gen2brain/iup-go/iup/external
|
||||||
github.com/gen2brain/iup-go/iup/external/include
|
github.com/gen2brain/iup-go/iup/external/include
|
||||||
github.com/gen2brain/iup-go/iup/external/src
|
github.com/gen2brain/iup-go/iup/external/src
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/android
|
||||||
github.com/gen2brain/iup-go/iup/external/src/cocoa
|
github.com/gen2brain/iup-go/iup/external/src/cocoa
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/cocoatouch
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/efl
|
||||||
github.com/gen2brain/iup-go/iup/external/src/gtk
|
github.com/gen2brain/iup-go/iup/external/src/gtk
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/gtk4
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/haiku
|
||||||
github.com/gen2brain/iup-go/iup/external/src/mot
|
github.com/gen2brain/iup-go/iup/external/src/mot
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/qt
|
||||||
github.com/gen2brain/iup-go/iup/external/src/win
|
github.com/gen2brain/iup-go/iup/external/src/win
|
||||||
github.com/gen2brain/iup-go/iup/external/src/win/wdl
|
github.com/gen2brain/iup-go/iup/external/src/win/wdl
|
||||||
github.com/gen2brain/iup-go/iup/external/src/win/wdl/dummy
|
github.com/gen2brain/iup-go/iup/external/src/win/wdl/dummy
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/winui
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/winui/winrt
|
||||||
|
github.com/gen2brain/iup-go/iup/external/src/winui/winrt/impl
|
||||||
|
github.com/gen2brain/iup-go/iup/external/srcctrl
|
||||||
|
github.com/gen2brain/iup-go/iup/external/srcctrl/matrix
|
||||||
|
github.com/gen2brain/iup-go/iup/external/srcctrl/matrixex
|
||||||
github.com/gen2brain/iup-go/iup/external/srcgl
|
github.com/gen2brain/iup-go/iup/external/srcgl
|
||||||
|
github.com/gen2brain/iup-go/iup/external/srcplot
|
||||||
|
github.com/gen2brain/iup-go/iup/external/srcweb
|
||||||
github.com/gen2brain/iup-go/iup/manifest
|
github.com/gen2brain/iup-go/iup/manifest
|
||||||
# github.com/gen2brain/jpegli v0.3.3
|
# github.com/gen2brain/jpegli v0.4.1
|
||||||
## explicit; go 1.22
|
## explicit; go 1.25.0
|
||||||
github.com/gen2brain/jpegli
|
github.com/gen2brain/jpegli
|
||||||
# github.com/gen2brain/jpegxl v0.4.2
|
# github.com/gen2brain/jpegn v0.4.2
|
||||||
## explicit; go 1.22
|
## explicit; go 1.23.0
|
||||||
|
github.com/gen2brain/jpegn
|
||||||
|
# github.com/gen2brain/jpegxl v0.5.2
|
||||||
|
## explicit; go 1.25.0
|
||||||
github.com/gen2brain/jpegxl
|
github.com/gen2brain/jpegxl
|
||||||
# github.com/gen2brain/webp v0.5.1
|
# github.com/gen2brain/webp v0.6.1
|
||||||
## explicit; go 1.22
|
## explicit; go 1.23
|
||||||
github.com/gen2brain/webp
|
github.com/gen2brain/webp
|
||||||
# github.com/go-errors/errors v1.5.1
|
# github.com/go-errors/errors v1.5.1
|
||||||
## explicit; go 1.14
|
## explicit; go 1.14
|
||||||
github.com/go-errors/errors
|
github.com/go-errors/errors
|
||||||
# github.com/godbus/dbus/v5 v5.1.0
|
# github.com/golang/geo v0.0.0-20260625163123-7c0e84413537
|
||||||
## explicit; go 1.12
|
## explicit; go 1.23.0
|
||||||
github.com/godbus/dbus/v5
|
|
||||||
# github.com/golang/geo v0.0.0-20230421003525-6adc56603217
|
|
||||||
## explicit; go 1.18
|
|
||||||
github.com/golang/geo/r1
|
github.com/golang/geo/r1
|
||||||
github.com/golang/geo/r2
|
github.com/golang/geo/r2
|
||||||
github.com/golang/geo/r3
|
github.com/golang/geo/r3
|
||||||
github.com/golang/geo/s1
|
github.com/golang/geo/s1
|
||||||
github.com/golang/geo/s2
|
github.com/golang/geo/s2
|
||||||
# github.com/google/uuid v1.6.0
|
# github.com/hashicorp/golang-lru/v2 v2.0.7
|
||||||
## explicit
|
## explicit; go 1.18
|
||||||
github.com/google/uuid
|
github.com/hashicorp/golang-lru/v2
|
||||||
|
github.com/hashicorp/golang-lru/v2/internal
|
||||||
|
github.com/hashicorp/golang-lru/v2/simplelru
|
||||||
# github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25
|
# github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25
|
||||||
## explicit
|
## explicit
|
||||||
github.com/jsummers/gobmp
|
github.com/jsummers/gobmp
|
||||||
# github.com/jupiterrider/ffi v0.2.1
|
# github.com/klauspost/compress v1.18.6
|
||||||
## explicit; go 1.18
|
## explicit; go 1.24
|
||||||
github.com/jupiterrider/ffi
|
github.com/klauspost/compress
|
||||||
# github.com/tetratelabs/wazero v1.8.1
|
github.com/klauspost/compress/flate
|
||||||
|
github.com/klauspost/compress/fse
|
||||||
|
github.com/klauspost/compress/gzip
|
||||||
|
github.com/klauspost/compress/huff0
|
||||||
|
github.com/klauspost/compress/internal/cpuinfo
|
||||||
|
github.com/klauspost/compress/internal/godebug
|
||||||
|
github.com/klauspost/compress/internal/le
|
||||||
|
github.com/klauspost/compress/internal/race
|
||||||
|
github.com/klauspost/compress/internal/snapref
|
||||||
|
github.com/klauspost/compress/s2
|
||||||
|
github.com/klauspost/compress/zip
|
||||||
|
github.com/klauspost/compress/zlib
|
||||||
|
github.com/klauspost/compress/zstd
|
||||||
|
github.com/klauspost/compress/zstd/internal/xxhash
|
||||||
|
# github.com/klauspost/pgzip v1.2.6
|
||||||
|
## explicit
|
||||||
|
github.com/klauspost/pgzip
|
||||||
|
# github.com/mholt/archives v0.1.5
|
||||||
|
## explicit; go 1.24.0
|
||||||
|
github.com/mholt/archives
|
||||||
|
# github.com/mikelolasagasti/xz v1.0.1
|
||||||
|
## explicit; go 1.15
|
||||||
|
github.com/mikelolasagasti/xz
|
||||||
|
# github.com/minio/minlz v1.1.1
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
|
github.com/minio/minlz
|
||||||
|
github.com/minio/minlz/internal/race
|
||||||
|
# github.com/nwaples/rardecode/v2 v2.2.5
|
||||||
|
## explicit; go 1.21
|
||||||
|
github.com/nwaples/rardecode/v2
|
||||||
|
# github.com/pierrec/lz4/v4 v4.1.27
|
||||||
|
## explicit; go 1.17
|
||||||
|
github.com/pierrec/lz4/v4
|
||||||
|
github.com/pierrec/lz4/v4/internal/lz4block
|
||||||
|
github.com/pierrec/lz4/v4/internal/lz4errors
|
||||||
|
github.com/pierrec/lz4/v4/internal/lz4stream
|
||||||
|
github.com/pierrec/lz4/v4/internal/xxh32
|
||||||
|
# github.com/sorairolake/lzip-go v0.3.8
|
||||||
|
## explicit; go 1.22
|
||||||
|
github.com/sorairolake/lzip-go
|
||||||
|
# github.com/spf13/afero v1.15.0
|
||||||
|
## explicit; go 1.23.0
|
||||||
|
github.com/spf13/afero
|
||||||
|
github.com/spf13/afero/internal/common
|
||||||
|
github.com/spf13/afero/mem
|
||||||
|
# github.com/stangelandcl/ppmd v0.1.1
|
||||||
|
## explicit; go 1.17
|
||||||
|
github.com/stangelandcl/ppmd
|
||||||
|
github.com/stangelandcl/ppmd/internal/h7z
|
||||||
|
# github.com/tetratelabs/wazero v1.12.0
|
||||||
|
## explicit; go 1.25.0
|
||||||
github.com/tetratelabs/wazero
|
github.com/tetratelabs/wazero
|
||||||
github.com/tetratelabs/wazero/api
|
github.com/tetratelabs/wazero/api
|
||||||
github.com/tetratelabs/wazero/experimental
|
github.com/tetratelabs/wazero/experimental
|
||||||
@@ -122,7 +213,6 @@ github.com/tetratelabs/wazero/internal/engine/wazevo/ssa
|
|||||||
github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi
|
github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi
|
||||||
github.com/tetratelabs/wazero/internal/expctxkeys
|
github.com/tetratelabs/wazero/internal/expctxkeys
|
||||||
github.com/tetratelabs/wazero/internal/filecache
|
github.com/tetratelabs/wazero/internal/filecache
|
||||||
github.com/tetratelabs/wazero/internal/fsapi
|
|
||||||
github.com/tetratelabs/wazero/internal/ieee754
|
github.com/tetratelabs/wazero/internal/ieee754
|
||||||
github.com/tetratelabs/wazero/internal/internalapi
|
github.com/tetratelabs/wazero/internal/internalapi
|
||||||
github.com/tetratelabs/wazero/internal/leb128
|
github.com/tetratelabs/wazero/internal/leb128
|
||||||
@@ -140,17 +230,42 @@ github.com/tetratelabs/wazero/internal/wasm/binary
|
|||||||
github.com/tetratelabs/wazero/internal/wasmdebug
|
github.com/tetratelabs/wazero/internal/wasmdebug
|
||||||
github.com/tetratelabs/wazero/internal/wasmruntime
|
github.com/tetratelabs/wazero/internal/wasmruntime
|
||||||
github.com/tetratelabs/wazero/sys
|
github.com/tetratelabs/wazero/sys
|
||||||
# golang.org/x/image v0.21.0
|
# github.com/ulikunitz/xz v0.5.15
|
||||||
## explicit; go 1.18
|
## explicit; go 1.12
|
||||||
|
github.com/ulikunitz/xz
|
||||||
|
github.com/ulikunitz/xz/internal/hash
|
||||||
|
github.com/ulikunitz/xz/internal/xlog
|
||||||
|
github.com/ulikunitz/xz/lzma
|
||||||
|
# go4.org v0.0.0-20260112195520-a5071408f32f
|
||||||
|
## explicit; go 1.24.0
|
||||||
|
go4.org/readerutil
|
||||||
|
# golang.org/x/image v0.43.0
|
||||||
|
## explicit; go 1.25.0
|
||||||
golang.org/x/image/ccitt
|
golang.org/x/image/ccitt
|
||||||
|
golang.org/x/image/internal/safemath
|
||||||
golang.org/x/image/tiff
|
golang.org/x/image/tiff
|
||||||
golang.org/x/image/tiff/lzw
|
golang.org/x/image/tiff/lzw
|
||||||
# golang.org/x/net v0.30.0
|
# golang.org/x/net v0.56.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.25.0
|
||||||
golang.org/x/net/context
|
golang.org/x/net/context
|
||||||
# golang.org/x/sync v0.8.0
|
# golang.org/x/sync v0.21.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.25.0
|
||||||
golang.org/x/sync/errgroup
|
golang.org/x/sync/errgroup
|
||||||
|
# golang.org/x/sys v0.46.0
|
||||||
|
## explicit; go 1.25.0
|
||||||
|
golang.org/x/sys/cpu
|
||||||
|
golang.org/x/sys/unix
|
||||||
|
golang.org/x/sys/windows
|
||||||
|
# golang.org/x/text v0.38.0
|
||||||
|
## explicit; go 1.25.0
|
||||||
|
golang.org/x/text/encoding
|
||||||
|
golang.org/x/text/encoding/internal
|
||||||
|
golang.org/x/text/encoding/internal/identifier
|
||||||
|
golang.org/x/text/encoding/unicode
|
||||||
|
golang.org/x/text/internal/utf8internal
|
||||||
|
golang.org/x/text/runes
|
||||||
|
golang.org/x/text/transform
|
||||||
|
golang.org/x/text/unicode/norm
|
||||||
# gopkg.in/yaml.v2 v2.4.0
|
# gopkg.in/yaml.v2 v2.4.0
|
||||||
## explicit; go 1.15
|
## explicit; go 1.15
|
||||||
gopkg.in/yaml.v2
|
gopkg.in/yaml.v2
|
||||||
|
|||||||
+20
-31
@@ -1,54 +1,43 @@
|
|||||||
module github.com/gen2brain/cbconvert/cmd/cbconvert-gui
|
module github.com/gen2brain/cbconvert/cmd/cbconvert-gui
|
||||||
|
|
||||||
go 1.26
|
go 1.26.4
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/fvbommel/sortorder v1.1.0
|
github.com/fvbommel/sortorder v1.1.0
|
||||||
github.com/gen2brain/cbconvert v1.0.5-0.20260627172825-0f6e32c177ee
|
github.com/gen2brain/cbconvert v1.2.1-0.20260825104346-a90395759b8c
|
||||||
github.com/gen2brain/iup-go/iup v0.32.1-0.20260627135200-7df674d35173
|
github.com/gen2brain/iup-go/iup v0.32.1-0.20260627135200-7df674d35173
|
||||||
|
github.com/gen2brain/pngn v0.1.2
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/STARRY-S/zip v0.2.3 // indirect
|
github.com/STARRY-S/zip v0.2.3 // indirect
|
||||||
github.com/andybalholm/brotli v1.2.1 // indirect
|
github.com/andybalholm/brotli v1.2.2 // indirect
|
||||||
github.com/anthonynsimon/bild v0.15.0 // indirect
|
github.com/anthonynsimon/bild v0.17.0 // indirect
|
||||||
github.com/bodgit/plumbing v1.3.0 // indirect
|
github.com/bodgit/plumbing v1.3.0 // indirect
|
||||||
github.com/bodgit/sevenzip v1.6.4 // indirect
|
github.com/bodgit/sevenzip v1.6.5 // indirect
|
||||||
github.com/bodgit/windows v1.0.1 // indirect
|
github.com/bodgit/windows v1.0.1 // indirect
|
||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d // indirect
|
github.com/gen2brain/folio v0.2.4 // indirect
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect
|
github.com/gen2brain/gav1d v0.2.5 // indirect
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d // indirect
|
github.com/gen2brain/jpegn v0.6.1 // indirect
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349 // indirect
|
github.com/gen2brain/jxl v0.2.0 // indirect
|
||||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
github.com/gen2brain/vpx v0.2.1 // indirect
|
||||||
github.com/ebitengine/purego v0.10.1 // indirect
|
|
||||||
github.com/gen2brain/avif v0.5.1 // indirect
|
|
||||||
github.com/gen2brain/go-fitz v1.28.0 // indirect
|
|
||||||
github.com/gen2brain/jpegli v0.4.1 // indirect
|
|
||||||
github.com/gen2brain/jpegn v0.4.2 // indirect
|
|
||||||
github.com/gen2brain/jpegxl v0.5.2 // indirect
|
|
||||||
github.com/gen2brain/webp v0.6.1 // indirect
|
|
||||||
github.com/go-errors/errors v1.5.1 // indirect
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537 // indirect
|
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect
|
||||||
github.com/klauspost/compress v1.18.6 // indirect
|
github.com/klauspost/compress v1.19.2 // indirect
|
||||||
github.com/klauspost/pgzip v1.2.6 // indirect
|
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||||
github.com/mholt/archives v0.1.5 // indirect
|
github.com/mholt/archives v0.1.5 // indirect
|
||||||
github.com/mikelolasagasti/xz v1.0.1 // indirect
|
github.com/mikelolasagasti/xz v1.0.1 // indirect
|
||||||
github.com/minio/minlz v1.1.1 // indirect
|
github.com/minio/minlz v1.2.0 // indirect
|
||||||
github.com/nwaples/rardecode/v2 v2.2.5 // indirect
|
github.com/nwaples/rardecode/v2 v2.4.1 // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.27 // indirect
|
github.com/pierrec/lz4/v4 v4.1.29 // indirect
|
||||||
github.com/sorairolake/lzip-go v0.3.8 // indirect
|
github.com/sorairolake/lzip-go v0.3.8 // indirect
|
||||||
github.com/spf13/afero v1.15.0 // indirect
|
github.com/spf13/afero v1.15.0 // indirect
|
||||||
github.com/stangelandcl/ppmd v0.1.1 // indirect
|
github.com/stangelandcl/ppmd v0.1.1 // indirect
|
||||||
github.com/tetratelabs/wazero v1.12.0 // indirect
|
github.com/ulikunitz/xz v0.5.16 // indirect
|
||||||
github.com/ulikunitz/xz v0.5.15 // indirect
|
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f // indirect
|
go4.org v0.0.0-20260112195520-a5071408f32f // indirect
|
||||||
golang.org/x/image v0.43.0 // indirect
|
golang.org/x/image v0.45.0 // indirect
|
||||||
golang.org/x/net v0.56.0 // indirect
|
golang.org/x/net v0.58.0 // indirect
|
||||||
golang.org/x/sync v0.21.0 // indirect
|
golang.org/x/sync v0.22.0 // indirect
|
||||||
golang.org/x/sys v0.46.0 // indirect
|
golang.org/x/text v0.41.0 // indirect
|
||||||
golang.org/x/text v0.38.0 // indirect
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
|
||||||
)
|
)
|
||||||
|
|||||||
+38
-88
@@ -1,13 +1,13 @@
|
|||||||
github.com/STARRY-S/zip v0.2.3 h1:luE4dMvRPDOWQdeDdUxUoZkzUIpTccdKdhHHsQJ1fm4=
|
github.com/STARRY-S/zip v0.2.3 h1:luE4dMvRPDOWQdeDdUxUoZkzUIpTccdKdhHHsQJ1fm4=
|
||||||
github.com/STARRY-S/zip v0.2.3/go.mod h1:lqJ9JdeRipyOQJrYSOtpNAiaesFO6zVDsE8GIGFaoSk=
|
github.com/STARRY-S/zip v0.2.3/go.mod h1:lqJ9JdeRipyOQJrYSOtpNAiaesFO6zVDsE8GIGFaoSk=
|
||||||
github.com/andybalholm/brotli v1.2.1 h1:R+f5xP285VArJDRgowrfb9DqL18yVK0gKAW/F+eTWro=
|
github.com/andybalholm/brotli v1.2.2 h1:HzTuoo2ErYQqf5qvcJInB8uvqSVxRttzkFexPWtnceM=
|
||||||
github.com/andybalholm/brotli v1.2.1/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
|
github.com/andybalholm/brotli v1.2.2/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
|
||||||
github.com/anthonynsimon/bild v0.15.0 h1:FzvaNLuNlAPKw1Xz7V2WYOcGIEBMj8Y6ZyAk7CI+HzA=
|
github.com/anthonynsimon/bild v0.17.0 h1:kmPJOZpUgvrM2uoS7KMesbDU5+QTvZ92zIBjHM/oa18=
|
||||||
github.com/anthonynsimon/bild v0.15.0/go.mod h1:qIgJ9FldkCn0iy5Ad24fzUkz5R+iJ0WfhiV+6FeCB5A=
|
github.com/anthonynsimon/bild v0.17.0/go.mod h1:ULwssBwK+8dLFObGrI3fIydKYQ2l454Y0eo+mqPclto=
|
||||||
github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=
|
github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=
|
||||||
github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=
|
github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=
|
||||||
github.com/bodgit/sevenzip v1.6.4 h1:iHiVJfxbrB6RF4X+snI2MpVgNBKmVfGaTqZGNlMQIU0=
|
github.com/bodgit/sevenzip v1.6.5 h1:7H7BxgmeX0j6UX42lH+KXQ92WgMQJ49DoocFdfHbCng=
|
||||||
github.com/bodgit/sevenzip v1.6.4/go.mod h1:ZtNi5KNgHXeXg1G7WiF0IWSuFE2eG6lt/cTGlvuirO0=
|
github.com/bodgit/sevenzip v1.6.5/go.mod h1:GhuB6Lq1xCpP1sps+horjZ8lgiKPJcy2zUX3prla9wc=
|
||||||
github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
|
github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
|
||||||
github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
|
github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@@ -16,64 +16,32 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
|||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
|
||||||
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
|
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20200321225314-640175a69fe4/go.mod h1:Lm2lMM2zx8p4a34ZemkaUV95AnMl4ZvLbCUbwOvLC2E=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20200604193436-ca8584a0e1c4/go.mod h1:9EXlPeHfblFFnwu5UOqmP2eoZfJyAZ2Ri/Vki33ajO0=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d h1:yeH8wrJa3+8uKKDAdURHUK1ds2UvKhMqX2MiOdVeKPs=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d/go.mod h1:oKrjk2kb3rAR5NbtSTLUMvMSbc+k8ZosI3MaVH47noc=
|
|
||||||
github.com/dsoprea/go-exif/v3 v3.0.0-20200717053412-08f1b6708903/go.mod h1:0nsO1ce0mh5czxGeLo4+OCZ/C6Eo6ZlMWsz7rH/Gxv8=
|
|
||||||
github.com/dsoprea/go-exif/v3 v3.0.0-20210512043655-120bcdb2a55e/go.mod h1:cg5SNYKHMmzxsr9X6ZeLh/nfBRHHp5PngtEPcujONtk=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20190624164917-c4f10aab7696/go.mod h1:Nm/x2ZUNRW6Fe5C3LxdY1PyZY5wmDv/s5dkPJ/VB3iA=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd h1:l+vLbuxptsC6VQyQsfD7NnEC8BZuFpz45PgY+pH8YTg=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8=
|
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d h1:8+qI8ant/vZkNSsbwSjIR6XJfWcDVTg/qx/3pRUUZNA=
|
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d/go.mod h1:yTR3tKgyk20phAFg6IE9ulMA5NjEDD2wyx+okRFLVtw=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20200711062821-fab8125e9bdf/go.mod h1:95+K3z2L0mqsVYd6yveIv1lmtT3tcQQ3dVakPySffW8=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349 h1:/py11NlxDaOxkT9OKN+gXgT+QOH5xj1ZRoyusfRIlo4=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349/go.mod h1:KVK+/Hul09ujXAGq+42UBgCTnXkiJZRnLYdURGjQUwo=
|
|
||||||
github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e/go.mod h1:uAzdkPTub5Y9yQwXe8W4m2XuP0tK4a9Q/dantD0+uaU=
|
|
||||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
|
||||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
|
||||||
github.com/ebitengine/purego v0.10.1 h1:dewVBCBT2GaMu1SrNTYxQhgQBethzfhiwvZiLGP/qyY=
|
|
||||||
github.com/ebitengine/purego v0.10.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
|
||||||
github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw=
|
github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw=
|
||||||
github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
|
github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
|
||||||
github.com/gen2brain/avif v0.5.1 h1:LQzLsJpWyGlsa4wuZ3D57qEbCiICIK7Yidz5ZPEwzTk=
|
github.com/gen2brain/cbconvert v1.2.1-0.20260825104346-a90395759b8c h1:4Z25IjDP3akCwnNA8/wetf7xlR+CI78OTpOfM0s+gCs=
|
||||||
github.com/gen2brain/avif v0.5.1/go.mod h1:QgrYqdVE9y40PCfArK9VakcMIpYeDYpZmCSLkW6C1n8=
|
github.com/gen2brain/cbconvert v1.2.1-0.20260825104346-a90395759b8c/go.mod h1:qnfGiVa7nmTZn2PiG3DvyKShqPtc/97Ibm9WUbOq/xg=
|
||||||
github.com/gen2brain/cbconvert v1.0.5-0.20260627172825-0f6e32c177ee h1:9ggHORYXL+0zSdfC0bJA049amaH5wW6jZgO5dGisKm4=
|
github.com/gen2brain/folio v0.2.4 h1:c1eZYBucycynbyF1UkAXC8Zm/NbWMjHQhckDrz5gBWg=
|
||||||
github.com/gen2brain/cbconvert v1.0.5-0.20260627172825-0f6e32c177ee/go.mod h1:KrAZdAzcMj1XQkfDz5bp0hotVFUB2k9hRT+9F4b5f2E=
|
github.com/gen2brain/folio v0.2.4/go.mod h1:4/PcXfaXIYmW1nwQ4bJeE+aG5ybG58Aw9xrwODXaXII=
|
||||||
github.com/gen2brain/go-fitz v1.28.0 h1:RovqgQPAcOuyv5HZrWsTWl8qwlwbAHSKcAZXZUw0Vlk=
|
github.com/gen2brain/gav1d v0.2.5 h1:Zg5/DE1JBdf8kxZqIvNo2ZEizF9DVF9jdPTAKJQZbOY=
|
||||||
github.com/gen2brain/go-fitz v1.28.0/go.mod h1:pY2hqAjp9Zy7qfPI2gwbJMHBFAdZpVXOLrRxD82l3Bs=
|
github.com/gen2brain/gav1d v0.2.5/go.mod h1:ReFKjHq7pvRhEk+pgRPAo9gOlcrf51sdzVcAbbX7e0E=
|
||||||
github.com/gen2brain/iup-go/iup v0.32.1-0.20260627135200-7df674d35173 h1:nBt0N1ixK8eg/7RXJIC4b0WDPxfENqyT+rH1/STZGj4=
|
github.com/gen2brain/iup-go/iup v0.32.1-0.20260627135200-7df674d35173 h1:nBt0N1ixK8eg/7RXJIC4b0WDPxfENqyT+rH1/STZGj4=
|
||||||
github.com/gen2brain/iup-go/iup v0.32.1-0.20260627135200-7df674d35173/go.mod h1:V4f7tHOJAeHtjQ+ju795QKv6DGdLEb4L5cmWB1sjSzU=
|
github.com/gen2brain/iup-go/iup v0.32.1-0.20260627135200-7df674d35173/go.mod h1:V4f7tHOJAeHtjQ+ju795QKv6DGdLEb4L5cmWB1sjSzU=
|
||||||
github.com/gen2brain/jpegli v0.4.1 h1:qc11IQU0jTYFltroulT4MXmbu9YRftqHV0YBZ0Bqz5o=
|
github.com/gen2brain/jpegn v0.6.1 h1:S+Em15BvqCl/cTvebB6JU67ndDVdFWPhB0GbxNkWlOE=
|
||||||
github.com/gen2brain/jpegli v0.4.1/go.mod h1:zJ++s4symmKCN1CLkrY0dGXTY3s0NWbd94Rz9KLdCzk=
|
github.com/gen2brain/jpegn v0.6.1/go.mod h1:43hks+w5VNTUDU34uk0tsXYJ97nbYL2idAlZF0D66+A=
|
||||||
github.com/gen2brain/jpegn v0.4.2 h1:sxy2yolV1eNA02uYtnqBFm4EIC3ETnars98aG7Dc4LM=
|
github.com/gen2brain/jxl v0.2.0 h1:cXSQnfbcC0JGFzaI344VzPMbe7mh6rYc0tjPcBUsE4U=
|
||||||
github.com/gen2brain/jpegn v0.4.2/go.mod h1:YvcVOmVPSAsefH6yn9HBW3uY0EHlZwCMoiJXoAWfgL0=
|
github.com/gen2brain/jxl v0.2.0/go.mod h1:VjJHRai/8I8Es01mULqyiOihRBOjJr1Zo+NoN/MyIwo=
|
||||||
github.com/gen2brain/jpegxl v0.5.2 h1:1ou9YRziU8PbpkfFJIyxrNjYM+WaMl2n9LloABxkKsU=
|
github.com/gen2brain/pngn v0.1.2 h1:j1ikFmwRpJnVxnFcwekIMYzBLOsEXDVrOSHCwqQcnV8=
|
||||||
github.com/gen2brain/jpegxl v0.5.2/go.mod h1:Wlc6lqx03RJfhiQRyHa2e+8VQwT4/qv7zSRsNv9T+yE=
|
github.com/gen2brain/pngn v0.1.2/go.mod h1:jmw3LV2MHgoK4PBdsLC3YTiLUBaY5Nlfi3UFvxqJc9E=
|
||||||
github.com/gen2brain/webp v0.6.1 h1:ei7Y1SWpQcdqz3YNDNyn4y2nQanxs9WLzwW5/2DKS64=
|
github.com/gen2brain/vpx v0.2.1 h1:UD6tibcs/zlaIOKNFXeVyZuHBEaW9GYfxKSxvAN9cc8=
|
||||||
github.com/gen2brain/webp v0.6.1/go.mod h1:iGWMaCSw7t3I/Cv9llzEKmpnR36S8lS8VL/ZVjxU0JE=
|
github.com/gen2brain/vpx v0.2.1/go.mod h1:EVIdqguMSiapbtjDm4AWgFgYYJ4d+k8trXqjxYZ/4XE=
|
||||||
github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
|
|
||||||
github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
|
|
||||||
github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
|
|
||||||
github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk=
|
|
||||||
github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
|
||||||
github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
|
||||||
github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537 h1:KeIaDS/+VEy/bhDYjG3Z78dOyLAU4HXcVxmd0WYHJTE=
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537/go.mod h1:Mymr9kRGDc64JPr03TSZmuIBODZ3KyswLzm1xL0HFA8=
|
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
|
||||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
|
||||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/compress v1.18.6 h1:2jupLlAwFm95+YDR+NwD2MEfFO9d4z4Prjl1XXDjuao=
|
github.com/klauspost/compress v1.19.2 h1:hMRETovs/pu/dVWN7zIT1PGG8t509MwT6bO7XSi26R8=
|
||||||
github.com/klauspost/compress v1.18.6/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
|
github.com/klauspost/compress v1.19.2/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
|
||||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
|
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
|
||||||
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||||
@@ -81,12 +49,12 @@ github.com/mholt/archives v0.1.5 h1:Fh2hl1j7VEhc6DZs2DLMgiBNChUux154a1G+2esNvzQ=
|
|||||||
github.com/mholt/archives v0.1.5/go.mod h1:3TPMmBLPsgszL+1As5zECTuKwKvIfj6YcwWPpeTAXF4=
|
github.com/mholt/archives v0.1.5/go.mod h1:3TPMmBLPsgszL+1As5zECTuKwKvIfj6YcwWPpeTAXF4=
|
||||||
github.com/mikelolasagasti/xz v1.0.1 h1:Q2F2jX0RYJUG3+WsM+FJknv+6eVjsjXNDV0KJXZzkD0=
|
github.com/mikelolasagasti/xz v1.0.1 h1:Q2F2jX0RYJUG3+WsM+FJknv+6eVjsjXNDV0KJXZzkD0=
|
||||||
github.com/mikelolasagasti/xz v1.0.1/go.mod h1:muAirjiOUxPRXwm9HdDtB3uoRPrGnL85XHtokL9Hcgc=
|
github.com/mikelolasagasti/xz v1.0.1/go.mod h1:muAirjiOUxPRXwm9HdDtB3uoRPrGnL85XHtokL9Hcgc=
|
||||||
github.com/minio/minlz v1.1.1 h1:OGmft1V6AnI/Wme332U6bhG54nxEan+VFgkD7lat4KM=
|
github.com/minio/minlz v1.2.0 h1:6IOBuiHg04QxvbFfgFLT/9sMaO/UhL7S+ApW1mK8q5A=
|
||||||
github.com/minio/minlz v1.1.1/go.mod h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec=
|
github.com/minio/minlz v1.2.0/go.mod h1:Ls9H7nlkASeCcdl5thjVD5Eraj6z+zGa7xtq57jIKD4=
|
||||||
github.com/nwaples/rardecode/v2 v2.2.5 h1:L5doqgGfQwI7qADJMqnkrSB86rpPsqQDrHeO0HWa5JY=
|
github.com/nwaples/rardecode/v2 v2.4.1 h1:F7zNW2LdAuuBThHWXQaiFUGVD/sef299NfWSB1nHAl4=
|
||||||
github.com/nwaples/rardecode/v2 v2.2.5/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
|
github.com/nwaples/rardecode/v2 v2.4.1/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
|
||||||
github.com/pierrec/lz4/v4 v4.1.27 h1:+PhzhWDrjRj89TH2sw43nE3+4+W8lSxIuQadEHZyjUk=
|
github.com/pierrec/lz4/v4 v4.1.29 h1:CDQY6qZOLI4DW0Nx6R1vRrifrCeQHnNXkMb0hZWXFjg=
|
||||||
github.com/pierrec/lz4/v4 v4.1.27/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4=
|
github.com/pierrec/lz4/v4 v4.1.29/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/sorairolake/lzip-go v0.3.8 h1:j5Q2313INdTA80ureWYRhX+1K78mUXfMoPZCw/ivWik=
|
github.com/sorairolake/lzip-go v0.3.8 h1:j5Q2313INdTA80ureWYRhX+1K78mUXfMoPZCw/ivWik=
|
||||||
@@ -105,41 +73,23 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
|
|||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||||
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
github.com/tetratelabs/wazero v1.12.0 h1:DuWcpNu/FzgEXgGBDp8J1Spc+CWOvvtvVyjKlaZopYU=
|
|
||||||
github.com/tetratelabs/wazero v1.12.0/go.mod h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0=
|
|
||||||
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=
|
github.com/ulikunitz/xz v0.5.16 h1:ld6NyySjx5lowVKwJvMRLnW5nxKX/xnpSiFYZ/Lxur0=
|
||||||
github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.16/go.mod h1:H9Rt/W6/Qj27PGauhQc6nfCDy7vHpzsOThBSaYDoEhw=
|
||||||
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
||||||
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f h1:ziUVAjmTPwQMBmYR1tbdRFJPtTcQUI12fH9QQjfb0Sw=
|
go4.org v0.0.0-20260112195520-a5071408f32f h1:ziUVAjmTPwQMBmYR1tbdRFJPtTcQUI12fH9QQjfb0Sw=
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f/go.mod h1:ZRJnO5ZI4zAwMFp+dS1+V6J6MSyAowhRqAE+DPa1Xp0=
|
go4.org v0.0.0-20260112195520-a5071408f32f/go.mod h1:ZRJnO5ZI4zAwMFp+dS1+V6J6MSyAowhRqAE+DPa1Xp0=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/image v0.45.0 h1:FMb1nTbH5H9vF55SriQHgFw5GnNL9Jg6L25BwXKzhB0=
|
||||||
golang.org/x/image v0.43.0 h1:FLxcP4ec2350nTfOC8ysKtqYSIFbk/QGjw1ZHNP4tsY=
|
golang.org/x/image v0.45.0/go.mod h1:n62x/7RqlwXDvGsSU4u6IUTUf6KghUZ9Bt7cG/T9Fx4=
|
||||||
golang.org/x/image v0.43.0/go.mod h1:rrpelvGFt+kLPAjPM4HeWPgrl0FtafueU//e5N0qk/Q=
|
golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
|
||||||
golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
|
||||||
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||||
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
|
||||||
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
|
||||||
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
|
|
||||||
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
|
|
||||||
golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM=
|
|
||||||
golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
|
|
||||||
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE=
|
|
||||||
golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "Rychlost",
|
EffortSpeed: "Rychlost",
|
||||||
EffortEffort: "Úsilí",
|
EffortEffort: "Úsilí",
|
||||||
TipEffortWebp: "Metoda WEBP, vyšší je lepší/pomalejší (0-6, výchozí 4)",
|
TipEffortWebp: "Metoda WEBP, vyšší je lepší/pomalejší (0-6, výchozí 4)",
|
||||||
TipEffortAvif: "Rychlost AVIF, vyšší je rychlejší/horší (0-10, výchozí 10)",
|
TipEffortAvif: "Rychlost AVIF, vyšší je rychlejší/horší (0-10, výchozí 6)",
|
||||||
TipEffortJxl: "Úsilí JXL, vyšší je lepší/pomalejší (1-10, výchozí 7)",
|
TipEffortJxl: "Úsilí JXL, vyšší je lepší/pomalejší (1-7, výchozí 7)",
|
||||||
|
|
||||||
BtnAddFiles: "Přidat &soubory...",
|
BtnAddFiles: "Přidat &soubory...",
|
||||||
BtnAddDir: "Přidat &adresář...",
|
BtnAddDir: "Přidat &adresář...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "Geschwindigkeit",
|
EffortSpeed: "Geschwindigkeit",
|
||||||
EffortEffort: "Aufwand",
|
EffortEffort: "Aufwand",
|
||||||
TipEffortWebp: "WEBP-Methode, höher ist besser/langsamer (0-6, Standard 4)",
|
TipEffortWebp: "WEBP-Methode, höher ist besser/langsamer (0-6, Standard 4)",
|
||||||
TipEffortAvif: "AVIF-Geschwindigkeit, höher ist schneller/schlechter (0-10, Standard 10)",
|
TipEffortAvif: "AVIF-Geschwindigkeit, höher ist schneller/schlechter (0-10, Standard 6)",
|
||||||
TipEffortJxl: "JXL-Aufwand, höher ist besser/langsamer (1-10, Standard 7)",
|
TipEffortJxl: "JXL-Aufwand, höher ist besser/langsamer (1-7, Standard 7)",
|
||||||
|
|
||||||
BtnAddFiles: "&Dateien hinzufügen...",
|
BtnAddFiles: "&Dateien hinzufügen...",
|
||||||
BtnAddDir: "&Verzeichnis hinzufügen...",
|
BtnAddDir: "&Verzeichnis hinzufügen...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "Speed",
|
EffortSpeed: "Speed",
|
||||||
EffortEffort: "Effort",
|
EffortEffort: "Effort",
|
||||||
TipEffortWebp: "WEBP method, higher is better/slower (0-6, default 4)",
|
TipEffortWebp: "WEBP method, higher is better/slower (0-6, default 4)",
|
||||||
TipEffortAvif: "AVIF speed, higher is faster/worse (0-10, default 10)",
|
TipEffortAvif: "AVIF speed, higher is faster/worse (0-10, default 6)",
|
||||||
TipEffortJxl: "JXL effort, higher is better/slower (1-10, default 7)",
|
TipEffortJxl: "JXL effort, higher is better/slower (1-7, default 7)",
|
||||||
|
|
||||||
BtnAddFiles: "Add &Files...",
|
BtnAddFiles: "Add &Files...",
|
||||||
BtnAddDir: "Add &Dir...",
|
BtnAddDir: "Add &Dir...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "Velocidad",
|
EffortSpeed: "Velocidad",
|
||||||
EffortEffort: "Esfuerzo",
|
EffortEffort: "Esfuerzo",
|
||||||
TipEffortWebp: "Método WEBP, más alto es mejor/más lento (0-6, predeterminado 4)",
|
TipEffortWebp: "Método WEBP, más alto es mejor/más lento (0-6, predeterminado 4)",
|
||||||
TipEffortAvif: "Velocidad AVIF, más alto es más rápido/peor (0-10, predeterminado 10)",
|
TipEffortAvif: "Velocidad AVIF, más alto es más rápido/peor (0-10, predeterminado 6)",
|
||||||
TipEffortJxl: "Esfuerzo JXL, más alto es mejor/más lento (1-10, predeterminado 7)",
|
TipEffortJxl: "Esfuerzo JXL, más alto es mejor/más lento (1-7, predeterminado 7)",
|
||||||
|
|
||||||
BtnAddFiles: "Añadir &archivos...",
|
BtnAddFiles: "Añadir &archivos...",
|
||||||
BtnAddDir: "Añadir &directorio...",
|
BtnAddDir: "Añadir &directorio...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "Vitesse",
|
EffortSpeed: "Vitesse",
|
||||||
EffortEffort: "Effort",
|
EffortEffort: "Effort",
|
||||||
TipEffortWebp: "Méthode WEBP, plus élevé est meilleur/plus lent (0-6, défaut 4)",
|
TipEffortWebp: "Méthode WEBP, plus élevé est meilleur/plus lent (0-6, défaut 4)",
|
||||||
TipEffortAvif: "Vitesse AVIF, plus élevé est plus rapide/moins bon (0-10, défaut 10)",
|
TipEffortAvif: "Vitesse AVIF, plus élevé est plus rapide/moins bon (0-10, défaut 6)",
|
||||||
TipEffortJxl: "Effort JXL, plus élevé est meilleur/plus lent (1-10, défaut 7)",
|
TipEffortJxl: "Effort JXL, plus élevé est meilleur/plus lent (1-7, défaut 7)",
|
||||||
|
|
||||||
BtnAddFiles: "Ajouter des &fichiers...",
|
BtnAddFiles: "Ajouter des &fichiers...",
|
||||||
BtnAddDir: "Ajouter un &dossier...",
|
BtnAddDir: "Ajouter un &dossier...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "Velocità",
|
EffortSpeed: "Velocità",
|
||||||
EffortEffort: "Sforzo",
|
EffortEffort: "Sforzo",
|
||||||
TipEffortWebp: "Metodo WEBP, più alto è migliore/più lento (0-6, predefinito 4)",
|
TipEffortWebp: "Metodo WEBP, più alto è migliore/più lento (0-6, predefinito 4)",
|
||||||
TipEffortAvif: "Velocità AVIF, più alto è più veloce/peggiore (0-10, predefinito 10)",
|
TipEffortAvif: "Velocità AVIF, più alto è più veloce/peggiore (0-10, predefinito 6)",
|
||||||
TipEffortJxl: "Sforzo JXL, più alto è migliore/più lento (1-10, predefinito 7)",
|
TipEffortJxl: "Sforzo JXL, più alto è migliore/più lento (1-7, predefinito 7)",
|
||||||
|
|
||||||
BtnAddFiles: "Aggiungi &file...",
|
BtnAddFiles: "Aggiungi &file...",
|
||||||
BtnAddDir: "Aggiungi &cartella...",
|
BtnAddDir: "Aggiungi &cartella...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "速度",
|
EffortSpeed: "速度",
|
||||||
EffortEffort: "労力",
|
EffortEffort: "労力",
|
||||||
TipEffortWebp: "WEBP 方式、高いほど高品質/低速(0-6、既定 4)",
|
TipEffortWebp: "WEBP 方式、高いほど高品質/低速(0-6、既定 4)",
|
||||||
TipEffortAvif: "AVIF 速度、高いほど高速/低品質(0-10、既定 10)",
|
TipEffortAvif: "AVIF 速度、高いほど高速/低品質(0-10、既定 6)",
|
||||||
TipEffortJxl: "JXL 労力、高いほど高品質/低速(1-10、既定 7)",
|
TipEffortJxl: "JXL 労力、高いほど高品質/低速(1-7、既定 7)",
|
||||||
|
|
||||||
BtnAddFiles: "ファイルを追加(&F)...",
|
BtnAddFiles: "ファイルを追加(&F)...",
|
||||||
BtnAddDir: "ディレクトリを追加(&D)...",
|
BtnAddDir: "ディレクトリを追加(&D)...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "Velocidade",
|
EffortSpeed: "Velocidade",
|
||||||
EffortEffort: "Esforço",
|
EffortEffort: "Esforço",
|
||||||
TipEffortWebp: "Método WEBP, mais alto é melhor/mais lento (0-6, padrão 4)",
|
TipEffortWebp: "Método WEBP, mais alto é melhor/mais lento (0-6, padrão 4)",
|
||||||
TipEffortAvif: "Velocidade AVIF, mais alto é mais rápido/pior (0-10, padrão 10)",
|
TipEffortAvif: "Velocidade AVIF, mais alto é mais rápido/pior (0-10, padrão 6)",
|
||||||
TipEffortJxl: "Esforço JXL, mais alto é melhor/mais lento (1-10, padrão 7)",
|
TipEffortJxl: "Esforço JXL, mais alto é melhor/mais lento (1-7, padrão 7)",
|
||||||
|
|
||||||
BtnAddFiles: "Adicionar &arquivos...",
|
BtnAddFiles: "Adicionar &arquivos...",
|
||||||
BtnAddDir: "Adicionar &diretório...",
|
BtnAddDir: "Adicionar &diretório...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "Скорость",
|
EffortSpeed: "Скорость",
|
||||||
EffortEffort: "Усилие",
|
EffortEffort: "Усилие",
|
||||||
TipEffortWebp: "Метод WEBP, выше — лучше/медленнее (0-6, по умолчанию 4)",
|
TipEffortWebp: "Метод WEBP, выше — лучше/медленнее (0-6, по умолчанию 4)",
|
||||||
TipEffortAvif: "Скорость AVIF, выше — быстрее/хуже (0-10, по умолчанию 10)",
|
TipEffortAvif: "Скорость AVIF, выше — быстрее/хуже (0-10, по умолчанию 6)",
|
||||||
TipEffortJxl: "Усилие JXL, выше — лучше/медленнее (1-10, по умолчанию 7)",
|
TipEffortJxl: "Усилие JXL, выше — лучше/медленнее (1-7, по умолчанию 7)",
|
||||||
|
|
||||||
BtnAddFiles: "Добавить &файлы...",
|
BtnAddFiles: "Добавить &файлы...",
|
||||||
BtnAddDir: "Добавить &каталог...",
|
BtnAddDir: "Добавить &каталог...",
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ func init() {
|
|||||||
EffortSpeed: "速度",
|
EffortSpeed: "速度",
|
||||||
EffortEffort: "强度",
|
EffortEffort: "强度",
|
||||||
TipEffortWebp: "WEBP 方法,越高越好/越慢(0-6,默认 4)",
|
TipEffortWebp: "WEBP 方法,越高越好/越慢(0-6,默认 4)",
|
||||||
TipEffortAvif: "AVIF 速度,越高越快/越差(0-10,默认 10)",
|
TipEffortAvif: "AVIF 速度,越高越快/越差(0-10,默认 6)",
|
||||||
TipEffortJxl: "JXL 强度,越高越好/越慢(1-10,默认 7)",
|
TipEffortJxl: "JXL 强度,越高越好/越慢(1-7,默认 7)",
|
||||||
|
|
||||||
BtnAddFiles: "添加文件(&F)...",
|
BtnAddFiles: "添加文件(&F)...",
|
||||||
BtnAddDir: "添加目录(&D)...",
|
BtnAddDir: "添加目录(&D)...",
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import (
|
|||||||
_ "embed"
|
_ "embed"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"image/png"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
@@ -14,6 +13,7 @@ import (
|
|||||||
"github.com/gen2brain/cbconvert"
|
"github.com/gen2brain/cbconvert"
|
||||||
"github.com/gen2brain/cbconvert/cmd/cbconvert-gui/i18n"
|
"github.com/gen2brain/cbconvert/cmd/cbconvert-gui/i18n"
|
||||||
"github.com/gen2brain/iup-go/iup"
|
"github.com/gen2brain/iup-go/iup"
|
||||||
|
"github.com/gen2brain/pngn"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate rsrc --ico dist/windows/icon.ico --arch amd64 -o main_windows_amd64.syso
|
//go:generate rsrc --ico dist/windows/icon.ico --arch amd64 -o main_windows_amd64.syso
|
||||||
@@ -85,7 +85,7 @@ func main() {
|
|||||||
config = iup.Config()
|
config = iup.Config()
|
||||||
iup.ConfigLoad(config)
|
iup.ConfigLoad(config)
|
||||||
|
|
||||||
img, _ := png.Decode(bytes.NewReader(appLogo))
|
img, _ := pngn.Decode(bytes.NewReader(appLogo))
|
||||||
iup.ImageFromImage(img).SetHandle("logo")
|
iup.ImageFromImage(img).SetHandle("logo")
|
||||||
|
|
||||||
dlg := iup.Dialog(layout()).SetAttributes(fmt.Sprintf(`TITLE="CBconvert %s", ICON=logo`, appVersion)).SetHandle("dlg")
|
dlg := iup.Dialog(layout()).SetAttributes(fmt.Sprintf(`TITLE="CBconvert %s", ICON=logo`, appVersion)).SetHandle("dlg")
|
||||||
|
|||||||
@@ -7,4 +7,7 @@ Linux
|
|||||||
<img src="linux-01.jpg" width="700" title="Linux" alt="Linux" />
|
<img src="linux-01.jpg" width="700" title="Linux" alt="Linux" />
|
||||||
|
|
||||||
macOS
|
macOS
|
||||||
<img src="macos-01.jpg" width="700" title="macOS" alt="macOS" />
|
<img src="macos-01.jpg" width="700" title="macOS" alt="macOS" />
|
||||||
|
|
||||||
|
Haiku
|
||||||
|
<img src="haiku-01.png" width="700" title="Haiku" alt="Haiku" />
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 401 KiB |
@@ -1,38 +1,12 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"runtime/debug"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gen2brain/cbconvert/cmd/cbconvert-gui/i18n"
|
"github.com/gen2brain/cbconvert/cmd/cbconvert-gui/i18n"
|
||||||
"github.com/gen2brain/iup-go/iup"
|
"github.com/gen2brain/iup-go/iup"
|
||||||
)
|
)
|
||||||
|
|
||||||
// jxlLosslessBuild reports whether wasm2go and nodynamic leave zune-jpegxl (lossless-only) as the only jxl encoder.
|
// userLossless is the user's Lossless preference, kept so switching to a format
|
||||||
var jxlLosslessBuild = func() bool {
|
// without lossless support and back does not clear it.
|
||||||
info, ok := debug.ReadBuildInfo()
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
var wasm2go, nodynamic bool
|
|
||||||
for _, kv := range info.Settings {
|
|
||||||
if kv.Key != "-tags" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
for _, t := range strings.Split(kv.Value, ",") {
|
|
||||||
switch t {
|
|
||||||
case "wasm2go":
|
|
||||||
wasm2go = true
|
|
||||||
case "nodynamic":
|
|
||||||
nodynamic = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return wasm2go && nodynamic
|
|
||||||
}()
|
|
||||||
|
|
||||||
// userLossless is the user's Lossless preference, tracked separately because a jxl
|
|
||||||
// wasm2go build force-sets the widget on.
|
|
||||||
var userLossless bool
|
var userLossless bool
|
||||||
|
|
||||||
func setActive() {
|
func setActive() {
|
||||||
@@ -98,15 +72,13 @@ func setActive() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
canLossless := opts.Format == "webp" || opts.Format == "avif" || opts.Format == "jxl"
|
canLossless := opts.Format == "webp" || opts.Format == "avif" || opts.Format == "jxl"
|
||||||
jxlLossless := jxlLosslessBuild && opts.Format == "jxl"
|
|
||||||
|
|
||||||
// jxl wasm2go forces lossless on; otherwise show the user's preference so it doesn't stay stuck on.
|
|
||||||
losslessVal := "OFF"
|
losslessVal := "OFF"
|
||||||
if jxlLossless || userLossless {
|
if userLossless {
|
||||||
losslessVal = "ON"
|
losslessVal = "ON"
|
||||||
}
|
}
|
||||||
iup.GetHandle("Lossless").SetAttribute("VALUE", losslessVal)
|
iup.GetHandle("Lossless").SetAttribute("VALUE", losslessVal)
|
||||||
losslessOn := jxlLossless || (canLossless && userLossless)
|
losslessOn := canLossless && userLossless
|
||||||
|
|
||||||
if (opts.Format == "jpeg" || canLossless) && !opts.NoConvert && !losslessOn {
|
if (opts.Format == "jpeg" || canLossless) && !opts.NoConvert && !losslessOn {
|
||||||
iup.GetHandle("VboxQuality").SetAttribute("ACTIVE", "YES")
|
iup.GetHandle("VboxQuality").SetAttribute("ACTIVE", "YES")
|
||||||
@@ -122,11 +94,6 @@ func setActive() {
|
|||||||
iup.GetHandle("Lossless").SetAttribute("ACTIVE", "NO")
|
iup.GetHandle("Lossless").SetAttribute("ACTIVE", "NO")
|
||||||
}
|
}
|
||||||
|
|
||||||
if jxlLossless {
|
|
||||||
iup.GetHandle("Lossless").SetAttribute("ACTIVE", "NO")
|
|
||||||
iup.GetHandle("VboxEffort").SetAttribute("ACTIVE", "NO")
|
|
||||||
}
|
|
||||||
|
|
||||||
if opts.Width != 0 && opts.Height != 0 && !opts.NoConvert {
|
if opts.Width != 0 && opts.Height != 0 && !opts.NoConvert {
|
||||||
iup.GetHandle("Fit").SetAttribute("ACTIVE", "YES")
|
iup.GetHandle("Fit").SetAttribute("ACTIVE", "YES")
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ func setEffort(format string) {
|
|||||||
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortWebp))
|
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortWebp))
|
||||||
name = i18n.Str(i18n.EffortMethod)
|
name = i18n.Str(i18n.EffortMethod)
|
||||||
case "avif":
|
case "avif":
|
||||||
val.SetAttributes("MIN=0, MAX=10, SHOWTICKS=11, VALUE=10")
|
val.SetAttributes("MIN=0, MAX=10, SHOWTICKS=11, VALUE=6")
|
||||||
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortAvif))
|
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortAvif))
|
||||||
name = i18n.Str(i18n.EffortSpeed)
|
name = i18n.Str(i18n.EffortSpeed)
|
||||||
case "jxl":
|
case "jxl":
|
||||||
val.SetAttributes("MIN=1, MAX=10, SHOWTICKS=10, VALUE=7")
|
val.SetAttributes("MIN=1, MAX=7, SHOWTICKS=7, VALUE=7")
|
||||||
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortJxl))
|
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortJxl))
|
||||||
name = i18n.Str(i18n.EffortEffort)
|
name = i18n.Str(i18n.EffortEffort)
|
||||||
default:
|
default:
|
||||||
|
|||||||
+22
-32
@@ -1,58 +1,48 @@
|
|||||||
module github.com/gen2brain/cbconvert/cmd/cbconvert
|
module github.com/gen2brain/cbconvert/cmd/cbconvert
|
||||||
|
|
||||||
go 1.26
|
go 1.26.4
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gen2brain/cbconvert v1.0.5-0.20260627172825-0f6e32c177ee
|
github.com/gen2brain/cbconvert v1.2.1-0.20260825104346-a90395759b8c
|
||||||
github.com/schollz/progressbar/v3 v3.19.0
|
github.com/schollz/progressbar/v3 v3.19.0
|
||||||
golang.org/x/term v0.44.0
|
golang.org/x/term v0.45.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/STARRY-S/zip v0.2.3 // indirect
|
github.com/STARRY-S/zip v0.2.3 // indirect
|
||||||
github.com/andybalholm/brotli v1.2.1 // indirect
|
github.com/andybalholm/brotli v1.2.2 // indirect
|
||||||
github.com/anthonynsimon/bild v0.15.0 // indirect
|
github.com/anthonynsimon/bild v0.17.0 // indirect
|
||||||
github.com/bodgit/plumbing v1.3.0 // indirect
|
github.com/bodgit/plumbing v1.3.0 // indirect
|
||||||
github.com/bodgit/sevenzip v1.6.4 // indirect
|
github.com/bodgit/sevenzip v1.6.5 // indirect
|
||||||
github.com/bodgit/windows v1.0.1 // indirect
|
github.com/bodgit/windows v1.0.1 // indirect
|
||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d // indirect
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect
|
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d // indirect
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349 // indirect
|
|
||||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
||||||
github.com/ebitengine/purego v0.10.1 // indirect
|
|
||||||
github.com/fvbommel/sortorder v1.1.0 // indirect
|
github.com/fvbommel/sortorder v1.1.0 // indirect
|
||||||
github.com/gen2brain/avif v0.5.1 // indirect
|
github.com/gen2brain/folio v0.2.4 // indirect
|
||||||
github.com/gen2brain/go-fitz v1.28.0 // indirect
|
github.com/gen2brain/gav1d v0.2.5 // indirect
|
||||||
github.com/gen2brain/jpegli v0.4.1 // indirect
|
github.com/gen2brain/jpegn v0.6.1 // indirect
|
||||||
github.com/gen2brain/jpegn v0.4.2 // indirect
|
github.com/gen2brain/jxl v0.2.0 // indirect
|
||||||
github.com/gen2brain/jpegxl v0.5.2 // indirect
|
github.com/gen2brain/pngn v0.1.2 // indirect
|
||||||
github.com/gen2brain/webp v0.6.1 // indirect
|
github.com/gen2brain/vpx v0.2.1 // indirect
|
||||||
github.com/go-errors/errors v1.5.1 // indirect
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537 // indirect
|
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect
|
||||||
github.com/klauspost/compress v1.18.6 // indirect
|
github.com/klauspost/compress v1.19.2 // indirect
|
||||||
github.com/klauspost/pgzip v1.2.6 // indirect
|
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.24 // indirect
|
github.com/mattn/go-runewidth v0.0.24 // indirect
|
||||||
github.com/mholt/archives v0.1.5 // indirect
|
github.com/mholt/archives v0.1.5 // indirect
|
||||||
github.com/mikelolasagasti/xz v1.0.1 // indirect
|
github.com/mikelolasagasti/xz v1.0.1 // indirect
|
||||||
github.com/minio/minlz v1.1.1 // indirect
|
github.com/minio/minlz v1.2.0 // indirect
|
||||||
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
|
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
|
||||||
github.com/nwaples/rardecode/v2 v2.2.5 // indirect
|
github.com/nwaples/rardecode/v2 v2.4.1 // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.27 // indirect
|
github.com/pierrec/lz4/v4 v4.1.29 // indirect
|
||||||
github.com/rivo/uniseg v0.4.7 // indirect
|
github.com/rivo/uniseg v0.4.7 // indirect
|
||||||
github.com/sorairolake/lzip-go v0.3.8 // indirect
|
github.com/sorairolake/lzip-go v0.3.8 // indirect
|
||||||
github.com/spf13/afero v1.15.0 // indirect
|
github.com/spf13/afero v1.15.0 // indirect
|
||||||
github.com/stangelandcl/ppmd v0.1.1 // indirect
|
github.com/stangelandcl/ppmd v0.1.1 // indirect
|
||||||
github.com/tetratelabs/wazero v1.12.0 // indirect
|
github.com/ulikunitz/xz v0.5.16 // indirect
|
||||||
github.com/ulikunitz/xz v0.5.15 // indirect
|
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f // indirect
|
go4.org v0.0.0-20260112195520-a5071408f32f // indirect
|
||||||
golang.org/x/image v0.43.0 // indirect
|
golang.org/x/image v0.45.0 // indirect
|
||||||
golang.org/x/net v0.56.0 // indirect
|
golang.org/x/net v0.58.0 // indirect
|
||||||
golang.org/x/sync v0.21.0 // indirect
|
golang.org/x/sync v0.22.0 // indirect
|
||||||
golang.org/x/sys v0.46.0 // indirect
|
golang.org/x/sys v0.47.0 // indirect
|
||||||
golang.org/x/text v0.38.0 // indirect
|
golang.org/x/text v0.41.0 // indirect
|
||||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
|
||||||
)
|
)
|
||||||
|
|||||||
+42
-90
@@ -1,13 +1,13 @@
|
|||||||
github.com/STARRY-S/zip v0.2.3 h1:luE4dMvRPDOWQdeDdUxUoZkzUIpTccdKdhHHsQJ1fm4=
|
github.com/STARRY-S/zip v0.2.3 h1:luE4dMvRPDOWQdeDdUxUoZkzUIpTccdKdhHHsQJ1fm4=
|
||||||
github.com/STARRY-S/zip v0.2.3/go.mod h1:lqJ9JdeRipyOQJrYSOtpNAiaesFO6zVDsE8GIGFaoSk=
|
github.com/STARRY-S/zip v0.2.3/go.mod h1:lqJ9JdeRipyOQJrYSOtpNAiaesFO6zVDsE8GIGFaoSk=
|
||||||
github.com/andybalholm/brotli v1.2.1 h1:R+f5xP285VArJDRgowrfb9DqL18yVK0gKAW/F+eTWro=
|
github.com/andybalholm/brotli v1.2.2 h1:HzTuoo2ErYQqf5qvcJInB8uvqSVxRttzkFexPWtnceM=
|
||||||
github.com/andybalholm/brotli v1.2.1/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
|
github.com/andybalholm/brotli v1.2.2/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
|
||||||
github.com/anthonynsimon/bild v0.15.0 h1:FzvaNLuNlAPKw1Xz7V2WYOcGIEBMj8Y6ZyAk7CI+HzA=
|
github.com/anthonynsimon/bild v0.17.0 h1:kmPJOZpUgvrM2uoS7KMesbDU5+QTvZ92zIBjHM/oa18=
|
||||||
github.com/anthonynsimon/bild v0.15.0/go.mod h1:qIgJ9FldkCn0iy5Ad24fzUkz5R+iJ0WfhiV+6FeCB5A=
|
github.com/anthonynsimon/bild v0.17.0/go.mod h1:ULwssBwK+8dLFObGrI3fIydKYQ2l454Y0eo+mqPclto=
|
||||||
github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=
|
github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=
|
||||||
github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=
|
github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=
|
||||||
github.com/bodgit/sevenzip v1.6.4 h1:iHiVJfxbrB6RF4X+snI2MpVgNBKmVfGaTqZGNlMQIU0=
|
github.com/bodgit/sevenzip v1.6.5 h1:7H7BxgmeX0j6UX42lH+KXQ92WgMQJ49DoocFdfHbCng=
|
||||||
github.com/bodgit/sevenzip v1.6.4/go.mod h1:ZtNi5KNgHXeXg1G7WiF0IWSuFE2eG6lt/cTGlvuirO0=
|
github.com/bodgit/sevenzip v1.6.5/go.mod h1:GhuB6Lq1xCpP1sps+horjZ8lgiKPJcy2zUX3prla9wc=
|
||||||
github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
|
github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
|
||||||
github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
|
github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
|
||||||
github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM=
|
github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM=
|
||||||
@@ -20,62 +20,30 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
|||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
|
||||||
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
|
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20200321225314-640175a69fe4/go.mod h1:Lm2lMM2zx8p4a34ZemkaUV95AnMl4ZvLbCUbwOvLC2E=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20200604193436-ca8584a0e1c4/go.mod h1:9EXlPeHfblFFnwu5UOqmP2eoZfJyAZ2Ri/Vki33ajO0=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d h1:yeH8wrJa3+8uKKDAdURHUK1ds2UvKhMqX2MiOdVeKPs=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d/go.mod h1:oKrjk2kb3rAR5NbtSTLUMvMSbc+k8ZosI3MaVH47noc=
|
|
||||||
github.com/dsoprea/go-exif/v3 v3.0.0-20200717053412-08f1b6708903/go.mod h1:0nsO1ce0mh5czxGeLo4+OCZ/C6Eo6ZlMWsz7rH/Gxv8=
|
|
||||||
github.com/dsoprea/go-exif/v3 v3.0.0-20210512043655-120bcdb2a55e/go.mod h1:cg5SNYKHMmzxsr9X6ZeLh/nfBRHHp5PngtEPcujONtk=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20190624164917-c4f10aab7696/go.mod h1:Nm/x2ZUNRW6Fe5C3LxdY1PyZY5wmDv/s5dkPJ/VB3iA=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd h1:l+vLbuxptsC6VQyQsfD7NnEC8BZuFpz45PgY+pH8YTg=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8=
|
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d h1:8+qI8ant/vZkNSsbwSjIR6XJfWcDVTg/qx/3pRUUZNA=
|
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d/go.mod h1:yTR3tKgyk20phAFg6IE9ulMA5NjEDD2wyx+okRFLVtw=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20200711062821-fab8125e9bdf/go.mod h1:95+K3z2L0mqsVYd6yveIv1lmtT3tcQQ3dVakPySffW8=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349 h1:/py11NlxDaOxkT9OKN+gXgT+QOH5xj1ZRoyusfRIlo4=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349/go.mod h1:KVK+/Hul09ujXAGq+42UBgCTnXkiJZRnLYdURGjQUwo=
|
|
||||||
github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e/go.mod h1:uAzdkPTub5Y9yQwXe8W4m2XuP0tK4a9Q/dantD0+uaU=
|
|
||||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
|
||||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
|
||||||
github.com/ebitengine/purego v0.10.1 h1:dewVBCBT2GaMu1SrNTYxQhgQBethzfhiwvZiLGP/qyY=
|
|
||||||
github.com/ebitengine/purego v0.10.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
|
||||||
github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw=
|
github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw=
|
||||||
github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
|
github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
|
||||||
github.com/gen2brain/avif v0.5.1 h1:LQzLsJpWyGlsa4wuZ3D57qEbCiICIK7Yidz5ZPEwzTk=
|
github.com/gen2brain/cbconvert v1.2.1-0.20260825104346-a90395759b8c h1:4Z25IjDP3akCwnNA8/wetf7xlR+CI78OTpOfM0s+gCs=
|
||||||
github.com/gen2brain/avif v0.5.1/go.mod h1:QgrYqdVE9y40PCfArK9VakcMIpYeDYpZmCSLkW6C1n8=
|
github.com/gen2brain/cbconvert v1.2.1-0.20260825104346-a90395759b8c/go.mod h1:qnfGiVa7nmTZn2PiG3DvyKShqPtc/97Ibm9WUbOq/xg=
|
||||||
github.com/gen2brain/cbconvert v1.0.5-0.20260627172825-0f6e32c177ee h1:9ggHORYXL+0zSdfC0bJA049amaH5wW6jZgO5dGisKm4=
|
github.com/gen2brain/folio v0.2.4 h1:c1eZYBucycynbyF1UkAXC8Zm/NbWMjHQhckDrz5gBWg=
|
||||||
github.com/gen2brain/cbconvert v1.0.5-0.20260627172825-0f6e32c177ee/go.mod h1:KrAZdAzcMj1XQkfDz5bp0hotVFUB2k9hRT+9F4b5f2E=
|
github.com/gen2brain/folio v0.2.4/go.mod h1:4/PcXfaXIYmW1nwQ4bJeE+aG5ybG58Aw9xrwODXaXII=
|
||||||
github.com/gen2brain/go-fitz v1.28.0 h1:RovqgQPAcOuyv5HZrWsTWl8qwlwbAHSKcAZXZUw0Vlk=
|
github.com/gen2brain/gav1d v0.2.5 h1:Zg5/DE1JBdf8kxZqIvNo2ZEizF9DVF9jdPTAKJQZbOY=
|
||||||
github.com/gen2brain/go-fitz v1.28.0/go.mod h1:pY2hqAjp9Zy7qfPI2gwbJMHBFAdZpVXOLrRxD82l3Bs=
|
github.com/gen2brain/gav1d v0.2.5/go.mod h1:ReFKjHq7pvRhEk+pgRPAo9gOlcrf51sdzVcAbbX7e0E=
|
||||||
github.com/gen2brain/jpegli v0.4.1 h1:qc11IQU0jTYFltroulT4MXmbu9YRftqHV0YBZ0Bqz5o=
|
github.com/gen2brain/jpegn v0.6.1 h1:S+Em15BvqCl/cTvebB6JU67ndDVdFWPhB0GbxNkWlOE=
|
||||||
github.com/gen2brain/jpegli v0.4.1/go.mod h1:zJ++s4symmKCN1CLkrY0dGXTY3s0NWbd94Rz9KLdCzk=
|
github.com/gen2brain/jpegn v0.6.1/go.mod h1:43hks+w5VNTUDU34uk0tsXYJ97nbYL2idAlZF0D66+A=
|
||||||
github.com/gen2brain/jpegn v0.4.2 h1:sxy2yolV1eNA02uYtnqBFm4EIC3ETnars98aG7Dc4LM=
|
github.com/gen2brain/jxl v0.2.0 h1:cXSQnfbcC0JGFzaI344VzPMbe7mh6rYc0tjPcBUsE4U=
|
||||||
github.com/gen2brain/jpegn v0.4.2/go.mod h1:YvcVOmVPSAsefH6yn9HBW3uY0EHlZwCMoiJXoAWfgL0=
|
github.com/gen2brain/jxl v0.2.0/go.mod h1:VjJHRai/8I8Es01mULqyiOihRBOjJr1Zo+NoN/MyIwo=
|
||||||
github.com/gen2brain/jpegxl v0.5.2 h1:1ou9YRziU8PbpkfFJIyxrNjYM+WaMl2n9LloABxkKsU=
|
github.com/gen2brain/pngn v0.1.2 h1:j1ikFmwRpJnVxnFcwekIMYzBLOsEXDVrOSHCwqQcnV8=
|
||||||
github.com/gen2brain/jpegxl v0.5.2/go.mod h1:Wlc6lqx03RJfhiQRyHa2e+8VQwT4/qv7zSRsNv9T+yE=
|
github.com/gen2brain/pngn v0.1.2/go.mod h1:jmw3LV2MHgoK4PBdsLC3YTiLUBaY5Nlfi3UFvxqJc9E=
|
||||||
github.com/gen2brain/webp v0.6.1 h1:ei7Y1SWpQcdqz3YNDNyn4y2nQanxs9WLzwW5/2DKS64=
|
github.com/gen2brain/vpx v0.2.1 h1:UD6tibcs/zlaIOKNFXeVyZuHBEaW9GYfxKSxvAN9cc8=
|
||||||
github.com/gen2brain/webp v0.6.1/go.mod h1:iGWMaCSw7t3I/Cv9llzEKmpnR36S8lS8VL/ZVjxU0JE=
|
github.com/gen2brain/vpx v0.2.1/go.mod h1:EVIdqguMSiapbtjDm4AWgFgYYJ4d+k8trXqjxYZ/4XE=
|
||||||
github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
|
|
||||||
github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
|
|
||||||
github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
|
|
||||||
github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk=
|
|
||||||
github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
|
||||||
github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
|
||||||
github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537 h1:KeIaDS/+VEy/bhDYjG3Z78dOyLAU4HXcVxmd0WYHJTE=
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537/go.mod h1:Mymr9kRGDc64JPr03TSZmuIBODZ3KyswLzm1xL0HFA8=
|
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
|
||||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
|
||||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/compress v1.18.6 h1:2jupLlAwFm95+YDR+NwD2MEfFO9d4z4Prjl1XXDjuao=
|
github.com/klauspost/compress v1.19.2 h1:hMRETovs/pu/dVWN7zIT1PGG8t509MwT6bO7XSi26R8=
|
||||||
github.com/klauspost/compress v1.18.6/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
|
github.com/klauspost/compress v1.19.2/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
|
||||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
|
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
|
||||||
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||||
@@ -85,14 +53,14 @@ github.com/mholt/archives v0.1.5 h1:Fh2hl1j7VEhc6DZs2DLMgiBNChUux154a1G+2esNvzQ=
|
|||||||
github.com/mholt/archives v0.1.5/go.mod h1:3TPMmBLPsgszL+1As5zECTuKwKvIfj6YcwWPpeTAXF4=
|
github.com/mholt/archives v0.1.5/go.mod h1:3TPMmBLPsgszL+1As5zECTuKwKvIfj6YcwWPpeTAXF4=
|
||||||
github.com/mikelolasagasti/xz v1.0.1 h1:Q2F2jX0RYJUG3+WsM+FJknv+6eVjsjXNDV0KJXZzkD0=
|
github.com/mikelolasagasti/xz v1.0.1 h1:Q2F2jX0RYJUG3+WsM+FJknv+6eVjsjXNDV0KJXZzkD0=
|
||||||
github.com/mikelolasagasti/xz v1.0.1/go.mod h1:muAirjiOUxPRXwm9HdDtB3uoRPrGnL85XHtokL9Hcgc=
|
github.com/mikelolasagasti/xz v1.0.1/go.mod h1:muAirjiOUxPRXwm9HdDtB3uoRPrGnL85XHtokL9Hcgc=
|
||||||
github.com/minio/minlz v1.1.1 h1:OGmft1V6AnI/Wme332U6bhG54nxEan+VFgkD7lat4KM=
|
github.com/minio/minlz v1.2.0 h1:6IOBuiHg04QxvbFfgFLT/9sMaO/UhL7S+ApW1mK8q5A=
|
||||||
github.com/minio/minlz v1.1.1/go.mod h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec=
|
github.com/minio/minlz v1.2.0/go.mod h1:Ls9H7nlkASeCcdl5thjVD5Eraj6z+zGa7xtq57jIKD4=
|
||||||
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
|
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
|
||||||
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
|
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
|
||||||
github.com/nwaples/rardecode/v2 v2.2.5 h1:L5doqgGfQwI7qADJMqnkrSB86rpPsqQDrHeO0HWa5JY=
|
github.com/nwaples/rardecode/v2 v2.4.1 h1:F7zNW2LdAuuBThHWXQaiFUGVD/sef299NfWSB1nHAl4=
|
||||||
github.com/nwaples/rardecode/v2 v2.2.5/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
|
github.com/nwaples/rardecode/v2 v2.4.1/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
|
||||||
github.com/pierrec/lz4/v4 v4.1.27 h1:+PhzhWDrjRj89TH2sw43nE3+4+W8lSxIuQadEHZyjUk=
|
github.com/pierrec/lz4/v4 v4.1.29 h1:CDQY6qZOLI4DW0Nx6R1vRrifrCeQHnNXkMb0hZWXFjg=
|
||||||
github.com/pierrec/lz4/v4 v4.1.27/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4=
|
github.com/pierrec/lz4/v4 v4.1.29/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
||||||
@@ -115,43 +83,27 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
|
|||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||||
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
github.com/tetratelabs/wazero v1.12.0 h1:DuWcpNu/FzgEXgGBDp8J1Spc+CWOvvtvVyjKlaZopYU=
|
|
||||||
github.com/tetratelabs/wazero v1.12.0/go.mod h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0=
|
|
||||||
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=
|
github.com/ulikunitz/xz v0.5.16 h1:ld6NyySjx5lowVKwJvMRLnW5nxKX/xnpSiFYZ/Lxur0=
|
||||||
github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.16/go.mod h1:H9Rt/W6/Qj27PGauhQc6nfCDy7vHpzsOThBSaYDoEhw=
|
||||||
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
||||||
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f h1:ziUVAjmTPwQMBmYR1tbdRFJPtTcQUI12fH9QQjfb0Sw=
|
go4.org v0.0.0-20260112195520-a5071408f32f h1:ziUVAjmTPwQMBmYR1tbdRFJPtTcQUI12fH9QQjfb0Sw=
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f/go.mod h1:ZRJnO5ZI4zAwMFp+dS1+V6J6MSyAowhRqAE+DPa1Xp0=
|
go4.org v0.0.0-20260112195520-a5071408f32f/go.mod h1:ZRJnO5ZI4zAwMFp+dS1+V6J6MSyAowhRqAE+DPa1Xp0=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/image v0.45.0 h1:FMb1nTbH5H9vF55SriQHgFw5GnNL9Jg6L25BwXKzhB0=
|
||||||
golang.org/x/image v0.43.0 h1:FLxcP4ec2350nTfOC8ysKtqYSIFbk/QGjw1ZHNP4tsY=
|
golang.org/x/image v0.45.0/go.mod h1:n62x/7RqlwXDvGsSU4u6IUTUf6KghUZ9Bt7cG/T9Fx4=
|
||||||
golang.org/x/image v0.43.0/go.mod h1:rrpelvGFt+kLPAjPM4HeWPgrl0FtafueU//e5N0qk/Q=
|
golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
|
||||||
golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
|
||||||
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||||
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
|
||||||
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||||
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
|
golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0=
|
||||||
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
|
golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w=
|
||||||
golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM=
|
golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
|
||||||
golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
|
|
||||||
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
|
||||||
golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc=
|
|
||||||
golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE=
|
|
||||||
golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ func parseFlags() (cbconvert.Options, []string) {
|
|||||||
convert.StringVar(&opts.Archive, "archive", base.Archive, "Archive format, valid values are zip, tar")
|
convert.StringVar(&opts.Archive, "archive", base.Archive, "Archive format, valid values are zip, tar")
|
||||||
convert.IntVar(&opts.ZipLevel, "zip-level", base.ZipLevel, "ZIP compression level, 0 disables compression, 1-9 sets deflate level (1 fastest, 9 smallest), -1 uses the default")
|
convert.IntVar(&opts.ZipLevel, "zip-level", base.ZipLevel, "ZIP compression level, 0 disables compression, 1-9 sets deflate level (1 fastest, 9 smallest), -1 uses the default")
|
||||||
convert.IntVar(&opts.Quality, "quality", base.Quality, "Image quality")
|
convert.IntVar(&opts.Quality, "quality", base.Quality, "Image quality")
|
||||||
convert.IntVar(&opts.Effort, "effort", base.Effort, "Encoder speed/effort, format-specific (webp method 0-6, avif speed 0-10, jxl effort 1-10), -1 uses the format default")
|
convert.IntVar(&opts.Effort, "effort", base.Effort, "Encoder speed/effort, format-specific (webp method 0-6, avif speed 0-10, jxl effort 1-7), -1 uses the format default")
|
||||||
convert.BoolVar(&opts.Lossless, "lossless", base.Lossless, "Lossless compression (webp, avif, jxl), ignores quality")
|
convert.BoolVar(&opts.Lossless, "lossless", base.Lossless, "Lossless compression (webp, avif, jxl), ignores quality")
|
||||||
convert.BoolVar(&opts.Combine, "combine", base.Combine, "Combine all inputs into a single archive")
|
convert.BoolVar(&opts.Combine, "combine", base.Combine, "Combine all inputs into a single archive")
|
||||||
convert.StringVar(&opts.OutFile, "outfile", base.OutFile, "Output file name for --combine (default: first input + -combined)")
|
convert.StringVar(&opts.OutFile, "outfile", base.OutFile, "Output file name for --combine (default: first input + -combined)")
|
||||||
@@ -249,7 +249,7 @@ func parseFlags() (cbconvert.Options, []string) {
|
|||||||
cover.IntVar(&opts.DPI, "dpi", base.DPI, "Document rendering resolution in DPI (PDF, EPUB, etc.), 0 uses the original resolution")
|
cover.IntVar(&opts.DPI, "dpi", base.DPI, "Document rendering resolution in DPI (PDF, EPUB, etc.), 0 uses the original resolution")
|
||||||
cover.StringVar(&opts.Format, "format", base.Format, "Image format, valid values are jpeg, png, tiff, bmp, webp, avif")
|
cover.StringVar(&opts.Format, "format", base.Format, "Image format, valid values are jpeg, png, tiff, bmp, webp, avif")
|
||||||
cover.IntVar(&opts.Quality, "quality", base.Quality, "Image quality")
|
cover.IntVar(&opts.Quality, "quality", base.Quality, "Image quality")
|
||||||
cover.IntVar(&opts.Effort, "effort", base.Effort, "Encoder speed/effort, format-specific (webp method 0-6, avif speed 0-10, jxl effort 1-10), -1 uses the format default")
|
cover.IntVar(&opts.Effort, "effort", base.Effort, "Encoder speed/effort, format-specific (webp method 0-6, avif speed 0-10, jxl effort 1-7), -1 uses the format default")
|
||||||
cover.BoolVar(&opts.Lossless, "lossless", base.Lossless, "Lossless compression (webp, avif, jxl), ignores quality")
|
cover.BoolVar(&opts.Lossless, "lossless", base.Lossless, "Lossless compression (webp, avif, jxl), ignores quality")
|
||||||
cover.IntVar(&opts.Filter, "filter", base.Filter, "0=NearestNeighbor, 1=Box, 2=Linear, 3=MitchellNetravali, 4=CatmullRom, 5=Gaussian, 6=Lanczos")
|
cover.IntVar(&opts.Filter, "filter", base.Filter, "0=NearestNeighbor, 1=Box, 2=Linear, 3=MitchellNetravali, 4=CatmullRom, 5=Gaussian, 6=Lanczos")
|
||||||
cover.StringVar(&opts.OutDir, "outdir", base.OutDir, "Output directory")
|
cover.StringVar(&opts.OutDir, "outdir", base.OutDir, "Output directory")
|
||||||
|
|||||||
@@ -1,21 +1,20 @@
|
|||||||
module github.com/gen2brain/cbconvert
|
module github.com/gen2brain/cbconvert
|
||||||
|
|
||||||
go 1.26
|
go 1.26.4
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/anthonynsimon/bild v0.15.0
|
github.com/anthonynsimon/bild v0.15.0
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d
|
|
||||||
github.com/dustin/go-humanize v1.0.1
|
|
||||||
github.com/fvbommel/sortorder v1.1.0
|
github.com/fvbommel/sortorder v1.1.0
|
||||||
github.com/gen2brain/avif v0.5.1
|
github.com/gen2brain/folio v0.2.4
|
||||||
github.com/gen2brain/go-fitz v1.28.1
|
github.com/gen2brain/gav1d v0.2.4
|
||||||
github.com/gen2brain/jpegli v0.4.1
|
github.com/gen2brain/jpegn v0.6.0
|
||||||
github.com/gen2brain/jpegxl v0.5.2
|
github.com/gen2brain/jxl v0.2.0
|
||||||
github.com/gen2brain/webp v0.6.1
|
github.com/gen2brain/pngn v0.1.2
|
||||||
|
github.com/gen2brain/vpx v0.2.1
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25
|
||||||
github.com/mholt/archives v0.1.5
|
github.com/mholt/archives v0.1.5
|
||||||
golang.org/x/image v0.43.0
|
golang.org/x/image v0.43.0
|
||||||
golang.org/x/sync v0.21.0
|
golang.org/x/sync v0.22.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
@@ -25,13 +24,6 @@ require (
|
|||||||
github.com/bodgit/sevenzip v1.6.4 // indirect
|
github.com/bodgit/sevenzip v1.6.4 // indirect
|
||||||
github.com/bodgit/windows v1.0.1 // indirect
|
github.com/bodgit/windows v1.0.1 // indirect
|
||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d // indirect
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349 // indirect
|
|
||||||
github.com/ebitengine/purego v0.10.1 // indirect
|
|
||||||
github.com/gen2brain/jpegn v0.4.2
|
|
||||||
github.com/go-errors/errors v1.5.1 // indirect
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537 // indirect
|
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
||||||
github.com/klauspost/compress v1.18.6 // indirect
|
github.com/klauspost/compress v1.18.6 // indirect
|
||||||
github.com/klauspost/pgzip v1.2.6 // indirect
|
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||||
@@ -42,11 +34,8 @@ require (
|
|||||||
github.com/sorairolake/lzip-go v0.3.8 // indirect
|
github.com/sorairolake/lzip-go v0.3.8 // indirect
|
||||||
github.com/spf13/afero v1.15.0 // indirect
|
github.com/spf13/afero v1.15.0 // indirect
|
||||||
github.com/stangelandcl/ppmd v0.1.1 // indirect
|
github.com/stangelandcl/ppmd v0.1.1 // indirect
|
||||||
github.com/tetratelabs/wazero v1.12.0 // indirect
|
|
||||||
github.com/ulikunitz/xz v0.5.15 // indirect
|
github.com/ulikunitz/xz v0.5.15 // indirect
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f // indirect
|
go4.org v0.0.0-20260112195520-a5071408f32f // indirect
|
||||||
golang.org/x/net v0.56.0 // indirect
|
golang.org/x/net v0.58.0 // indirect
|
||||||
golang.org/x/sys v0.46.0 // indirect
|
golang.org/x/text v0.41.0 // indirect
|
||||||
golang.org/x/text v0.38.0 // indirect
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -16,55 +16,23 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
|||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
|
||||||
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
|
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20200321225314-640175a69fe4/go.mod h1:Lm2lMM2zx8p4a34ZemkaUV95AnMl4ZvLbCUbwOvLC2E=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20200604193436-ca8584a0e1c4/go.mod h1:9EXlPeHfblFFnwu5UOqmP2eoZfJyAZ2Ri/Vki33ajO0=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d h1:yeH8wrJa3+8uKKDAdURHUK1ds2UvKhMqX2MiOdVeKPs=
|
|
||||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d/go.mod h1:oKrjk2kb3rAR5NbtSTLUMvMSbc+k8ZosI3MaVH47noc=
|
|
||||||
github.com/dsoprea/go-exif/v3 v3.0.0-20200717053412-08f1b6708903/go.mod h1:0nsO1ce0mh5czxGeLo4+OCZ/C6Eo6ZlMWsz7rH/Gxv8=
|
|
||||||
github.com/dsoprea/go-exif/v3 v3.0.0-20210512043655-120bcdb2a55e/go.mod h1:cg5SNYKHMmzxsr9X6ZeLh/nfBRHHp5PngtEPcujONtk=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20190624164917-c4f10aab7696/go.mod h1:Nm/x2ZUNRW6Fe5C3LxdY1PyZY5wmDv/s5dkPJ/VB3iA=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd h1:l+vLbuxptsC6VQyQsfD7NnEC8BZuFpz45PgY+pH8YTg=
|
|
||||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8=
|
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d h1:8+qI8ant/vZkNSsbwSjIR6XJfWcDVTg/qx/3pRUUZNA=
|
|
||||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d/go.mod h1:yTR3tKgyk20phAFg6IE9ulMA5NjEDD2wyx+okRFLVtw=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20200711062821-fab8125e9bdf/go.mod h1:95+K3z2L0mqsVYd6yveIv1lmtT3tcQQ3dVakPySffW8=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349 h1:/py11NlxDaOxkT9OKN+gXgT+QOH5xj1ZRoyusfRIlo4=
|
|
||||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349/go.mod h1:KVK+/Hul09ujXAGq+42UBgCTnXkiJZRnLYdURGjQUwo=
|
|
||||||
github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e/go.mod h1:uAzdkPTub5Y9yQwXe8W4m2XuP0tK4a9Q/dantD0+uaU=
|
|
||||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
|
||||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
|
||||||
github.com/ebitengine/purego v0.10.1 h1:dewVBCBT2GaMu1SrNTYxQhgQBethzfhiwvZiLGP/qyY=
|
|
||||||
github.com/ebitengine/purego v0.10.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
|
||||||
github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw=
|
github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw=
|
||||||
github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
|
github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
|
||||||
github.com/gen2brain/avif v0.5.1 h1:LQzLsJpWyGlsa4wuZ3D57qEbCiICIK7Yidz5ZPEwzTk=
|
github.com/gen2brain/folio v0.2.4 h1:c1eZYBucycynbyF1UkAXC8Zm/NbWMjHQhckDrz5gBWg=
|
||||||
github.com/gen2brain/avif v0.5.1/go.mod h1:QgrYqdVE9y40PCfArK9VakcMIpYeDYpZmCSLkW6C1n8=
|
github.com/gen2brain/folio v0.2.4/go.mod h1:4/PcXfaXIYmW1nwQ4bJeE+aG5ybG58Aw9xrwODXaXII=
|
||||||
github.com/gen2brain/go-fitz v1.28.1 h1:ToEYb2vN4ByaL2VmRNGk92Sa1UAkCn8bsObpA3WkQ48=
|
github.com/gen2brain/gav1d v0.2.4 h1:Fe+Hpvul5I+svHQ1FqWmvgTeNPWYNCulox7pSoY4M+8=
|
||||||
github.com/gen2brain/go-fitz v1.28.1/go.mod h1:pY2hqAjp9Zy7qfPI2gwbJMHBFAdZpVXOLrRxD82l3Bs=
|
github.com/gen2brain/gav1d v0.2.4/go.mod h1:ReFKjHq7pvRhEk+pgRPAo9gOlcrf51sdzVcAbbX7e0E=
|
||||||
github.com/gen2brain/jpegli v0.4.1 h1:qc11IQU0jTYFltroulT4MXmbu9YRftqHV0YBZ0Bqz5o=
|
github.com/gen2brain/jpegn v0.6.0 h1:MYVzF8A4Y5GoDNUotAq4uT4dUDQ0yEVYbcw9xFZgKk8=
|
||||||
github.com/gen2brain/jpegli v0.4.1/go.mod h1:zJ++s4symmKCN1CLkrY0dGXTY3s0NWbd94Rz9KLdCzk=
|
github.com/gen2brain/jpegn v0.6.0/go.mod h1:43hks+w5VNTUDU34uk0tsXYJ97nbYL2idAlZF0D66+A=
|
||||||
github.com/gen2brain/jpegn v0.4.2 h1:sxy2yolV1eNA02uYtnqBFm4EIC3ETnars98aG7Dc4LM=
|
github.com/gen2brain/jxl v0.2.0 h1:cXSQnfbcC0JGFzaI344VzPMbe7mh6rYc0tjPcBUsE4U=
|
||||||
github.com/gen2brain/jpegn v0.4.2/go.mod h1:YvcVOmVPSAsefH6yn9HBW3uY0EHlZwCMoiJXoAWfgL0=
|
github.com/gen2brain/jxl v0.2.0/go.mod h1:VjJHRai/8I8Es01mULqyiOihRBOjJr1Zo+NoN/MyIwo=
|
||||||
github.com/gen2brain/jpegxl v0.5.2 h1:1ou9YRziU8PbpkfFJIyxrNjYM+WaMl2n9LloABxkKsU=
|
github.com/gen2brain/pngn v0.1.2 h1:j1ikFmwRpJnVxnFcwekIMYzBLOsEXDVrOSHCwqQcnV8=
|
||||||
github.com/gen2brain/jpegxl v0.5.2/go.mod h1:Wlc6lqx03RJfhiQRyHa2e+8VQwT4/qv7zSRsNv9T+yE=
|
github.com/gen2brain/pngn v0.1.2/go.mod h1:jmw3LV2MHgoK4PBdsLC3YTiLUBaY5Nlfi3UFvxqJc9E=
|
||||||
github.com/gen2brain/webp v0.6.1 h1:ei7Y1SWpQcdqz3YNDNyn4y2nQanxs9WLzwW5/2DKS64=
|
github.com/gen2brain/vpx v0.2.1 h1:UD6tibcs/zlaIOKNFXeVyZuHBEaW9GYfxKSxvAN9cc8=
|
||||||
github.com/gen2brain/webp v0.6.1/go.mod h1:iGWMaCSw7t3I/Cv9llzEKmpnR36S8lS8VL/ZVjxU0JE=
|
github.com/gen2brain/vpx v0.2.1/go.mod h1:EVIdqguMSiapbtjDm4AWgFgYYJ4d+k8trXqjxYZ/4XE=
|
||||||
github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
|
|
||||||
github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
|
|
||||||
github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
|
|
||||||
github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk=
|
|
||||||
github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
|
||||||
github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
|
||||||
github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537 h1:KeIaDS/+VEy/bhDYjG3Z78dOyLAU4HXcVxmd0WYHJTE=
|
|
||||||
github.com/golang/geo v0.0.0-20260625163123-7c0e84413537/go.mod h1:Mymr9kRGDc64JPr03TSZmuIBODZ3KyswLzm1xL0HFA8=
|
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
|
||||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
|
||||||
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
|
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
|
||||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
@@ -101,8 +69,6 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
|
|||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||||
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
github.com/tetratelabs/wazero v1.12.0 h1:DuWcpNu/FzgEXgGBDp8J1Spc+CWOvvtvVyjKlaZopYU=
|
|
||||||
github.com/tetratelabs/wazero v1.12.0/go.mod h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0=
|
|
||||||
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=
|
github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=
|
||||||
github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
@@ -110,32 +76,16 @@ github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZ
|
|||||||
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f h1:ziUVAjmTPwQMBmYR1tbdRFJPtTcQUI12fH9QQjfb0Sw=
|
go4.org v0.0.0-20260112195520-a5071408f32f h1:ziUVAjmTPwQMBmYR1tbdRFJPtTcQUI12fH9QQjfb0Sw=
|
||||||
go4.org v0.0.0-20260112195520-a5071408f32f/go.mod h1:ZRJnO5ZI4zAwMFp+dS1+V6J6MSyAowhRqAE+DPa1Xp0=
|
go4.org v0.0.0-20260112195520-a5071408f32f/go.mod h1:ZRJnO5ZI4zAwMFp+dS1+V6J6MSyAowhRqAE+DPa1Xp0=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
||||||
golang.org/x/image v0.43.0 h1:FLxcP4ec2350nTfOC8ysKtqYSIFbk/QGjw1ZHNP4tsY=
|
golang.org/x/image v0.43.0 h1:FLxcP4ec2350nTfOC8ysKtqYSIFbk/QGjw1ZHNP4tsY=
|
||||||
golang.org/x/image v0.43.0/go.mod h1:rrpelvGFt+kLPAjPM4HeWPgrl0FtafueU//e5N0qk/Q=
|
golang.org/x/image v0.43.0/go.mod h1:rrpelvGFt+kLPAjPM4HeWPgrl0FtafueU//e5N0qk/Q=
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
|
||||||
golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
|
||||||
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
|
||||||
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||||
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
|
||||||
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
|
golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
|
||||||
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
|
|
||||||
golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM=
|
|
||||||
golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
|
|
||||||
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE=
|
|
||||||
golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
+13
@@ -20,10 +20,12 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53
|
|||||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0/go.mod h1:ZPpqegjbE99EPKsu3iUWV22A04wzGPcAY/ziSIQEEgs=
|
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0/go.mod h1:ZPpqegjbE99EPKsu3iUWV22A04wzGPcAY/ziSIQEEgs=
|
||||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 h1:Ron4zCA/yk6U7WOBXhTJcDpsUBG9npumK6xw2auFltQ=
|
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 h1:Ron4zCA/yk6U7WOBXhTJcDpsUBG9npumK6xw2auFltQ=
|
||||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo=
|
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo=
|
||||||
|
github.com/HugoSmits86/nativewebp v1.3.0/go.mod h1:YNQuWenlVmSUUASVNhTDwf4d7FwYQGbGhklC8p72Vr8=
|
||||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0=
|
github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0=
|
||||||
github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4=
|
github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||||
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780 h1:tFh1tRc4CA31yP6qDcu+Trax5wW5GuMxvkIba07qVLY=
|
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780 h1:tFh1tRc4CA31yP6qDcu+Trax5wW5GuMxvkIba07qVLY=
|
||||||
github.com/dsoprea/go-exif/v3 v3.0.0-20210512043655-120bcdb2a55e h1:E4XTSQZF/JtOQWcSaJBJho7t+RNWfdO92W/5skg10Jk=
|
github.com/dsoprea/go-exif/v3 v3.0.0-20210512043655-120bcdb2a55e h1:E4XTSQZF/JtOQWcSaJBJho7t+RNWfdO92W/5skg10Jk=
|
||||||
github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e h1:IxIbA7VbCNrwumIYjDoMOdf4KOSkMC6NJE4s8oRbE7E=
|
github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e h1:IxIbA7VbCNrwumIYjDoMOdf4KOSkMC6NJE4s8oRbE7E=
|
||||||
@@ -58,11 +60,13 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf
|
|||||||
github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=
|
github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=
|
||||||
github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 h1:qGQQKEcAR99REcMpsXCp3lJ03zYT1PkRd3kQGPn9GVg=
|
github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 h1:qGQQKEcAR99REcMpsXCp3lJ03zYT1PkRd3kQGPn9GVg=
|
||||||
github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw=
|
github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw=
|
||||||
|
github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
|
||||||
github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE=
|
github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE=
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
|
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
|
||||||
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
|
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc=
|
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc=
|
||||||
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
|
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
|
||||||
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
|
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
|
||||||
@@ -71,6 +75,7 @@ github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=
|
|||||||
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
|
github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
|
||||||
github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
|
github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
|
||||||
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
||||||
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
||||||
go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs=
|
go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs=
|
||||||
@@ -89,16 +94,24 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6
|
|||||||
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
|
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
|
||||||
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
|
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
|
||||||
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
|
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
|
||||||
|
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
|
||||||
golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
|
golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
|
||||||
golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
|
golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
|
||||||
|
golang.org/x/crypto v0.55.0/go.mod h1:uq0V9dE/fzQuJtbnL+2EhWOE63vo164FY8xqEnV9xis=
|
||||||
|
golang.org/x/image v0.44.0/go.mod h1:V8K3KE9KKKE+pLpQDOeN18w9oacNSvy1tDOirTu4xtY=
|
||||||
golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
|
golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
|
||||||
golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
|
golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
|
||||||
|
golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40=
|
||||||
golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw=
|
golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw=
|
||||||
golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
|
golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
|
||||||
|
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
|
golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959/go.mod h1:LV7u5Oco+Z/g6XI7PqN+EUUUGGkEcmB1uj2ceI0fOVg=
|
||||||
|
golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY=
|
||||||
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
|
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
|
||||||
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
|
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
|
||||||
golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8=
|
golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8=
|
||||||
golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0=
|
golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0=
|
||||||
|
golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
google.golang.org/api v0.259.0 h1:90TaGVIxScrh1Vn/XI2426kRpBqHwWIzVBzJsVZ5XrQ=
|
google.golang.org/api v0.259.0 h1:90TaGVIxScrh1Vn/XI2426kRpBqHwWIzVBzJsVZ5XrQ=
|
||||||
google.golang.org/api v0.259.0/go.mod h1:LC2ISWGWbRoyQVpxGntWwLWN/vLNxxKBK9KuJRI8Te4=
|
google.golang.org/api v0.259.0/go.mod h1:LC2ISWGWbRoyQVpxGntWwLWN/vLNxxKBK9KuJRI8Te4=
|
||||||
|
|||||||
Reference in New Issue
Block a user