JupyShare/Justfile

164 lines
3.7 KiB
Makefile
Raw Permalink Normal View History

2025-06-17 13:06:48 +02:00
# JupyterHub Notebook Viewer - Development Commands
# Default recipe
default:
@just --list
# Set up development environment
setup:
@echo "Setting up development environment..."
mkdir -p shared notebooks templates
[ ! -f .env ] && cp .env.example .env || true
@echo "✓ Development environment ready"
# Start development server
dev:
@echo "Starting development server..."
python app.py
# Start development server with auto-reload (using nix shell)
dev-nix:
nix develop --command dev-server
# Run tests
test:
@echo "Running tests..."
python -m pytest tests/ -v || python -c "import app; print('Basic import test passed')"
# Run tests in nix environment
test-nix:
nix develop --command run-tests
# Build Docker image
docker-build:
docker build -t jupyterhub-notebook-viewer .
# Start with Docker Compose
docker-up:
docker-compose up
# Start with Docker Compose in background
docker-up-daemon:
docker-compose up -d
# Start with Docker Compose and rebuild
docker-rebuild:
docker-compose up --build
# Start with nginx proxy
docker-proxy:
docker-compose --profile with-proxy up
# Stop Docker services
docker-down:
docker-compose down
# View Docker logs
docker-logs:
docker-compose logs -f
# Clean Docker resources
docker-clean:
docker-compose down -v
docker system prune -f
# Install Python dependencies
install:
pip install -r requirements.txt
# Format code
format:
black app.py
isort app.py
# Lint code
lint:
flake8 app.py
pylint app.py
# Generate requirements.txt
freeze:
pip freeze > requirements.txt
# Create sample notebook
sample-notebook:
@mkdir -p shared
@cat > shared/sample.ipynb << 'EOF'
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sample Notebook\n\nThis is a sample Jupyter notebook."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print('Hello World!')\nimport numpy as np\nprint(f'NumPy version: {np.__version__}')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
EOF
@echo "✓ Sample notebook created in shared/sample.ipynb"
# Check environment configuration
check-env:
@echo "Environment Configuration:"
@echo "========================="
@grep -E '^[A-Z_]' .env 2>/dev/null || echo "No .env file found"
@echo ""
@echo "Current Python: $(which python)"
@echo "Flask available: $(python -c 'import flask; print(flask.__version__)' 2>/dev/null || echo 'Not installed')"
@echo "Shared directory: ${JUPYTERHUB_SHARED_DIR:-./shared}"
# Show application logs
logs:
tail -f app.log 2>/dev/null || echo "No log file found"
# Clean temporary files
clean:
rm -rf __pycache__/
rm -rf .pytest_cache/
rm -rf *.pyc
rm -rf .coverage
rm -rf htmlcov/
rm -rf dist/
rm -rf build/
rm -rf *.egg-info/
# Security scan
security:
safety check -r requirements.txt || echo "Safety not installed, skipping security scan"
bandit -r . -f json || echo "Bandit not installed, skipping security scan"
# Performance test
perf:
@echo "Running performance test..."
ab -n 100 -c 10 http://localhost:5000/ || echo "Apache Bench not available"
# Health check
health:
curl -f http://localhost:5000/ || echo "Application not responding"
# Generate documentation
docs:
@echo "Generating documentation..."
mkdir -p docs
@echo "# JupyterHub Notebook Viewer\n\nGenerated documentation\n" > docs/README.md
@echo "✓ Documentation generated in docs/"