UNPKG

podletjs

Version:

JavaScript port of Podlet - Generate Podman Quadlet files from Docker run commands and compose files

184 lines (138 loc) 5.39 kB
# PodletJS Roadmap ## Current Status: ✅ Feature Complete (v1.0.0) PodletJS successfully implements the core functionality of the original Podlet (Rust) with: - **Docker run command parsing** (40+ flags supported) - **Docker Compose file parsing** (multi-service with dependencies) - **Quadlet file generation** (complete systemd integration) - **Comprehensive testing** (200+ test cases) **The tool is production-ready for 90%+ of real-world use cases.** --- ## Future Enhancements #### 1. Pod Generation Support **Status**: Not implemented **Effort**: Medium **Impact**: High for multi-container deployments - [ ] `--pod` flag support for compose files - [ ] Generate `.pod` Quadlet files automatically - [ ] Pod-level port publishing (move ports from containers to pod) - [ ] Container-to-pod linking **Use Case**: Convert compose services into a single Podman pod instead of separate containers. ```yaml # Input: compose with --pod flag services: web: ports: ["8080:80"] api: ports: ["3000:3000"] # Output: # - app.pod (with both ports) # - app-web.container (linked to pod) # - app-api.container (linked to pod) ``` --- #### 2. Build Context Handling **Status**: Placeholder implementation **Effort**: Medium **Impact**: Medium for development workflows - [ ] Parse `build` sections in compose files - [ ] Generate `.build` Quadlet files - [ ] Handle build context paths and Dockerfiles - [ ] Build argument support - [ ] Multi-stage build support **Current Limitation**: Services with `build` get placeholder image names like `servicename.build`. ```yaml # Currently limited support services: app: build: context: ./app dockerfile: Dockerfile.prod args: NODE_ENV: production ``` --- #### 3. Podman Version Compatibility **Status**: Not implemented **Effort**: Low-Medium **Impact**: Medium for older Podman versions - [ ] Podman version detection/specification - [ ] Feature downgrading for older versions - [ ] Quadlet option compatibility matrix - [ ] Validation warnings for unsupported features **Use Case**: Ensure generated Quadlet files work with specific Podman versions (4.4, 4.5, 5.0, etc.). --- #### 4. CLI Tool Interface **Status**: Not implemented **Effort**: Low **Impact**: High for end-user experience - [ ] Command-line interface (like original Podlet) - [ ] File input/output options - [ ] Batch processing support - [ ] `--file`, `--unit-directory` flags - [ ] Progress reporting for large compose files **Use Case**: ```bash npx podlet-js docker run nginx:latest npx podlet-js compose docker-compose.yml --output ./quadlets/ ``` --- #### 5. Extended Compose Features **Status**: Partial/Not implemented **Effort**: Medium-High **Impact**: Low-Medium (edge cases) - [ ] **Configs** support (when Quadlet supports it) - [ ] **Secrets** support (when Quadlet supports it) - [ ] **Extension fields** (`x-*`) - [ ] **Advanced networking** (custom drivers, IPAM) - [ ] **Deploy** section (replicas, resources, placement) - [ ] **Profiles** support **Current Status**: These features are intentionally not supported as Quadlet/Podman doesn't have equivalents yet. --- #### 6. Developer Experience Improvements **Status**: Basic implementation **Effort**: Low **Impact**: Medium for developers - [ ] **TypeScript definitions** for better IDE support - [ ] **VS Code extension** for Quadlet syntax highlighting - [ ] **JSON Schema** for compose validation - [ ] **Plugin system** for custom transformations - [ ] **Debug mode** with detailed transformation logs --- #### 7. Advanced Output Options **Status**: Basic implementation **Effort**: Low-Medium **Impact**: Medium for integration - [ ] **YAML output** format (alternative to INI) - [ ] **JSON output** for programmatic use - [ ] **Kubernetes YAML** generation (like original Podlet) - [ ] **Template system** for custom output formats - [ ] **Diff mode** for comparing changes --- ### 🐛 Known Limitations & Fixes #### Minor Issues - [ ] Some docker run flags only added to `PodmanArgs` (not native Quadlet options) - [ ] Build contexts generate placeholder images instead of proper build files - [ ] Network aliases handling could be more sophisticated - [ ] Volume mount option parsing could be more robust #### Compatibility Gaps - [ ] Some advanced Podman-specific flags not supported - [ ] Compose interpolation (environment variable substitution) - [ ] Compose `include` directive - [ ] Docker Swarm specific features (by design - not applicable) --- ## Priority Ranking ### 🔥 High Priority (would significantly improve utility) 1. **CLI Tool Interface** - Makes it usable as a standalone tool 2. **Pod Generation Support** - Major feature gap from original Podlet 3. **Build Context Handling** - Important for development workflows ### 🌟 Medium Priority (nice to have) 1. **Podman Version Compatibility** - Important for enterprise use 2. **TypeScript Definitions** - Better developer experience 3. **Advanced Output Options** - Integration flexibility ### 🔮 Low Priority (future/edge cases) 1. **Extended Compose Features** - Waiting on Podman/Quadlet support 2. **Plugin System** - Over-engineering for current scope 3. **VS Code Extension** - Separate project territory --- ## Contributing Send pull a requests if you're interested in implementing any of these features.