Phase 1 Implementation - Core SDK foundation with typed APIs: ## New Components Added: - **SDK Package Structure**: `/sdk/client`, `/sdk/internal/http`, `/sdk/examples` - **Core Types**: App, AppInstance, Cloudlet with JSON marshaling - **HTTP Transport**: Resilient HTTP client with go-retryablehttp - **Auth System**: Pluggable providers (StaticToken, NoAuth) - **Client**: Configurable SDK client with retry and logging options ## API Implementation: - **App Management**: CreateApp, ShowApp, ShowApps, DeleteApp - **Error Handling**: Structured APIError with status codes and messages - **Response Parsing**: EdgeXR streaming JSON response support - **Context Support**: All APIs accept context.Context for timeouts/cancellation ## Testing & Examples: - **Unit Tests**: Comprehensive test suite with httptest mock servers - **Example App**: Complete app lifecycle demonstration in examples/deploy_app.go - **Test Coverage**: Create, show, list, delete operations with error conditions ## Build Infrastructure: - **Makefile**: Automated code generation, testing, and building - **Dependencies**: Added go-retryablehttp, testify, oapi-codegen - **Configuration**: oapi-codegen.yaml for type generation ## API Mapping: - CreateApp → POST /auth/ctrl/CreateApp - ShowApp → POST /auth/ctrl/ShowApp - DeleteApp → POST /auth/ctrl/DeleteApp Following existing prototype patterns while adding type safety, retry logic, and comprehensive error handling. Ready for Phase 2 AppInstance APIs. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
41 lines
No EOL
936 B
Makefile
41 lines
No EOL
936 B
Makefile
# ABOUTME: Build automation and code generation for EdgeXR SDK
|
|
# ABOUTME: Provides targets for generating types, testing, and building the CLI
|
|
|
|
.PHONY: generate test build clean install-tools
|
|
|
|
# Install required tools
|
|
install-tools:
|
|
go install github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest
|
|
|
|
# Generate Go types from OpenAPI spec
|
|
generate:
|
|
oapi-codegen -config oapi-codegen.yaml api/swagger.json
|
|
|
|
# Run tests
|
|
test:
|
|
go test -v ./...
|
|
|
|
# Run tests with coverage
|
|
test-coverage:
|
|
go test -v -coverprofile=coverage.out ./...
|
|
go tool cover -html=coverage.out -o coverage.html
|
|
|
|
# Build the CLI
|
|
build:
|
|
go build -o bin/edge-connect .
|
|
|
|
# Clean generated files and build artifacts
|
|
clean:
|
|
rm -f sdk/client/types_generated.go
|
|
rm -f bin/edge-connect
|
|
rm -f coverage.out coverage.html
|
|
|
|
# Lint the code
|
|
lint:
|
|
golangci-lint run
|
|
|
|
# Run all checks (generate, test, lint)
|
|
check: generate test lint
|
|
|
|
# Default target
|
|
all: check build |