Unverified Commit 4cb4cad3 authored by dish's avatar dish Committed by GitHub
Browse files

astro-language-server: 2.15.4 -> 2.16.0, cleanup (#464733)

parents eb3f83fb 3467902b
Loading
Loading
Loading
Loading
+37 −25
Original line number Diff line number Diff line
@@ -2,22 +2,30 @@
  lib,
  stdenv,
  fetchFromGitHub,
  pnpm_9,
  nodejs_22,
  pnpm_10,
  nodejs,
  nix-update-script,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "astro-language-server";
  version = "2.15.4";
  version = "2.16.0";

  src = fetchFromGitHub {
    owner = "withastro";
    repo = "language-tools";
    repo = "astro";
    rev = "@astrojs/language-server@${finalAttrs.version}";
    hash = "sha256-NBLUeg1WqxTXtu8eg1fihQSfm8koYAEWhfXAj/fIdC8=";
    hash = "sha256-95IsNW/ha4XsH0E0adX3x9N7ANDL6MZreXy//mIQk/I=";
  };

  pnpmDeps = pnpm_9.fetchDeps {
  # https://pnpm.io/filtering#--filter-package_name-1
  pnpmWorkspaces = [ "@astrojs/language-server..." ];
  prePnpmInstall = ''
    pnpm config set dedupe-peer-dependents false
    pnpm approve-builds @emmetio/css-parser
  '';

  pnpmDeps = pnpm_10.fetchDeps {
    inherit (finalAttrs)
      pname
      version
@@ -25,46 +33,50 @@ stdenv.mkDerivation (finalAttrs: {
      pnpmWorkspaces
      prePnpmInstall
      ;
    fetcherVersion = 1;
    hash = "sha256-tlpk+wbLjJqt37lu67p2A2RZAR1ZfnZFiYoqIQwvWPQ=";
    fetcherVersion = 2;
    hash = "sha256-LQpFnK+01SCyC4AHHHvdZlc6Ss40Lxq5+p9ioK10BSU=";
  };

  nativeBuildInputs = [
    nodejs_22
    pnpm_9.configHook
    nodejs
    pnpm_10.configHook
  ];

  buildInputs = [ nodejs_22 ];

  # Must specify to download "@astrojs/yaml2ts" depencendies
  # https://pnpm.io/filtering#--filter-package_name-1
  pnpmWorkspaces = [ "@astrojs/language-server..." ];
  prePnpmInstall = ''
    # Warning section for "pnpm@v8"
    # https://pnpm.io/cli/install#--filter-package_selector
    pnpm config set dedupe-peer-dependents false
  '';
  buildInputs = [ nodejs ];

  buildPhase = ''
    runHook preBuild

    # Must build the "@astrojs/yaml2ts" package. Dependency is linked via workspace by "pnpm"
    # (https://github.com/withastro/language-tools/blob/%40astrojs/language-server%402.14.2/pnpm-lock.yaml#L78-L80)
    pnpm --filter "@astrojs/language-server..." build

    runHook postBuild
  '';

  env.CI = true;

  installPhase = ''
    runHook preInstall

    mkdir -p $out/{bin,lib/astro-language-server}
    cp -r {packages,node_modules} $out/lib/astro-language-server
    ln -s $out/lib/astro-language-server/packages/language-server/bin/nodeServer.js $out/bin/astro-ls
    pnpm install --offline --prod --filter="@astrojs/language-server..."
    mkdir -p $out/{bin,lib/node_modules/astro-language-server/packages/language-tools}
    cp -r ./node_modules $out/lib/node_modules/astro-language-server
    cp -r packages/language-tools/{language-server,yaml2ts} $out/lib/node_modules/astro-language-server/packages/language-tools/
    pushd $out/lib/node_modules/astro-language-server/node_modules
    rm -rf {./,.pnpm/node_modules/}astro-{scripts,benchmark}
    popd

    ln -s $out/lib/node_modules/astro-language-server/packages/language-tools/language-server/bin/nodeServer.js $out/bin/astro-ls

    runHook postInstall
  '';

  passthru.updateScript = nix-update-script {
    extraArgs = [
      "--version-regex"
      "@astrojs/language-server@(.*)"
    ];
  };

  meta = {
    description = "Astro language server";
    homepage = "https://github.com/withastro/language-tools";