- Core library with SVG and PNG generation - CLI tool with generate and batch commands - Cross-platform path handling for Windows compatibility - Comprehensive test suite with integration tests
84 lines
2.7 KiB
Go
84 lines
2.7 KiB
Go
/*
|
|
The jdenticon command provides a command-line interface for generating Jdenticon
|
|
identicons.
|
|
|
|
It serves as a wrapper around the `jdenticon` library, allowing users to generate
|
|
icons directly from their terminal without writing any Go code. The tool supports
|
|
both single icon generation and high-performance batch processing with concurrent
|
|
workers.
|
|
|
|
# Usage
|
|
|
|
Single icon generation:
|
|
|
|
jdenticon [flags] <input-string>
|
|
|
|
Batch processing:
|
|
|
|
jdenticon batch [flags] <input-file>
|
|
|
|
# Single Icon Examples
|
|
|
|
1. Generate a default SVG icon and save it to a file:
|
|
|
|
jdenticon "my-awesome-user" > avatar.svg
|
|
|
|
2. Generate a 128x128 PNG icon with a custom output path:
|
|
|
|
jdenticon --size=128 --format=png --output=avatar.png "my-awesome-user"
|
|
|
|
3. Generate an SVG with custom styling:
|
|
|
|
jdenticon --hue=0.5 --saturation=0.8 --padding=0.1 "user@example.com" > avatar.svg
|
|
|
|
# Batch Processing Examples
|
|
|
|
1. Generate icons for multiple users (one per line in input file):
|
|
|
|
jdenticon batch users.txt --output-dir ./avatars
|
|
|
|
2. High-performance concurrent batch processing:
|
|
|
|
jdenticon batch large-list.txt --output-dir ./avatars --concurrency 8 --format png
|
|
|
|
3. Sequential processing (disable concurrency):
|
|
|
|
jdenticon batch users.txt --output-dir ./avatars --concurrency 1
|
|
|
|
# Available Flags
|
|
|
|
## Global Flags (apply to both single and batch generation):
|
|
- --size: Icon size in pixels (default: 200)
|
|
- --format: Output format, either "svg" or "png" (default: "svg")
|
|
- --padding: Padding as percentage between 0.0 and 0.5 (default: 0.08)
|
|
- --color-saturation: Saturation for colored shapes between 0.0 and 1.0 (default: 0.5)
|
|
- --grayscale-saturation: Saturation for grayscale shapes between 0.0 and 1.0 (default: 0.0)
|
|
- --bg-color: Background color in hex format (e.g., "#ffffff")
|
|
- --hue-restrictions: Restrict hues to specific degrees (0-360)
|
|
- --color-lightness: Color lightness range as min,max (default: "0.4,0.8")
|
|
- --grayscale-lightness: Grayscale lightness range as min,max (default: "0.3,0.9")
|
|
|
|
## Single Icon Flags:
|
|
- --output: Output file path (default: stdout)
|
|
|
|
## Batch Processing Flags:
|
|
- --output-dir: Output directory for generated identicons (required)
|
|
- --concurrency: Number of concurrent workers (default: CPU count)
|
|
|
|
# Performance Features
|
|
|
|
The batch command uses a high-performance worker pool pattern for concurrent
|
|
processing. Key features include:
|
|
|
|
- Concurrent generation with configurable worker count
|
|
- Graceful shutdown on interrupt signals (Ctrl+C)
|
|
- Real-time progress tracking with statistics
|
|
- Up to 3-4x performance improvement vs sequential processing
|
|
- Thread-safe operation with no race conditions
|
|
|
|
This tool serves as both a practical utility and a reference implementation
|
|
for consuming the `jdenticon` library with proper error handling and
|
|
configuration management.
|
|
*/
|
|
package main
|