mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 22:03:03 +00:00
59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package installers
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
// OlricInstaller handles Olric server installation
|
|
type OlricInstaller struct {
|
|
*BaseInstaller
|
|
version string
|
|
}
|
|
|
|
// NewOlricInstaller creates a new Olric installer
|
|
func NewOlricInstaller(arch string, logWriter io.Writer) *OlricInstaller {
|
|
return &OlricInstaller{
|
|
BaseInstaller: NewBaseInstaller(arch, logWriter),
|
|
version: "v0.7.0",
|
|
}
|
|
}
|
|
|
|
// IsInstalled checks if Olric is already installed
|
|
func (oi *OlricInstaller) IsInstalled() bool {
|
|
_, err := exec.LookPath("olric-server")
|
|
return err == nil
|
|
}
|
|
|
|
// Install downloads and installs Olric server
|
|
func (oi *OlricInstaller) Install() error {
|
|
if oi.IsInstalled() {
|
|
fmt.Fprintf(oi.logWriter, " ✓ Olric already installed\n")
|
|
return nil
|
|
}
|
|
|
|
fmt.Fprintf(oi.logWriter, " Installing Olric...\n")
|
|
|
|
// Check if Go is available
|
|
if _, err := exec.LookPath("go"); err != nil {
|
|
return fmt.Errorf("go not found - required to install Olric. Please install Go first")
|
|
}
|
|
|
|
cmd := exec.Command("go", "install", fmt.Sprintf("github.com/olric-data/olric/cmd/olric-server@%s", oi.version))
|
|
cmd.Env = append(os.Environ(), "GOBIN=/usr/local/bin")
|
|
if err := cmd.Run(); err != nil {
|
|
return fmt.Errorf("failed to install Olric: %w", err)
|
|
}
|
|
|
|
fmt.Fprintf(oi.logWriter, " ✓ Olric installed\n")
|
|
return nil
|
|
}
|
|
|
|
// Configure is a placeholder for Olric configuration
|
|
func (oi *OlricInstaller) Configure() error {
|
|
// Configuration is handled by the orchestrator
|
|
return nil
|
|
}
|