Skip to content

Commit

Permalink
add support for pnpm 9
Browse files Browse the repository at this point in the history
  • Loading branch information
VanCoding committed Jun 21, 2024
1 parent 3ac1367 commit 8e4ce9b
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 35 deletions.
12 changes: 6 additions & 6 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
nixpkgs.mkShell {
buildInputs = [
nixpkgs.nodejs-18_x
nixpkgs.nodePackages.pnpm
nixpkgs.pnpm
nixpkgs.stdenv.cc.cc.lib
prisma.package
nixpkgs.nixfmt-rfc-style
Expand Down
50 changes: 28 additions & 22 deletions pnpm/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 33 additions & 6 deletions prisma.nix
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,39 @@ rec {
fromPnpmLock =
path:
let
textAfter = keyword: text: builtins.elemAt (builtins.split keyword text) 1;
textBefore = keyword: text: builtins.elemAt (builtins.split keyword text) 0;
parsePnpmLockVersion =
pnpmLock:
if nixpkgs.lib.strings.hasPrefix "lockfileVersion: 5" pnpmLock then
"5"
else if nixpkgs.lib.strings.hasPrefix "lockfileVersion: '6" pnpmLock then
"6"
else
"9";
pnpmLockParsers = {
# example line:
# /@prisma/engines-version/5.1.1-1.6a3747c37ff169c90047725a05a6ef02e32ac97e:
"5" =
pnpmLock:
builtins.elemAt (builtins.match ".*@prisma/engines-version/.*\\.([0-9a-f]{40}):.*" pnpmLock) 0;

# example line:
# /@prisma/[email protected]:
"6" =
pnpmLock:
builtins.elemAt (builtins.match ".*@prisma/engines-version@.*\\.([0-9a-f]{40}):.*" pnpmLock) 0;

# exmple line:
# '@prisma/engines-version@5.15.0-29.12e25d8d06f6ea5a0252864dd9a03b1bb51f3022':
"9" =
pnpmLock:
builtins.elemAt (builtins.match ".*@prisma/engines-version@.*\\.([0-9a-f]{40})'.*" pnpmLock) 0;
};
pnpmLock = builtins.readFile path;
splitCharacter = if nixpkgs.lib.strings.hasPrefix "lockfileVersion: 5" pnpmLock then "/" else "@";
version = builtins.elemAt (builtins.split ":" (
builtins.elemAt (builtins.split ("@prisma/engines-version" + splitCharacter) pnpmLock) 2
)) 0;
commit = nixpkgs.lib.lists.last (nixpkgs.lib.strings.splitString "." version);
pnpmLockVersion = parsePnpmLockVersion pnpmLock;
pnpmLockParser = pnpmLockParsers.${pnpmLockVersion};
commit = pnpmLockParser pnpmLock;
in
fromCommit commit;
fromNpmLock =
Expand All @@ -144,5 +171,5 @@ rec {
packageLock.packages.${"node_modules/@prisma/engines-version"}.version;
commit = nixpkgs.lib.lists.last (nixpkgs.lib.strings.splitString "." version);
in
builtins.trace commit (fromCommit commit);
fromCommit commit;
}

0 comments on commit 8e4ce9b

Please sign in to comment.