stack_naming.py•1.4 kB
"""Stack naming utilities for OpenAPI MCP Server deployment."""
import re
def normalize_stack_name(api_name: str) -> str:
"""Normalize API name to a valid CloudFormation stack name.
Rules:
- Prefix: openapi-mcp-
- Lowercase
- Alphanumeric characters and dots are preserved
- All other characters replaced with single dash
- Leading/trailing dashes removed
Args:
api_name: The API name to normalize
Returns:
Normalized stack name (e.g., "openapi-mcp-myapi-v2.0")
Examples:
>>> normalize_stack_name("PetstoreAPI")
'openapi-mcp-petstoreapi'
>>> normalize_stack_name("My API")
'openapi-mcp-my-api'
>>> normalize_stack_name("API_v2.0")
'openapi-mcp-api-v2.0'
>>> normalize_stack_name("My Test API v2.0")
'openapi-mcp-my-test-api-v2.0'
"""
# Replace any group of non-alphanumeric characters (except dots) with a single dash
sanitized_name = re.sub(r'[^a-zA-Z0-9.]+', '-', api_name)
# Remove leading/trailing dashes and convert to lowercase
sanitized_name = sanitized_name.strip('-').lower()
return f"openapi-mcp-{sanitized_name}"
if __name__ == '__main__':
import sys
if len(sys.argv) > 1:
print(normalize_stack_name(sys.argv[1]))
else:
print("Usage: python stack_naming.py <api_name>", file=sys.stderr)
sys.exit(1)