Spitfire Package Manager (SPM)
A package management library designed to handle automatic updates for Spitfire browser and all of its components.
### SPM is currently used in: - [Spitfire Luncher](https://weforge.xyz/Spitfire/Luncher) - [Spitfire Insaller](https://weforge.xyz/Spitfire/Installer) ### Example usage: To use SPM for downloading, decompressing, and installing updates, implement the following example in your Go application: ```go package main import ( "fmt" "runtime" spm "weforge.xyz/Spitfire/SPM" ) func main() { // Define the packages to download specs := []spm.AppIndexEntry{ { Name: "spitfire-launcher", Release: "nightly", OS: runtime.GOOS, Arch: runtime.GOARCH, Type: "launcher", }, { Name: "spitfire-browser", Release: "nightly", OS: runtime.GOOS, Arch: runtime.GOARCH, Type: "browser", }, } // -- Download -- // spm.DownloadSpecified(specs) downloads specified packages to temp dir and decompresses them, making them ready for install by running "spm.InstallUpdates()". fmt.Println("Starting download and decompression...") if err := spm.DownloadSpecified(specs); err != nil { fmt.Println("Error downloading packages:", err) return } fmt.Println("Download complete. Proceeding with installation...") // -- Install -- // Install and Download are separate as you cannot replace running binaries on Windows. So the final move to the correct folder is done by "spm.InstallUpdates()". if err := spm.InstallUpdates(); err != nil { fmt.Println("Error during installation:", err) return } // -- Register -- // spm.RegisterApp() is primarily used to modify the Windows registry so it recognizes Spitfire Browser as an installed program. // You shouldn’t need to run it more than once during installation. Also this function requires administrative privileges on Windows to work correctly. if err := spm.RegisterApp(); err != nil { fmt.Println("Error registering app:", err) return } fmt.Println("Installation completed successfully!") // -- Run -- // This function detects the browser binary and runs it. Alternatively, you can also use spm.RunAndWait() spm.Run() } ```License