Skip to main content

from shell to rest, webrtc, grpc API, from bash script to service using local LLM mistral:7b and cookiecutter templates

Project description

shapi

from shell to api

shapi - Shell to API Service Generator

Transform your bash scripts into production-ready APIs with REST, WebRTC, and gRPC support.

shapi - Shell to API Service Generator

Transform your bash scripts into production-ready APIs with REST, WebRTC, and gRPC support.

Features

  • 🚀 Instant API Generation: Convert any shell script into a REST API with a single command
  • 🐳 Docker Ready: Automatic Dockerfile and docker-compose.yml generation
  • 🧪 Testing Included: Generated test suites and Ansible playbooks
  • 🔄 Multiple Protocols: Support for REST, WebRTC, and gRPC
  • 📊 Health Monitoring: Built-in health checks and status endpoints
  • 🔧 Production Ready: Makefile, monitoring, and deployment configurations

Quick Start

Installation

pip install shapi

Generate API Service

# Generate complete service structure
shapi generate /path/to/your/script.sh --name my-service

# Or serve directly
shapi serve /path/to/your/script.sh --name my-service --port 8000

Generated Structure

my-service/
├── main.py              # FastAPI service
├── Dockerfile           # Container configuration
├── docker-compose.yml   # Multi-service setup
├── Makefile            # Build and deployment commands
├── requirements.txt     # Python dependencies
├── test_service.py     # Test suite
├── ansible/
│   └── test.yml        # Infrastructure tests
└── script.sh           # Your original script

Usage Examples

Basic Script Conversion

#!/bin/bash
# hello.sh
echo "Hello, $1!"

Generate the service:

shapi generate hello.sh --name greeting-service
cd greeting-service
python main.py

Access your API:

  • Health Check: GET http://localhost:8000/health
  • Documentation: GET http://localhost:8000/docs
  • Execute Script: POST http://localhost:8000/run

API Endpoints

Every generated service includes:

  • GET /health - Service health check
  • GET /info - Script information
  • POST /run - Execute script (sync/async)
  • GET /status/{task_id} - Check async task status
  • GET /docs - Interactive API documentation

Example API Request

POST /run
{
  "parameters": {
    "name": "World",
    "verbose": true
  },
  "async_execution": false
}

Docker Deployment

# Build and run with Docker
make docker-build
make docker-run

# Or use docker-compose
docker-compose up -d

Testing

# Run tests
make test

# Or directly
python -m pytest test_service.py -v

Configuration

Create a config.yaml file for advanced configuration:

service:
  name: "my-advanced-service"
  description: "Advanced shell script API"
  version: "1.0.0"
  
protocols:
  rest: true
  grpc: true
  webrtc: true
  
security:
  auth_required: false
  cors_enabled: true
  
monitoring:
  health_check_interval: 30
  metrics_enabled: true

CLI Commands

# Generate service structure
shapi generate script.sh --name service-name --output ./output

# Serve script directly
shapi serve script.sh --host 0.0.0.0 --port 8000

# Test generated service
shapi test ./generated/service-name

# Build Docker image
shapi build ./generated/service-name

Advanced Features

Async Execution

# Enable async execution for long-running scripts
response = requests.post("/run", json={
    "parameters": {"input": "data"},
    "async_execution": True
})

task_id = response.json()["task_id"]

# Check status
status = requests.get(f"/status/{task_id}")

Multiple Protocols

The generated service supports multiple communication protocols:

  • REST API: Standard HTTP endpoints
  • WebRTC: Real-time data streaming
  • gRPC: High-performance RPC calls

Production Deployment

# Using Makefile
make deploy

# Manual deployment
docker-compose up -d

Requirements

  • Python 3.8+
  • Docker (optional, for containerization)
  • Bash (for shell script execution)

Contributing

Contributions are welcome! Please see our Contributing Guidelines.

License

Apache License 2.0 - see LICENSE file for details.

Support


shapi - From shell to service in seconds! 🚀

Contributing Guidelines

CONTRIBUTING.md

"""

Contributing to shapi

We welcome contributions to shapi! This document provides guidelines for contributing.

Development Setup

  1. Clone the repository:
git clone https://github.com/wronai/shapi.git
cd shapi
  1. Create virtual environment:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install in development mode:
pip install -e .[dev]

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=shapi

# Run specific test file
pytest tests/test_core.py -v

Code Style

We use black for code formatting and flake8 for linting:

# Format code
black shapi/

# Check linting
flake8 shapi/

Submitting Changes

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass
  6. Submit a pull request

Reporting Issues

Please use the GitHub issue tracker to report bugs or request features. """

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shapi-0.2.4.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shapi-0.2.4-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file shapi-0.2.4.tar.gz.

File metadata

  • Download URL: shapi-0.2.4.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.9-300.fc42.x86_64

File hashes

Hashes for shapi-0.2.4.tar.gz
Algorithm Hash digest
SHA256 e42af27c3c7f13c11fbc52fe746d04d036bbd0d44b221bd2fff0715c9be1bd3b
MD5 cd156f339b9f973a9ea84580825a140f
BLAKE2b-256 2756739d5d29ab58f165d3d3e470a4e2c55872784a04a05cd84b253e686c0485

See more details on using hashes here.

File details

Details for the file shapi-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: shapi-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.9-300.fc42.x86_64

File hashes

Hashes for shapi-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2e310ab5f30ddf6225de6439bc197a07b355f3d73218520aad61945e51539c85
MD5 1196d72e2763cb80cf98ecacba708dfe
BLAKE2b-256 0a9ef965c98be194feadd31e73df17f9606eec91652d0f46dcc5adb539ac4d5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page