Update publish scripts

This commit is contained in:
2025-08-08 17:04:47 -05:00
parent 26ecbef428
commit 3feaf261f0
4 changed files with 254 additions and 1 deletions
+85
View File
@@ -0,0 +1,85 @@
#!/bin/bash
# Hanzo AI SDK - Build All Packages Script
# Builds all packages without publishing
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}====================================${NC}"
echo -e "${BLUE}Hanzo AI SDK - Building All Packages${NC}"
echo -e "${BLUE}====================================${NC}"
echo
# Check if we're in the right directory
if [ ! -f "pyproject.toml" ] || [ ! -d "pkg" ]; then
echo -e "${RED}Error: Must be run from the python-sdk root directory${NC}"
exit 1
fi
# Packages to build
PACKAGES=("hanzoai" "hanzo" "hanzo-mcp" "hanzo-memory" "hanzo-network" "hanzo-agents" "hanzo-repl")
echo -e "${YELLOW}Packages to build:${NC}"
for pkg in "${PACKAGES[@]}"; do
echo -e " • $pkg"
done
echo
# Function to build a package
build_package() {
local pkg_name=$1
local pkg_dir=""
# Find package directory
if [ -f "pyproject.toml" ] && grep -q "name = \"$pkg_name\"" pyproject.toml; then
pkg_dir="."
elif [ -d "pkg/$pkg_name" ] && [ -f "pkg/$pkg_name/pyproject.toml" ]; then
pkg_dir="pkg/$pkg_name"
else
echo -e "${YELLOW}Skipping $pkg_name - not found${NC}"
return 0
fi
echo -e "${BLUE}Building $pkg_name...${NC}"
# Get version
local version=$(cd "$pkg_dir" && python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")
echo -e "${YELLOW}Version: $version${NC}"
# Clean previous builds
rm -rf "$pkg_dir/dist/" "$pkg_dir/build/" "$pkg_dir"/*.egg-info 2>/dev/null || true
# Build package
(cd "$pkg_dir" && python -m build)
# Show built files
echo "Built files:"
ls -la "$pkg_dir/dist/" | grep -E '\.(whl|tar\.gz)$' || echo " No dist files found"
echo -e "${GREEN}✓ $pkg_name built successfully${NC}"
echo
}
# Build each package
for pkg in "${PACKAGES[@]}"; do
build_package "$pkg"
done
echo -e "${GREEN}====================================${NC}"
echo -e "${GREEN}All packages built successfully!${NC}"
echo -e "${GREEN}====================================${NC}"
echo
echo "To publish all packages:"
echo -e "${YELLOW} export PYPI_TOKEN='your-token'${NC}"
echo -e "${YELLOW} ./scripts/publish-all.sh${NC}"
echo
echo "To publish individual package:"
echo -e "${YELLOW} ./scripts/publish-single.sh hanzoai${NC}"
echo
+85
View File
@@ -0,0 +1,85 @@
#!/bin/bash
# Hanzo AI SDK - Complete Package Publishing Script
# Publishes all packages in the monorepo to PyPI
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}====================================${NC}"
echo -e "${BLUE}Hanzo AI SDK - Publishing All Packages${NC}"
echo -e "${BLUE}====================================${NC}"
echo
# Check if we're in the right directory
if [ ! -f "pyproject.toml" ] || [ ! -d "pkg" ]; then
echo -e "${RED}Error: Must be run from the python-sdk root directory${NC}"
exit 1
fi
# Check for PYPI_TOKEN
if [ -z "$PYPI_TOKEN" ]; then
echo -e "${RED}Error: PYPI_TOKEN environment variable not set${NC}"
echo "Set it with: export PYPI_TOKEN='your-token'"
exit 1
fi
# Packages to publish (in order)
PACKAGES=("hanzoai" "hanzo" "hanzo-mcp" "hanzo-memory" "hanzo-network" "hanzo-agents" "hanzo-repl")
echo -e "${YELLOW}Packages to publish:${NC}"
for pkg in "${PACKAGES[@]}"; do
echo -e " • $pkg"
done
echo
# Function to publish a package
publish_package() {
local pkg_name=$1
local pkg_dir=""
# Find package directory
if [ -f "pyproject.toml" ] && grep -q "name = \"$pkg_name\"" pyproject.toml; then
pkg_dir="."
elif [ -d "pkg/$pkg_name" ] && [ -f "pkg/$pkg_name/pyproject.toml" ]; then
pkg_dir="pkg/$pkg_name"
else
echo -e "${YELLOW}Skipping $pkg_name - not found${NC}"
return 0
fi
echo -e "${BLUE}Publishing $pkg_name...${NC}"
# Clean previous builds
rm -rf "$pkg_dir/dist/" "$pkg_dir/build/" "$pkg_dir"/*.egg-info 2>/dev/null || true
# Build package
(cd "$pkg_dir" && python -m build)
# Upload to PyPI
(cd "$pkg_dir" && python -m twine upload --username __token__ --password "$PYPI_TOKEN" dist/*)
echo -e "${GREEN}✓ $pkg_name published successfully${NC}"
echo
}
# Publish each package
for pkg in "${PACKAGES[@]}"; do
publish_package "$pkg"
done
echo -e "${GREEN}====================================${NC}"
echo -e "${GREEN}All packages published successfully!${NC}"
echo -e "${GREEN}====================================${NC}"
echo
echo "Install with:"
echo -e "${YELLOW} pip install hanzo[all] # Complete ecosystem${NC}"
echo -e "${YELLOW} pip install hanzoai # AI client library${NC}"
echo -e "${YELLOW} pip install hanzo-mcp # MCP development tools${NC}"
echo
+83
View File
@@ -0,0 +1,83 @@
#!/bin/bash
# Hanzo AI SDK - Single Package Publishing Script
# Usage: ./scripts/publish-single.sh package-name
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
if [ $# -eq 0 ]; then
echo -e "${RED}Usage: $0 <package-name>${NC}"
echo "Available packages:"
echo " • hanzoai (main AI client)"
echo " • hanzo (CLI and network)"
echo " • hanzo-mcp (MCP tools)"
echo " • hanzo-memory (memory systems)"
echo " • hanzo-network (distributed compute)"
echo " • hanzo-agents (multi-agent workflows)"
echo " • hanzo-repl (interactive REPL)"
exit 1
fi
PKG_NAME=$1
echo -e "${BLUE}====================================${NC}"
echo -e "${BLUE}Publishing $PKG_NAME${NC}"
echo -e "${BLUE}====================================${NC}"
echo
# Check for PYPI_TOKEN
if [ -z "$PYPI_TOKEN" ]; then
echo -e "${RED}Error: PYPI_TOKEN environment variable not set${NC}"
echo "Set it with: export PYPI_TOKEN='your-token'"
exit 1
fi
# Find package directory
PKG_DIR=""
if [ -f "pyproject.toml" ] && grep -q "name = \"$PKG_NAME\"" pyproject.toml; then
PKG_DIR="."
elif [ -d "pkg/$PKG_NAME" ] && [ -f "pkg/$PKG_NAME/pyproject.toml" ]; then
PKG_DIR="pkg/$PKG_NAME"
else
echo -e "${RED}Error: Package $PKG_NAME not found${NC}"
exit 1
fi
echo -e "${YELLOW}Package directory: $PKG_DIR${NC}"
# Get current version
VERSION=$(cd "$PKG_DIR" && python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")
echo -e "${YELLOW}Current version: $VERSION${NC}"
echo
# Clean previous builds
echo "Cleaning previous builds..."
rm -rf "$PKG_DIR/dist/" "$PKG_DIR/build/" "$PKG_DIR"/*.egg-info 2>/dev/null || true
# Build package
echo "Building package..."
(cd "$PKG_DIR" && python -m build)
# Show built files
echo "Built files:"
ls -la "$PKG_DIR/dist/"
echo
# Upload to PyPI
echo "Uploading to PyPI..."
(cd "$PKG_DIR" && python -m twine upload --username __token__ --password "$PYPI_TOKEN" dist/*)
echo
echo -e "${GREEN}====================================${NC}"
echo -e "${GREEN}$PKG_NAME $VERSION published successfully!${NC}"
echo -e "${GREEN}====================================${NC}"
echo
echo -e "${YELLOW}Install with: pip install $PKG_NAME${NC}"
echo