diff options
Diffstat (limited to 'cli/internal/packagemanager/pnpm6.go')
| -rw-r--r-- | cli/internal/packagemanager/pnpm6.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/cli/internal/packagemanager/pnpm6.go b/cli/internal/packagemanager/pnpm6.go new file mode 100644 index 0000000..6039966 --- /dev/null +++ b/cli/internal/packagemanager/pnpm6.go @@ -0,0 +1,63 @@ +package packagemanager + +import ( + "fmt" + + "github.com/Masterminds/semver" + "github.com/vercel/turbo/cli/internal/fs" + "github.com/vercel/turbo/cli/internal/lockfile" + "github.com/vercel/turbo/cli/internal/turbopath" +) + +// Pnpm6Workspaces is a representation of workspace package globs found +// in pnpm-workspace.yaml +type Pnpm6Workspaces struct { + Packages []string `yaml:"packages,omitempty"` +} + +var nodejsPnpm6 = PackageManager{ + Name: "nodejs-pnpm6", + Slug: "pnpm", + Command: "pnpm", + Specfile: "package.json", + Lockfile: "pnpm-lock.yaml", + PackageDir: "node_modules", + ArgSeparator: []string{"--"}, + WorkspaceConfigurationPath: "pnpm-workspace.yaml", + + getWorkspaceGlobs: getPnpmWorkspaceGlobs, + + getWorkspaceIgnores: getPnpmWorkspaceIgnores, + + Matches: func(manager string, version string) (bool, error) { + if manager != "pnpm" { + return false, nil + } + + v, err := semver.NewVersion(version) + if err != nil { + return false, fmt.Errorf("could not parse pnpm version: %w", err) + } + c, err := semver.NewConstraint("<7.0.0") + if err != nil { + return false, fmt.Errorf("could not create constraint: %w", err) + } + + return c.Check(v), nil + }, + + detect: func(projectDirectory turbopath.AbsoluteSystemPath, packageManager *PackageManager) (bool, error) { + specfileExists := projectDirectory.UntypedJoin(packageManager.Specfile).FileExists() + lockfileExists := projectDirectory.UntypedJoin(packageManager.Lockfile).FileExists() + + return (specfileExists && lockfileExists), nil + }, + + canPrune: func(cwd turbopath.AbsoluteSystemPath) (bool, error) { + return true, nil + }, + + UnmarshalLockfile: func(_rootPackageJSON *fs.PackageJSON, contents []byte) (lockfile.Lockfile, error) { + return lockfile.DecodePnpmLockfile(contents) + }, +} |
