Unverified Commit 56bb82b9 authored by Doron Behar's avatar Doron Behar Committed by GitHub
Browse files

awk-language-server: move to `yarn*Hook`s and stdenv.mkDerivation (#493009)

parents fd281125 f0c47823
Loading
Loading
Loading
Loading
+0 −59
Original line number Diff line number Diff line
{
  "name": "awk-language-server",
  "description": "AWK Language Server",
  "version": "0.10.6",
  "author": "Stanislav Chernov <ch-e-st@yandex.ru>",
  "publisher": "beaglefoot",
  "license": "MIT",
  "keywords": [
    "language-server",
    "language-server-protocol",
    "lsp",
    "awk",
    "gawk"
  ],
  "engines": {
    "node": ">=16.0.0"
  },
  "bin": "./server/out/cli.js",
  "main": "./server/out/server.js",
  "typings": "./server/out/server.d.ts",
  "repository": {
    "type": "git",
    "url": "https://github.com/Beaglefoot/awk-language-server"
  },
  "dependencies": {
    "minimist": "1.2.6",
    "tree-sitter-awk": "0.7.2",
    "vscode-languageserver": "^7.0.0",
    "vscode-languageserver-textdocument": "^1.0.1",
    "web-tree-sitter": "0.22.1"
  },
  "devDependencies": {
    "@types/minimist": "1.2.2",
    "@types/jest": "27.0.1",
    "@types/node": "^12.12.0",
    "jest": "27.1.1",
    "prettier": "2.3.2",
    "ts-jest": "27.0.5",
    "typescript": "^4.3.2"
  },
  "scripts": {
    "build:completion": "man gawk | gawk -f scripts/build_completion_list.awk > docs.json",
    "prepublishOnly": "cd .. && yarn build:server:force",
    "clean:client": "rm -rfv client/out/*",
    "clean:server": "rm -rfv server/out/*",
    "build": "yarn build:server && yarn build:client",
    "build:client": "tsc -b client/tsconfig.json",
    "build:client:force": "yarn clean:client && yarn build:client --verbose --force",
    "build:server": "tsc -b server/tsconfig.json",
    "build:server:force": "yarn clean:server && yarn build:server --verbose --force",
    "postinstall": "cd client && yarn && cd ../server && yarn && cd ..",
    "test": "jest",
    "test:server": "jest server/tests",
    "test:ci": "jest --runInBand",
    "check:types": "tsc --noEmit -p server/tsconfig.json",
    "check:style": "prettier --check **/*.ts"
  },
  "private": true
}
+20 −25
Original line number Diff line number Diff line
{
  lib,
  mkYarnPackage,
  fetchYarnDeps,
  stdenv,
  fetchFromGitHub,
  jq,
  fetchYarnDeps,

  yarnConfigHook,
  yarnBuildHook,
  npmHooks,
  nodejs,
}:

mkYarnPackage rec {
stdenv.mkDerivation (finalAttrs: {
  name = "awk-language-server";
  version = "0.10.6";

  src = fetchFromGitHub {
    owner = "Beaglefoot";
    repo = "awk-language-server";
    tag = "server-${version}";
    tag = "server-${finalAttrs.version}";
    hash = "sha256-YtduDfMAUAoQY9tgyhgERFwx9TEgD52KdeHnX2MrjjI=";
    sparseCheckout = [ "server" ];
    postFetch = ''
@@ -32,30 +37,20 @@ mkYarnPackage rec {
    '';
  };

  packageJSON = ./package.json;
  yarnLock = ./yarn.lock;

  offlineCache = fetchYarnDeps {
    yarnLock = ./yarn.lock;
  yarnOfflineCache = fetchYarnDeps {
    yarnLock = "${finalAttrs.src}/yarn.lock";
    hash = "sha256-PaebqpXQGBxqcaxun8zi6TPeIgHmY+2fjsE/3LaWPN8=";
  };

  distPhase = "true";

  buildPhase = ''
    runHook preBuild

    export HOME=$(mktemp -d)
    yarn --offline build:server

    runHook postBuild
  '';

  postInstall = ''
    chmod +x $out/bin/awk-language-server
  '';
  nativeBuildInputs = [
    yarnConfigHook
    yarnBuildHook
    npmHooks.npmInstallHook
    nodejs
  ];

  passthru.updateScript = ./update.sh;
  yarnBuildScript = "build:server";
  dontNpmPrune = true;

  meta = {
    description = "Language Server for AWK and associated VSCode client extension";
@@ -64,4 +59,4 @@ mkYarnPackage rec {
    maintainers = with lib.maintainers; [ mathiassven ];
    mainProgram = "awk-language-server";
  };
}
})
+0 −30
Original line number Diff line number Diff line
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p common-updater-scripts coreutils gnused prefetch-yarn-deps

set -e

# update src version and hash
version="$(list-git-tags | sort -V | tail -1 | sed 's|server-||')"

update-source-version awk-language-server "$version"

# update vendored yarn.lock & package.json
newSrc="$(nix-build --no-out-link -A awk-language-server.src)"

nixFile="$(nix-instantiate --eval --strict -A 'awk-language-server.meta.position' \
    | sed -re 's/^"(.*):[0-9]+"$/\1/')"

nixFileDir="$(dirname "$nixFile")"

cp --force --no-preserve=mode "$newSrc"/{yarn.lock,package.json} "$nixFileDir/"

# update offlineCache hash
oldCacheSriHash="$(nix-instantiate --eval --strict \
    -A 'awk-language-server.offlineCache.drvAttrs.outputHash')"

newCacheHash="$(prefetch-yarn-deps "$nixFileDir/yarn.lock")"

newCacheSriHash="$(nix-hash --to-sri --type sha256 "$newCacheHash")"

sed -i "s|$oldCacheSriHash|\"$newCacheSriHash\"|" "$nixFile"
+0 −2762

File deleted.

Preview size limit exceeded, changes collapsed.