(destExt string, list ...string)
| 230 | } |
| 231 | |
| 232 | func pushExtensions(destExt string, list ...string) { |
| 233 | var err error |
| 234 | var dest string |
| 235 | if len(destExt) > 0 { |
| 236 | dest = filepath.Join(appDestPath, "xpui", "extensions", destExt) |
| 237 | } else { |
| 238 | dest = filepath.Join(appDestPath, "xpui", "extensions") |
| 239 | } |
| 240 | |
| 241 | for _, v := range list { |
| 242 | var extName, extPath string |
| 243 | |
| 244 | if filepath.IsAbs(v) { |
| 245 | extName = filepath.Base(v) |
| 246 | extPath = v |
| 247 | } else { |
| 248 | extName = v |
| 249 | if !strings.Contains(extName, ".js") && !strings.Contains(extName, ".mjs") { |
| 250 | extName += ".js" |
| 251 | } |
| 252 | extPath, err = utils.GetExtensionPath(extName) |
| 253 | if err != nil { |
| 254 | utils.PrintError(`Extension "` + extName + `" not found`) |
| 255 | continue |
| 256 | } |
| 257 | } |
| 258 | |
| 259 | if err = utils.CopyFile(extPath, dest); err != nil { |
| 260 | utils.PrintError(err.Error()) |
| 261 | continue |
| 262 | } |
| 263 | |
| 264 | if strings.HasSuffix(extName, ".mjs") { |
| 265 | utils.ModifyFile(filepath.Join(dest, extName), func(content string) string { |
| 266 | lines := strings.Split(content, "\n") |
| 267 | for i := 0; i < len(lines); i++ { |
| 268 | mapping := utils.FindSymbol("", lines[i], []string{ |
| 269 | `//\s*spicetify_map\{(.+?)\}\{(.+?)\}`, |
| 270 | }) |
| 271 | if len(mapping) > 0 { |
| 272 | lines[i+1] = strings.Replace(lines[i+1], mapping[0], mapping[1], 1) |
| 273 | } |
| 274 | } |
| 275 | |
| 276 | return strings.Join(lines, "\n") |
| 277 | }) |
| 278 | } |
| 279 | } |
| 280 | } |
| 281 | |
| 282 | func RefreshApps(list ...string) { |
| 283 | spinner, _ := utils.Spinner.Start("Refreshing custom apps") |
no test coverage detected