first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:52:23 +03:00
commit 880f412e2c
2662 changed files with 866266 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
package installer
import (
"context"
"fmt"
"io"
"os/exec"
"github.com/maximhq/bifrost/cli/internal/harness"
)
// IsInstalled reports whether the harness binary exists in the system PATH.
func IsInstalled(h harness.Harness) bool {
_, err := exec.LookPath(h.Binary)
return err == nil
}
// InstallCommand returns the command and arguments needed to install the harness globally via npm.
func InstallCommand(h harness.Harness) (string, []string) {
return "npm", []string{"install", "-g", h.InstallPkg}
}
// EnsureNPM checks that npm is available in the system PATH.
func EnsureNPM() error {
_, err := exec.LookPath("npm")
if err != nil {
return fmt.Errorf("npm not found in path: %w", err)
}
return nil
}
// RunInstall executes the npm install command for the given harness,
// streaming output to the provided writers.
func RunInstall(ctx context.Context, stdout, stderr io.Writer, h harness.Harness) error {
cmdName, args := InstallCommand(h)
cmd := exec.CommandContext(ctx, cmdName, args...)
cmd.Stdout = stdout
cmd.Stderr = stderr
cmd.Stdin = nil
if err := cmd.Run(); err != nil {
return fmt.Errorf("install %s: %w", h.Label, err)
}
return nil
}