Pnpm suppport (#6)

* fix: resolves issues #3 and #4

* feat: add pnpm support & introduce pkg manager wrap for npm
This commit is contained in:
Sahil Bansal
2025-04-30 14:26:38 +05:30
committed by GitHub
parent ec010c7d6b
commit 1aa4b06f41
9 changed files with 320 additions and 165 deletions
+6 -5
View File
@@ -1,7 +1,6 @@
package utils
import (
"fmt"
"os"
"os/exec"
)
@@ -10,8 +9,10 @@ func ExecCmd(name string, args, env []string) error {
cmd := exec.Command(name, args...)
cmd.Env = append(os.Environ(), env...)
if err := cmd.Run(); err != nil {
return fmt.Errorf("error running cmd %s: %s\n", name, err.Error())
}
return nil
// Connect to standard streams
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
return cmd.Run()
}
+37 -1
View File
@@ -1,6 +1,10 @@
package utils
import "os"
import (
"fmt"
"os"
"strings"
)
func ApiKey() string {
return os.Getenv("SAFEDEP_API_KEY")
@@ -13,3 +17,35 @@ func TenantDomain() string {
func NpmAuthToken() string {
return os.Getenv("NPM_AUTH_TOKEN")
}
func ValidateEnvVars() error {
apiKey := ApiKey()
tenantId := TenantDomain()
var missingVars []string
if apiKey == "" {
missingVars = append(missingVars, "SAFEDEP_API_KEY")
}
if tenantId == "" {
missingVars = append(missingVars, "SAFEDEP_TENANT_ID")
}
if len(missingVars) > 0 {
return fmt.Errorf(`
SafeDep configuration incomplete
Missing environment variables:
%s
To enable package scanning:
1. Export these variables in your terminal:
export %s=your_api_key
export %s=your_tenant_id
2. Or add them to your shell profile file
For more information, visit: https://docs.safedep.io/cloud/quickstart
`, strings.Join(missingVars, "\n "), missingVars[0], missingVars[len(missingVars)-1])
}
return nil
}
+20
View File
@@ -33,3 +33,23 @@ func ParsePackageInfo(input string) (packageName, version string, err error) {
return "", "", fmt.Errorf("invalid format: expected 'package' OR 'package@version', got '%s'", input)
}
func IsInstallCommand(pkgManager, cmd string) bool {
validActions := map[string]map[string]bool{
"npm": {
"install": true,
"i": true,
"add": true,
},
"pnpm": {
"add": true,
"install": true,
"i": true,
},
}
if actions, exists := validActions[pkgManager]; exists {
return actions[cmd]
}
return false
}