feat: refactor packages and add update scripts
This commit is contained in:
39
packages/todo-mcp/package.nix
Normal file
39
packages/todo-mcp/package.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
version = "v0.2.1";
|
||||
in
|
||||
pkgs.rustPlatform.buildRustPackage {
|
||||
pname = "todo-mcp";
|
||||
inherit version;
|
||||
|
||||
src = pkgs.fetchFromGitea {
|
||||
domain = "git.janezic.dev";
|
||||
owner = "janezicmatej";
|
||||
repo = "todo-mcp";
|
||||
rev = version;
|
||||
sha256 = "sha256-BBL7PAgTdGR/+vEJmot8c8mgw5vq5Y/szud0YEiR1UY=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-uAyD7Tj9qctDXQ5NkR6T/aItxRmd5WqIXr7NeOlCl8M=";
|
||||
|
||||
nativeBuildInputs = [ pkgs.installShellFiles ];
|
||||
|
||||
preBuild = ''
|
||||
mkdir -p completions
|
||||
'';
|
||||
|
||||
SHELL_COMPLETIONS_DIR = "completions";
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion --bash completions/todo-mcp.bash
|
||||
installShellCompletion --zsh completions/_todo-mcp
|
||||
installShellCompletion --fish completions/todo-mcp.fish
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "simple todo cli with mcp server for ai integration";
|
||||
homepage = "https://git.janezic.dev/janezicmatej/todo-mcp";
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
||||
62
packages/todo-mcp/update.sh
Executable file
62
packages/todo-mcp/update.sh
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl jq nix-prefetch
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
PKG_FILE="$SCRIPT_DIR/package.nix"
|
||||
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
extract_hash() {
|
||||
sed 's/\x1b\[[0-9;]*m//g' | grep 'got:' | tail -1 | grep -oP 'sha256-[A-Za-z0-9+/]+='
|
||||
}
|
||||
|
||||
echo "fetching latest version..."
|
||||
LATEST=$(curl -sf "https://git.janezic.dev/api/v1/repos/janezicmatej/todo-mcp/tags?limit=1" | jq -r '.[0].name')
|
||||
CURRENT=$(grep 'version = ' "$PKG_FILE" | head -1 | sed 's/.*"\(.*\)".*/\1/')
|
||||
|
||||
if [[ "$CURRENT" == "$LATEST" ]]; then
|
||||
echo "todo-mcp already at $LATEST"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "updating todo-mcp: $CURRENT -> $LATEST"
|
||||
|
||||
echo " prefetching source..."
|
||||
BASE32=$(nix-prefetch-url --unpack "https://git.janezic.dev/janezicmatej/todo-mcp/archive/${LATEST}.tar.gz" 2>/dev/null)
|
||||
SRC_HASH=$(nix hash convert --to sri "sha256:$BASE32")
|
||||
echo " source: $SRC_HASH"
|
||||
|
||||
echo " computing cargo hash..."
|
||||
BUILD_OUTPUT=$(nix build --no-link --impure --expr "
|
||||
let
|
||||
pkgs = (builtins.getFlake \"path:$ROOT_DIR\").inputs.nixpkgs.legacyPackages.\${builtins.currentSystem};
|
||||
in pkgs.rustPlatform.fetchCargoVendor {
|
||||
src = pkgs.fetchFromGitea {
|
||||
domain = \"git.janezic.dev\";
|
||||
owner = \"janezicmatej\";
|
||||
repo = \"todo-mcp\";
|
||||
rev = \"$LATEST\";
|
||||
hash = \"$SRC_HASH\";
|
||||
};
|
||||
hash = \"\";
|
||||
}
|
||||
" 2>&1) || true
|
||||
CARGO_HASH=$(echo "$BUILD_OUTPUT" | extract_hash) || true
|
||||
|
||||
if [[ -z "$CARGO_HASH" ]]; then
|
||||
echo " error: failed to compute cargo hash"
|
||||
echo "$BUILD_OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
echo " cargo: $CARGO_HASH"
|
||||
|
||||
OLD_SRC=$(grep 'sha256 = ' "$PKG_FILE" | grep -oP 'sha256-[A-Za-z0-9+/]+=')
|
||||
OLD_CARGO=$(grep 'cargoHash = ' "$PKG_FILE" | grep -oP 'sha256-[A-Za-z0-9+/]+=')
|
||||
|
||||
sed -i "s|version = \"$CURRENT\"|version = \"$LATEST\"|" "$PKG_FILE"
|
||||
sed -i "s|$OLD_SRC|$SRC_HASH|" "$PKG_FILE"
|
||||
sed -i "s|$OLD_CARGO|$CARGO_HASH|" "$PKG_FILE"
|
||||
|
||||
echo "todo-mcp updated to $LATEST"
|
||||
Reference in New Issue
Block a user