Publish Agent Skills discovery metadata
This commit is contained in:
1 parent
8799cee0ca
commit
3d7254aaf0
7 files changed
+193
-4
No files matched your search
Executable
+63
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_ROOT=$(cd "$(dirname "$0")/.." && pwd)
|
||||
SSH_HOST=${CRYPSTIE_DEPLOY_HOST:-crypstie@sergeych.net}
|
||||
REMOTE_ROOT=${CRYPSTIE_SKILLS_ROOT:-/home/crypstie/agent-skills}
|
||||
TOKEN_FILE=${CRYPSTIE_NPM_TOKEN_FILE:-${PROJECT_ROOT}/.node_token}
|
||||
DEPLOY_NPM=1
|
||||
DEPLOY_SKILLS=1
|
||||
|
||||
usage() {
|
||||
echo "Usage: scripts/deploy [--npm-only | --skills-only]"
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
"") ;;
|
||||
--npm-only) DEPLOY_SKILLS=0 ;;
|
||||
--skills-only) DEPLOY_NPM=0 ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
*) usage >&2; exit 2 ;;
|
||||
esac
|
||||
|
||||
cd "$PROJECT_ROOT"
|
||||
npm test
|
||||
|
||||
STAGING=$(mktemp -d)
|
||||
trap 'rm -rf -- "$STAGING"' EXIT
|
||||
|
||||
if [[ "$DEPLOY_NPM" == 1 ]]; then
|
||||
PACKAGE_NAME=$(node -p "require('./package.json').name")
|
||||
PACKAGE_VERSION=$(node -p "require('./package.json').version")
|
||||
|
||||
if npm view "${PACKAGE_NAME}@${PACKAGE_VERSION}" version --json >/dev/null 2>&1; then
|
||||
echo "npm: ${PACKAGE_NAME}@${PACKAGE_VERSION} is already published; skipping"
|
||||
else
|
||||
if [[ ! -r "$TOKEN_FILE" ]]; then
|
||||
echo "npm: token file is not readable: $TOKEN_FILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
TOKEN=$(tr -d '\r\n' < "$TOKEN_FILE")
|
||||
if [[ -z "$TOKEN" ]]; then
|
||||
echo "npm: token file is empty: $TOKEN_FILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
NPMRC="$STAGING/npmrc"
|
||||
(umask 077; printf '//registry.npmjs.org/:_authToken=%s\n' "$TOKEN" > "$NPMRC")
|
||||
npm publish --access public --userconfig "$NPMRC"
|
||||
unset TOKEN
|
||||
rm -f -- "$NPMRC"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$DEPLOY_SKILLS" == 1 ]]; then
|
||||
DISCOVERY="$STAGING/discovery"
|
||||
node scripts/build-skill-discovery.js "$DISCOVERY" >/dev/null
|
||||
REMOTE_STAGING="${REMOTE_ROOT}.incoming"
|
||||
|
||||
ssh "$SSH_HOST" "mkdir -p '$REMOTE_STAGING'"
|
||||
rsync -az --delete "$DISCOVERY/" "$SSH_HOST:$REMOTE_STAGING/"
|
||||
ssh "$SSH_HOST" "set -e; chmod -R a+rX '$REMOTE_STAGING'; rm -rf '${REMOTE_ROOT}.previous'; if [ -d '$REMOTE_ROOT' ]; then mv '$REMOTE_ROOT' '${REMOTE_ROOT}.previous'; fi; mv '$REMOTE_STAGING' '$REMOTE_ROOT'"
|
||||
echo "skills: deployed to https://crypstie.com/.well-known/agent-skills/index.json"
|
||||
fi
|
||||
Reference in new issue
Block a user