forward-email

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 31, 2025 License: MIT

README ΒΆ

Forward Email CLI

A comprehensive command-line interface for managing Forward Email accounts and resources through their public REST API. This CLI provides a powerful interface to manage your domains, aliases, and email operations programmatically.

Status: Production Ready βœ… | LOC: 17,151 | Tests: 100+ passing | Platform: Linux/macOS/Windows

✨ Features

  • Complete API Coverage: Full domain, alias, and email management
  • Multi-Profile Support: Development, staging, and production environments
  • Security First: OS keyring integration with secure credential storage
  • Developer Experience: Comprehensive help system and interactive operations
  • Multiple Output Formats: Table, JSON, YAML, CSV with filtering and sorting
  • Cross-Platform: Native support for Linux, macOS, and Windows
  • First-Mover Advantage: Forward Email's first official CLI tool

πŸš€ Quick Start

# Build from source
git clone https://github.com/ginsys/forward-email.git
cd forward-email
go build -o bin/forward-email ./cmd/forward-email

# Check version (optional)
./bin/forward-email version --verbose

# Set up authentication
./bin/forward-email auth login

# List your domains
./bin/forward-email domain list

# Create an alias
./bin/forward-email alias create info@example.com --domain example.com --recipients team@company.com

πŸ“‹ Core Commands

# Authentication & Profiles
forward-email auth login              # Interactive API key setup
forward-email profile create prod    # Create production profile
forward-email profile switch prod    # Switch to production profile

# Domain Management  
forward-email domain list            # List all domains
forward-email domain create example.com    # Add new domain
forward-email domain verify example.com    # DNS/SMTP verification

# Alias Operations
forward-email alias list --domain example.com
forward-email alias create info@example.com --domain example.com --recipients team@company.com
forward-email alias sync merge domain1.com domain2.com    # Sync aliases between domains

# Email Operations
forward-email email send             # Interactive email composition
forward-email email list             # View sent email history

πŸ“Š Current Status

βœ… Fully Implemented
  • Authentication: Multi-source credential management (env β†’ keyring β†’ config)
  • Profiles: Multi-environment configuration management
  • Domains: Complete CRUD operations with DNS verification
  • Aliases: Full lifecycle management with all settings
  • Email: Interactive and programmatic sending with attachments
  • Output: Multiple formats with filtering and sorting
  • Testing: 100+ test cases across all packages
πŸ”„ In Development (Phase 1.4)
  • Enhanced test coverage for email services
  • Interactive setup wizards
  • Shell completion scripts
  • Bulk operations and CSV import/export
  • Automated CI/CD pipeline

πŸ“Œ Version Policy

Current Status: Pre-release development (v0.x.x)

This project is under active development towards v1.0.0. Until then:

  • ⚠️ Breaking changes may occur in any release
  • ⚠️ No backwards compatibility guaranteed
  • ⚠️ API interfaces may change without deprecation notices
  • βœ… After v1.0.0: Semantic versioning with proper deprecation cycles

The CLI targets Forward Email API v1. While we strive for stability, please pin to specific versions in production use.

Release Process

See the Versioning & Release Plan for details on semantic versioning, tagging, and CI/CD automation: .claude/VERSIONING_RELEASE_PLAN.md.

πŸ› οΈ Development

# Install dependencies
go mod download

# Run tests
go test ./...

# Build binary
make build

# Run linter
make lint

πŸ“š Documentation

For Developers

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

πŸ—οΈ Architecture

  • Framework: Cobra CLI with Viper configuration
  • Authentication: HTTP Basic with Forward Email API
  • Storage: OS keyring integration for secure credentials
  • Testing: Comprehensive mock-based testing strategy
  • Output: Consistent formatting across all operations

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Forward Email for providing the comprehensive API
  • Cobra for the excellent CLI framework
  • The Go community for outstanding tooling and libraries

Built with ❀️ for the Forward Email community | Last Updated: 2025-08-27

Directories ΒΆ

Path Synopsis
cmd
forward-email command
Package main implements the Forward Email CLI application entry point.
Package main implements the Forward Email CLI application entry point.
internal
client
Package client provides the main client interface for Forward Email operations.
Package client provides the main client interface for Forward Email operations.
cmd
Package cmd provides the command-line interface for Forward Email operations.
Package cmd provides the command-line interface for Forward Email operations.
keyring
Package keyring provides secure credential storage and retrieval functionality.
Package keyring provides secure credential storage and retrieval functionality.
testutil
Package testutil provides testing utilities and helpers for the CLI application.
Package testutil provides testing utilities and helpers for the CLI application.
version
Package version provides build information and version details.
Package version provides build information and version details.
pkg
api
Package api provides the Forward Email REST API client and data structures.
Package api provides the Forward Email REST API client and data structures.
auth
Package auth provides authentication and authorization functionality.
Package auth provides authentication and authorization functionality.
config
Package config provides configuration management for the Forward Email CLI.
Package config provides configuration management for the Forward Email CLI.
errors
Package errors provides structured HTTP error types and handling utilities.
Package errors provides structured HTTP error types and handling utilities.
output
Package output provides formatting and display utilities for CLI output.
Package output provides formatting and display utilities for CLI output.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL