Introduce package manager interaction abstraction

This commit is contained in:
abhisek
2025-05-14 13:18:56 +05:30
parent dfad44a4e6
commit 9aa2d97cd5
3 changed files with 54 additions and 2 deletions
+8
View File
@@ -42,6 +42,14 @@ func (npm *npmPackageManager) Name() string {
}
func (npm *npmPackageManager) ParseCommand(args []string) (*ParsedCommand, error) {
if len(args) == 0 {
return nil, fmt.Errorf("no command specified")
}
if args[0] == "npm" || args[0] == "pnpm" {
args = args[1:]
}
command := Command{Exe: npm.Config.CommandName, Args: args}
// No command specified
+11
View File
@@ -20,6 +20,17 @@ func TestNpmParseCommand(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, 1, len(parsedCommand.InstallTargets))
assert.Equal(t, "@types/node", parsedCommand.InstallTargets[0].PackageVersion.Package.Name)
assert.Empty(t, parsedCommand.InstallTargets[0].PackageVersion.Version)
},
},
{
name: "install a single package with specific version",
command: "npm install @types/node@1.2.3",
assert: func(t *testing.T, parsedCommand *ParsedCommand, err error) {
assert.NoError(t, err)
assert.Equal(t, 1, len(parsedCommand.InstallTargets))
assert.Equal(t, "@types/node", parsedCommand.InstallTargets[0].PackageVersion.Package.Name)
assert.Equal(t, "1.2.3", parsedCommand.InstallTargets[0].PackageVersion.Version)
},
},
{