func generateDownloadPlist(baseURL *url.URL, ipaPath string, plinfo *plistBundle) ([]byte, error) { dp := new(downloadPlist) item := new(plItem) baseURL.Path = ipaPath ipaUrl := baseURL.String() item.Assets = append(item.Assets, &plAsset{ Kind: "software-package", URL: ipaUrl, }) iconFiles := plinfo.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles if iconFiles != nil && len(iconFiles) > 0 { baseURL.Path = "/-/unzip/" + ipaPath + "/-/**/" + iconFiles[0] + ".png" imgUrl := baseURL.String() item.Assets = append(item.Assets, &plAsset{ Kind: "display-image", URL: imgUrl, }) } item.Metadata.Kind = "software" item.Metadata.BundleIdentifier = plinfo.CFBundleIdentifier item.Metadata.BundleVersion = plinfo.CFBundleVersion item.Metadata.Title = plinfo.CFBundleName if item.Metadata.Title == "" { item.Metadata.Title = filepath.Base(ipaUrl) } dp.Items = append(dp.Items, item) data, err := goplist.MarshalIndent(dp, goplist.XMLFormat, " ") return data, err }
func generateDownloadPlist(ipaUrl, imgUrl string, plinfo *plistBundle) ([]byte, error) { dp := new(downloadPlist) item := new(plItem) item.Assets = append(item.Assets, &plAsset{ Kind: "software-package", URL: ipaUrl, }) // FIXME(ssx): find icon from CFBundleIconFile _ = imgUrl // , &plAsset{ // Kind: "display-image", // URL: imgUrl, // }) item.Metadata.Kind = "software" item.Metadata.BundleIdentifier = plinfo.CFBundleIdentifier item.Metadata.BundleVersion = plinfo.CFBundleVersion item.Metadata.Title = plinfo.CFBundleDisplayName if item.Metadata.Title == "" { item.Metadata.Title = filepath.Base(ipaUrl) } dp.Items = append(dp.Items, item) data, err := goplist.MarshalIndent(dp, goplist.XMLFormat, " ") // fmt.Println(string(data)) // fmt.Println(err) return data, err }
// String ... func (options AppStoreOptionsModel) String() (string, error) { hash := options.Hash() plistBytes, err := plist.MarshalIndent(hash, plist.XMLFormat, "\t") if err != nil { return "", fmt.Errorf("failed to marshal export options model, error: %s", err) } return string(plistBytes), err }
// WritePlistToFile ... func WritePlistToFile(options map[string]interface{}, pth string) error { plistBytes, err := plist.MarshalIndent(options, plist.XMLFormat, "\t") if err != nil { return fmt.Errorf("failed to marshal export options model, error: %s", err) } if err := fileutil.WriteBytesToFile(pth, plistBytes); err != nil { return fmt.Errorf("failed to write export options, error: %s", err) } return nil }