No description
cmd | ||
.gitignore | ||
appindex.go | ||
auto.go | ||
decompress.go | ||
decompress_unix.go | ||
decompress_win.go | ||
dirs.go | ||
download.go | ||
go.mod | ||
go.sum | ||
install.go | ||
installed_pacakges.go | ||
progress.go | ||
README.md | ||
register_unix.go | ||
register_win.go | ||
run_unix.go | ||
run_win.go | ||
utils.go |
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:
📦 Library usage:
To use SPM for downloading, decompressing, and installing updates, implement the following example in your Go application:
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()
}
⚡ CLI usage (spm binary)
SPM also ships with a standalone CLI tool located in cmd/main.go
It's useful for testing, scripting, or when you want to update Spitfire components manually.
Build:
go build -o spm ./cmd/main.go
Usage:
spm <download|install|register|run|all> [flags]
Flags (for download/all):
-pkg name:type:release[:os[:arch]] repeatable
Examples:
spm download -pkg spitfire-browser:browser:nightly
spm all -pkg spitfire-launcher:launcher:nightly -pkg spitfire-browser:browser:nightly
⚙ Environment variables
SPM respects the following environment variables:
Var | Values | Desc |
---|---|---|
SPM_PREFERRED_DECOMPRESS | "7zip", "7zr", "tar", "purego" | Choose preferred decompression method. |
License