...
This commit is contained in:
55
pkg/system/builders/postgresql/dependencies/dependencies.go
Normal file
55
pkg/system/builders/postgresql/dependencies/dependencies.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package dependencies
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// DependencyManager handles the installation of dependencies
|
||||
type DependencyManager struct {
|
||||
Dependencies []string
|
||||
}
|
||||
|
||||
// NewDependencyManager creates a new dependency manager
|
||||
func NewDependencyManager(dependencies ...string) *DependencyManager {
|
||||
return &DependencyManager{
|
||||
Dependencies: dependencies,
|
||||
}
|
||||
}
|
||||
|
||||
// WithDependencies sets the dependencies to install
|
||||
func (d *DependencyManager) WithDependencies(dependencies ...string) *DependencyManager {
|
||||
d.Dependencies = dependencies
|
||||
return d
|
||||
}
|
||||
|
||||
// Install installs the dependencies
|
||||
func (d *DependencyManager) Install() error {
|
||||
if len(d.Dependencies) == 0 {
|
||||
fmt.Println("No dependencies to install")
|
||||
return nil
|
||||
}
|
||||
|
||||
fmt.Printf("Installing dependencies: %s\n", strings.Join(d.Dependencies, ", "))
|
||||
|
||||
// Update package lists
|
||||
updateCmd := exec.Command("apt-get", "update")
|
||||
updateCmd.Stdout = nil
|
||||
updateCmd.Stderr = nil
|
||||
if err := updateCmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to update package lists: %w", err)
|
||||
}
|
||||
|
||||
// Install dependencies
|
||||
args := append([]string{"install", "-y"}, d.Dependencies...)
|
||||
installCmd := exec.Command("apt-get", args...)
|
||||
installCmd.Stdout = nil
|
||||
installCmd.Stderr = nil
|
||||
if err := installCmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to install dependencies: %w", err)
|
||||
}
|
||||
|
||||
fmt.Println("✅ Dependencies installed successfully")
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user