diff --git a/.changeset/nice-houses-approve.md b/.changeset/nice-houses-approve.md
new file mode 100644
index 0000000..4c53e44
--- /dev/null
+++ b/.changeset/nice-houses-approve.md
@@ -0,0 +1,5 @@
+---
+"app-builder-bin": patch
+---
+
+fix(appimage): AppImage fails if fileAssociations.ext is array
diff --git a/pkg/package-format/appimage/appLauncher.go b/pkg/package-format/appimage/appLauncher.go
index d6eba02..63dbedd 100644
--- a/pkg/package-format/appimage/appLauncher.go
+++ b/pkg/package-format/appimage/appLauncher.go
@@ -10,10 +10,10 @@ import (
"time"
"github.com/develar/app-builder/pkg/fs"
- "github.com/develar/app-builder/pkg/package-format"
+ package_format "github.com/develar/app-builder/pkg/package-format"
"github.com/develar/app-builder/pkg/util"
"github.com/develar/errors"
- "github.com/develar/go-fs-util"
+ fsutil "github.com/develar/go-fs-util"
)
const iconDirRelativePath = "usr/share/icons/hicolor"
@@ -126,12 +126,23 @@ func copyMimeTypes(options *AppImageOptions) (string, error) {
mimeTypes.WriteString(options.configuration.ProductName)
mimeTypes.WriteString(" document\n")
- mimeTypes.WriteString(" \n")
+ switch exts := fileAssociation.Ext.(type) {
+ case string:
+ mimeTypes.WriteString(" \n")
+ case []string:
+ for _, ext := range exts {
+ mimeTypes.WriteString(" \n")
+ }
+ default:
+ err := fmt.Errorf("unsupported extension type (%T) for MIME type: %s", fileAssociation.Ext, fileAssociation.MimeType)
+ util.LogErrorAndExit(err)
+ }
mimeTypes.WriteString(" \n")
-
mimeTypes.WriteString("\n")
}
}
diff --git a/pkg/package-format/appimage/configuration.go b/pkg/package-format/appimage/configuration.go
index 94c59bf..f49ddc7 100644
--- a/pkg/package-format/appimage/configuration.go
+++ b/pkg/package-format/appimage/configuration.go
@@ -18,6 +18,6 @@ type IconInfo struct {
}
type FileAssociation struct {
- Ext string `json:"ext"`
- MimeType string `json:"mimeType"`
+ Ext interface{} `json:"ext"` // Can be string or []string
+ MimeType string `json:"mimeType"`
}