mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
Introduce package manager interaction abstraction
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user