SPM/README.md
2025-03-02 09:59:00 +01:00

88 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p align="center">
<img src="https://weforge.xyz/Spitfire/Branding/raw/branch/main/active/luncher/icon.svg" alt="Logo" width="64" height="64">
</p>
<p align="center" style="font-size: 32px;">
<strong>Spitfire Package Manager (SPM)</strong>
</p>
<p align="center">
A package management library designed to handle automatic updates for Spitfire browser and all of its components.
</p>
### 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 shouldnt 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()
}
```
<p align="center" style="font-size: 32px;">
<strong>License</strong>
</p>
<p align="center">
<img src="https://www.gnu.org/graphics/agplv3-with-text-162x68.png" alt="AGPLv3 License" width="162" height="68">
</p>