matrix-hookshot: cleanup
Cleans up the package significantly. Both fetchYarnDeps and fetchCargoVendor have prefetchers built into nix-update, so we can delete the custom updater script now. Further, mkYarnPackage is deprecated, so switch to stdenv.mkDerivation which also allows us to remove the package.json file. Finally, just some misc cleanup and modernization to follow nixpkgs' standards. Woo!
This commit is contained in:
@@ -1,131 +0,0 @@
|
||||
{
|
||||
"name": "matrix-hookshot",
|
||||
"version": "7.1.0",
|
||||
"description": "A bridge between Matrix and multiple project management services, such as GitHub, GitLab and JIRA.",
|
||||
"main": "lib/app.js",
|
||||
"repository": "https://github.com/matrix-org/matrix-hookshot",
|
||||
"author": "matrix.org",
|
||||
"license": "Apache-2.0",
|
||||
"napi": {
|
||||
"name": "matrix-hookshot-rs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22"
|
||||
},
|
||||
"scripts": {
|
||||
"build:web": "vite build",
|
||||
"build:app": "tsc --project tsconfig.json",
|
||||
"build:app:rs": "napi build --dts ../src/libRs.d.ts --release ./lib",
|
||||
"build:app:fix-defs": "ts-node scripts/definitions-fixer.ts src/libRs.d.ts",
|
||||
"build:docs": "ts-node scripts/build-metrics-docs.ts > docs/metrics.md && mdbook build",
|
||||
"dev:web": "vite dev",
|
||||
"build": "scripts/build-app.sh",
|
||||
"clean:web": "rimraf public/",
|
||||
"clean:app": "tsc --build tsconfig.json --clean",
|
||||
"clean:app:rs": "rimraf src/libRs.d.ts target/",
|
||||
"clean:docs": "mdbook clean",
|
||||
"clean": "scripts/clean.sh",
|
||||
"prepare": "yarn build",
|
||||
"start": "node --require source-map-support/register lib/App/BridgeApp.js",
|
||||
"start:app": "node --require source-map-support/register lib/App/BridgeApp.js",
|
||||
"start:webhooks": "node --require source-map-support/register lib/App/GithubWebhookApp.js",
|
||||
"start:matrixsender": "node --require source-map-support/register lib/App/MatrixSenderApp.js",
|
||||
"start:resetcrypto": "node --require source-map-support/register lib/App/ResetCryptoStore.js",
|
||||
"test": "NODE_OPTIONS=--no-experimental-strip-types mocha -r ts-node/register tests/init.ts 'tests/*.ts' 'tests/**/*.ts'",
|
||||
"test:e2e": "vitest",
|
||||
"test:cover": "NODE_OPTIONS=--no-experimental-strip-types nyc --reporter=lcov --reporter=text yarn test",
|
||||
"lint": "yarn run lint:js && yarn run lint:rs",
|
||||
"lint:js": "yarn prettier -c src tests spec web scripts docs && eslint",
|
||||
"lint:js:apply": "yarn prettier -w src tests spec web scripts docs && eslint --fix",
|
||||
"lint:rs": "cargo fmt --all -- --check && cargo clippy -- -Dwarnings",
|
||||
"lint:rs:apply": "cargo clippy --fix && cargo fmt --all",
|
||||
"generate-default-config": "ts-node src/config/Defaults.ts --config > config.sample.yml",
|
||||
"validate-config": "ts-node src/config/Config.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
"@octokit/auth-app": "^6.0.2",
|
||||
"@octokit/auth-token": "^4.0.0",
|
||||
"@octokit/rest": "^20.0.2",
|
||||
"@octokit/webhooks": "^12.0.10",
|
||||
"@sentry/node": "^7.52.1",
|
||||
"@vector-im/compound-design-tokens": "^2.0.1",
|
||||
"@vector-im/compound-web": "^7.3.0",
|
||||
"ajv": "^8.11.0",
|
||||
"axios": "^1.8.2",
|
||||
"clsx": "^2.1.1",
|
||||
"cors": "^2.8.5",
|
||||
"date-fns": "^4.1.0",
|
||||
"express": "^4.21.2",
|
||||
"figma-js": "^1.16.1-0",
|
||||
"helmet": "^7.1.0",
|
||||
"http-status-codes": "^2.2.0",
|
||||
"ioredis": "^5.6.1",
|
||||
"jira-client": "^8.2.2",
|
||||
"markdown-it": "^14.0.0",
|
||||
"matrix-appservice-bridge": "^11.0.0",
|
||||
"matrix-bot-sdk": "npm:@vector-im/matrix-bot-sdk@0.7.1-element.14",
|
||||
"matrix-widget-api": "^1.10.0",
|
||||
"micromatch": "^4.0.8",
|
||||
"mime": "^4.0.4",
|
||||
"node-emoji": "^2.1.3",
|
||||
"parse-duration": "^2.1.3",
|
||||
"preact-render-to-string": "^6.3.1",
|
||||
"prom-client": "^15.1.0",
|
||||
"quickjs-emscripten": "^0.31.0",
|
||||
"reflect-metadata": "^0.2.1",
|
||||
"source-map-support": "^0.5.21",
|
||||
"string-argv": "^0.3.1",
|
||||
"tiny-typed-emitter": "^2.1.0",
|
||||
"url-join": "^5.0.0",
|
||||
"vite-plugin-magical-svg": "^1.1.1",
|
||||
"winston": "^3.11.0",
|
||||
"xml2js": "^0.6.2",
|
||||
"yaml": "^2.3.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.26.9",
|
||||
"@codemirror/lang-javascript": "^6.0.2",
|
||||
"@eslint/eslintrc": "^3.2.0",
|
||||
"@eslint/js": "^9.15.0",
|
||||
"@fontsource/inter": "^5.1.0",
|
||||
"@napi-rs/cli": "^2.13.2",
|
||||
"@octokit/webhooks-types": "^7.6.1",
|
||||
"@preact/preset-vite": "^2.9.1",
|
||||
"@rollup/plugin-alias": "^5.1.0",
|
||||
"@testcontainers/redis": "^10.25.0",
|
||||
"@tsconfig/node22": "^22",
|
||||
"@types/ajv": "^1.0.0",
|
||||
"@types/busboy": "^1.5.4",
|
||||
"@types/chai": "^4.2.22",
|
||||
"@types/cors": "^2.8.12",
|
||||
"@types/express": "^4.17.23",
|
||||
"@types/jira-client": "^7.1.0",
|
||||
"@types/markdown-it": "^13.0.7",
|
||||
"@types/micromatch": "^4.0.1",
|
||||
"@types/mime": "^3.0.4",
|
||||
"@types/mocha": "^10.0.6",
|
||||
"@types/node": "^22",
|
||||
"@types/xml2js": "^0.4.11",
|
||||
"@uiw/react-codemirror": "^4.12.3",
|
||||
"busboy": "^1.6.0",
|
||||
"chai": "^4",
|
||||
"eslint": "^9.15.0",
|
||||
"eslint-plugin-chai-expect": "^3.1.0",
|
||||
"eslint-plugin-mocha": "^10.5.0",
|
||||
"eslint-plugin-react": "^7.37.2",
|
||||
"mocha": "^10.8.2",
|
||||
"nyc": "^17.1.0",
|
||||
"preact": "^10.26.2",
|
||||
"prettier": "^3.5.3",
|
||||
"rimraf": "6.0.1",
|
||||
"sass": "^1.81.0",
|
||||
"testcontainers": "^10.25.0",
|
||||
"ts-node": "10.9.2",
|
||||
"typescript": "^5.7.2",
|
||||
"typescript-eslint": "^8.16.0",
|
||||
"vite": "^5.4.19",
|
||||
"vitest": "^3.1.3"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
||||
}
|
||||
@@ -5,87 +5,86 @@
|
||||
fetchYarnDeps,
|
||||
makeWrapper,
|
||||
matrix-sdk-crypto-nodejs,
|
||||
mkYarnPackage,
|
||||
yarnConfigHook,
|
||||
yarnInstallHook,
|
||||
cargo,
|
||||
rustPlatform,
|
||||
rustc,
|
||||
napi-rs-cli,
|
||||
pkg-config,
|
||||
nodejs_24,
|
||||
nodejs,
|
||||
openssl,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
let
|
||||
data = lib.importJSON ./pin.json;
|
||||
in
|
||||
mkYarnPackage rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "matrix-hookshot";
|
||||
version = data.version;
|
||||
version = "7.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "matrix-org";
|
||||
repo = "matrix-hookshot";
|
||||
rev = data.version;
|
||||
hash = data.srcHash;
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-jRLax1vqC0K3XvAWrH1J7nqtFioLr4n6Df9Kra/KKKU=";
|
||||
};
|
||||
|
||||
packageJSON = ./package.json;
|
||||
nodejs = nodejs_24;
|
||||
|
||||
offlineCache = fetchYarnDeps {
|
||||
yarnLock = src + "/yarn.lock";
|
||||
sha256 = data.yarnHash;
|
||||
inherit (finalAttrs) src;
|
||||
hash = "sha256-bxSeaJyQojfqIl/X4pjG+QRATKYKjsQhTQ3JOY/HDFQ=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit pname version src;
|
||||
hash = data.cargoHash;
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-1eBiLZHGNJxXNCVavkKt0xckAD2cilOW2wNCtqJ8O4g=";
|
||||
};
|
||||
|
||||
packageResolutions = {
|
||||
"@matrix-org/matrix-sdk-crypto-nodejs" =
|
||||
"${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs";
|
||||
};
|
||||
|
||||
extraBuildInputs = [ openssl ];
|
||||
buildInputs = [ openssl ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
rustPlatform.cargoSetupHook
|
||||
yarnConfigHook
|
||||
yarnInstallHook
|
||||
pkg-config
|
||||
cargo
|
||||
rustc
|
||||
napi-rs-cli
|
||||
makeWrapper
|
||||
nodejs
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
# We want nixpkgs' version of this instead
|
||||
rm -rf node_modules/@matrix-org/matrix-sdk-crypto-nodejs
|
||||
cp -r ${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs \
|
||||
node_modules/@matrix-org/matrix-sdk-crypto-nodejs
|
||||
chmod -R a+rwx node_modules/@matrix-org/matrix-sdk-crypto-nodejs
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
cd deps/${pname}
|
||||
napi build --target ${stdenv.hostPlatform.rust.rustcTargetSpec} --dts ../src/libRs.d.ts --release ./lib
|
||||
|
||||
yarn run build:app:rs --target ${stdenv.hostPlatform.rust.rustcTargetSpec}
|
||||
yarn run build:app:fix-defs
|
||||
yarn run build:app
|
||||
yarn run build:web
|
||||
cd ../..
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
makeWrapper '${nodejs_24}/bin/node' "$out/bin/matrix-hookshot" --add-flags \
|
||||
"$out/libexec/matrix-hookshot/deps/matrix-hookshot/lib/App/BridgeApp.js"
|
||||
makeWrapper '${lib.getExe nodejs}' "$out/bin/matrix-hookshot" --add-flags \
|
||||
"$out/lib/node_modules/matrix-hookshot/lib/App/BridgeApp.js"
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
# Scrub reference to rustc
|
||||
rm $out/libexec/matrix-hookshot/deps/matrix-hookshot/target/.rustc_info.json
|
||||
'';
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
doDist = false;
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
changelog = "https://github.com/matrix-org/matrix-hookshot/blob/${finalAttrs.version}/CHANGELOG.md";
|
||||
description = "Bridge between Matrix and multiple project management services, such as GitHub, GitLab and JIRA";
|
||||
homepage = "https://matrix-org.github.io/matrix-hookshot/";
|
||||
mainProgram = "matrix-hookshot";
|
||||
maintainers = with maintainers; [ chvp ];
|
||||
license = licenses.asl20;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with lib.maintainers; [ chvp ];
|
||||
license = lib.licenses.asl20;
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"version": "7.1.0",
|
||||
"srcHash": "sha256-jRLax1vqC0K3XvAWrH1J7nqtFioLr4n6Df9Kra/KKKU=",
|
||||
"yarnHash": "0m0cqy7kkj8d9lhw93halr64017rqscf5msz4bm3g8lhkil9w53g",
|
||||
"cargoHash": "sha256-1eBiLZHGNJxXNCVavkKt0xckAD2cilOW2wNCtqJ8O4g="
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/usr/bin/env -S nix shell nixpkgs#nix nixpkgs#curl nixpkgs#jq nixpkgs#prefetch-yarn-deps nixpkgs#nix-prefetch-github nixpkgs#nix-prefetch-git --command bash
|
||||
|
||||
if [ "$#" -gt 1 ] || [[ "$1" == -* ]]; then
|
||||
echo "Regenerates packaging data for matrix-hookshot."
|
||||
echo "Usage: $0 [git release tag]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version="$1"
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [ -z "$version" ]; then
|
||||
version="$(curl "https://api.github.com/repos/matrix-org/matrix-hookshot/releases?per_page=1" | jq -r '.[0].tag_name')"
|
||||
fi
|
||||
|
||||
src="https://raw.githubusercontent.com/matrix-org/matrix-hookshot/$version"
|
||||
src_hash=$(nix-prefetch-github matrix-org matrix-hookshot --rev ${version} | jq -r .hash)
|
||||
|
||||
tmpdir=$(mktemp -d)
|
||||
trap 'rm -rf "$tmpdir"' EXIT
|
||||
|
||||
pushd $tmpdir
|
||||
curl -O "$src/yarn.lock"
|
||||
yarn_hash=$(prefetch-yarn-deps yarn.lock)
|
||||
popd
|
||||
|
||||
curl -O "$src/package.json"
|
||||
# There is no prefetcher for the cargo hash, but care should still be taken to update it
|
||||
cat > pin.json << EOF
|
||||
{
|
||||
"version": "$version",
|
||||
"srcHash": "$src_hash",
|
||||
"yarnHash": "$yarn_hash",
|
||||
"cargoHash": "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||
}
|
||||
EOF
|
||||
Reference in New Issue
Block a user