# Bash Argument Parser Generator A self-contained web application for interactively building bash argument parsing code. Zero external dependencies - single binary deployment. ## Features - **Zero Dependencies**: Single Go binary with embedded assets - **Real-time Help Preview**: See generated help output as you type - **Clean Separation**: Frontend assets organized in separate directories - **Auto-expanding Rows**: New input rows appear automatically - **Dark Terminal Theme**: Professional terminal-style interface - **Copy to Clipboard**: One-click script copying ## Architecture ``` argparse-builder/ ├── main.go # Go server with embedded FS ├── static/ │ ├── css/ │ │ └── style.css # Styling │ └── js/ │ └── app.js # Frontend logic └── templates/ └── index.html # HTML template ``` All files are embedded using `//go:embed` directive, resulting in a single binary. ## Build ```bash go build -o argparse-builder ``` ## Run ```bash ./argparse-builder ``` Server starts on port 8080. Open in your browser. Demo available at: ## Usage 1. **Add Custom Header** (optional): Set a greeting or description 2. **Define Arguments**: - Parameters: `-v --verbose` (flag syntax) - Variable Name: `verbose` (internal variable) - Help Text: Description shown in help output 3. **Real-time Preview**: Help output updates as you type 4. **Generate**: Click "Generate BASH" to create the script 5. **Copy**: Use the copy button to get the generated code ## Example Output For inputs: - Header: "My Script v1.0" - Arguments: `-v --verbose`, `verbose`, "Enable verbose output" Generates a complete bash script with: - Usage function with formatted help - Argument parsing with case statements - Variable initialization - Unknown option handling - `-h/--help` support ## Technical Details - **Language**: Go 1.21+ - **Embedding**: `embed.FS` for asset bundling - **Binary Size**: ~9MB (includes runtime and all assets) - **HTTP Server**: Standard library net/http - **Frontend**: Vanilla JavaScript (no frameworks) ## Performance - Instant startup (no compilation) - Low memory footprint - Efficient static file serving from memory - No external network calls ## Security Considerations - Input sanitization on server side - No shell execution - Template-based HTML generation - CORS headers not set (localhost only by default) ## Run in container ### File Structure ``` . ├── assets/ │ ├── Containerfile # OCI production (scratch, ~7MB) │ └── Containerfile.alpine # Development (Alpine, ~15MB) │ ├── docs/ │ ├── container.md # Primary Podman guide ⭐ │ ├── docker/ │ │ ├── DOCKER_GUIDE.md # Complete Docker reference │ │ ├── Dockerfile # Docker production │ │ ├── Dockerfile.alpine # Docker development │ │ ├── docker-compose.yml │ │ ├── docker.md # Docker vs Podman │ │ └── README.md │ └── README.md # Documentation hub │ ├── Makefile.container # Podman build targets ├── podman-compose.yml # OCI compose with SELinux ├── CONTAINER_QUICKREF.md # One-page reference ├── PODMAN_SUMMARY.md # This summary └── k8s-deployment.yaml # Kubernetes manifest (TODO) ``` ### Usage ```bash # Podman (primary) podman build -f assets/Containerfile -t argparse-builder . podman run -d -p 8080:8080 --security-opt label=type:container_t argparse-builder # Docker (compatibility) docker build -f assets/Containerfile -t argparse-builder . docker run -d -p 8080:8080 argparse-builder ``` ``` ``` ``` ```